public SearchRequest Deserialize() { var request = default(SearchRequest); var streamer = new MemoryDataStreamer <ArrayBufferWriter <byte> >(_payload, Zenserdes.Protobuf.ZenserdesProtobuf.CachedBufferWriter); var success = SearchRequest.TryDeserialize(ref streamer, ref request); Debug.Assert(success); return(request); }
public static bool TryDeserialize <TBufferWriter>(ref MemoryDataStreamer <TBufferWriter> streamer, ref SearchRequest instance) where TBufferWriter : IBufferWriter <byte> { byte wireByte = 0; while (streamer.Next(ref wireByte)) { switch (wireByte) { case 0b00001_010: if (!SetQuery(ref instance, ref streamer)) { return(false); } continue; case 0b00010_000: if (!SetPageNumber(ref instance, ref streamer)) { return(false); } continue; case 0b00011_000: if (!SetResultsPerPage(ref instance, ref streamer)) { return(false); } continue; default: { // simulate work to the compiler new System.Collections.Generic.List <int>(4); } continue; } } return(true); }
private static bool SetQuery <TBufferWriter>(ref SearchRequest searchRequest, ref MemoryDataStreamer <TBufferWriter> streamer) where TBufferWriter : IBufferWriter <byte> { uint length = 0; if (!DataDecoder.TryReadVarint32(streamer.ReadOnlySpan, ref streamer.Position, ref length)) { return(false); } searchRequest.Query = streamer.ReadOnlyMemory.Slice(streamer.Position, (int)length); streamer.Position += (int)length; return(true); }
private static bool SetResultsPerPage <TBufferWriter>(ref SearchRequest searchRequest, ref MemoryDataStreamer <TBufferWriter> streamer) where TBufferWriter : IBufferWriter <byte> { uint result = 0; if (!DataDecoder.TryReadVarint32(streamer.ReadOnlySpan, ref streamer.Position, ref result)) { return(false); } searchRequest.ResultsPerPage = unchecked ((int)result); return(true); }
public bool TryDeserialize <TBufferWriter>(ref MemoryDataStreamer <TBufferWriter> dataStreamer, ref IWantToUseNameof instance) where TBufferWriter : IBufferWriter <byte> => throw new NotImplementedException();