Example #1
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);
        }
Example #2
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);
        }
Example #3
0
        public Task EmptyMessage_WithInt_CanDeserialize()
        {
            var offset  = 0;
            var result  = 0u;
            var success = DataDecoder.TryReadVarint32(new byte[] { 0xFF, 0xFF, 0x00 }, ref offset, ref result);

            success.Should().BeTrue();

            return(RunCode(@"
syntax = ""proto3"";

message MessageWithInt
{
	int32 value = 1;
}
", $@"
var payload = new byte[] {{ 0b00001_000, 0xFF, 0xFF, 0x00 }};
var success = ZenserdesProtobuf.TryDeserialize<MessageWithInt>(new ReadOnlyMemory<byte>(payload), out var instance);

success.Should().BeTrue();
instance.Value.Should().Be({(int)result});
"));
        }