Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
 public bool TryDeserialize <TBufferWriter>(ref MemoryDataStreamer <TBufferWriter> dataStreamer, ref IWantToUseNameof instance) where TBufferWriter : IBufferWriter <byte> => throw new NotImplementedException();