Ejemplo n.º 1
0
        bool DecodeInline(IByteBuffer byteBuffer, ICollection <object> output)
        {
            Contract.Requires(byteBuffer != null);
            Contract.Requires(output != null);

            IByteBuffer buffer = ReadLine(byteBuffer);

            if (buffer == null)
            {
                if (byteBuffer.ReadableBytes > this.maximumInlineMessageLength)
                {
                    throw new RedisCodecException(
                              $"Length: {byteBuffer.ReadableBytes} (expected: <= {this.maximumInlineMessageLength})");
                }

                return(false);
            }

            IRedisMessage message = this.ReadInlineMessage(this.messageType, buffer);

            output.Add(message);
            this.ResetDecoder();

            return(true);
        }
Ejemplo n.º 2
0
        private async Task PublishAsync(string channel, IRedisMessage message)
        {
            byte[] payload;
            using (var stream = new LimitArrayPoolWriteStream())
                using (var writer = JsonUtils.CreateJsonTextWriter(new StreamWriter(stream)))
                {
                    _serializer.Serialize(writer, message);
                    writer.Flush();
                    payload = stream.ToArray();
                }

            _logger.PublishToChannel(channel);
            await _bus.PublishAsync(channel, payload);
        }
Ejemplo n.º 3
0
        public void EncodeEmptyArray()
        {
            var           channel = new EmbeddedChannel(new RedisEncoder());
            IRedisMessage message = ArrayRedisMessage.Empty;

            Assert.True(channel.WriteOutbound(message));

            IByteBuffer written = ReadAll(channel);

            byte[] output   = written.Bytes();
            byte[] expected = "*0\r\n".Bytes();

            Assert.Equal(expected.Length, output.Length);
            Assert.True(output.SequenceEqual(expected));
            written.Release();
        }