Exemplo n.º 1
0
        void TestDiscardMarks(int capacity)
        {
            IByteBuffer buf = this.NewBuffer(capacity);

            buf.WriteShort(1);

            buf.SkipBytes(1);

            buf.MarkReaderIndex();
            buf.MarkWriterIndex();
            Assert.True(buf.Release());

            IByteBuffer buf2 = this.NewBuffer(capacity);

            Assert.Same(UnwrapIfNeeded(buf), UnwrapIfNeeded(buf2));

            buf2.WriteShort(1);

            buf2.ResetReaderIndex();
            buf2.ResetWriterIndex();

            Assert.Equal(0, buf2.ReaderIndex);
            Assert.Equal(0, buf2.WriterIndex);
            Assert.True(buf2.Release());
        }
Exemplo n.º 2
0
        public void ReaderIndexAndMarks()
        {
            IByteBuffer wrapped = Unpooled.Buffer(16);

            try
            {
                wrapped.SetWriterIndex(14);
                wrapped.SetReaderIndex(2);
                wrapped.MarkWriterIndex();
                wrapped.MarkReaderIndex();
                IByteBuffer slice = wrapped.Slice(4, 4);
                Assert.Equal(0, slice.ReaderIndex);
                Assert.Equal(4, slice.WriterIndex);

                slice.SetReaderIndex(slice.ReaderIndex + 1);
                slice.ResetReaderIndex();
                Assert.Equal(0, slice.ReaderIndex);

                slice.SetWriterIndex(slice.WriterIndex - 1);
                slice.ResetWriterIndex();
                Assert.Equal(0, slice.WriterIndex);
            }
            finally
            {
                wrapped.Release();
            }
        }
Exemplo n.º 3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="buffer"></param>
        /// <param name="value"></param>
        public static void WriteString(this IByteBuffer buffer, string value)
        {
            var indx = buffer.WriterIndex;

            buffer.WriteInt(0);
            buffer.WriteString(value, Encoding.Unicode);
            int len = buffer.WriterIndex - indx - 4;

            buffer.MarkWriterIndex();
            buffer.SetWriterIndex(indx);
            buffer.WriteInt(len);
            buffer.ResetWriterIndex();
        }
 protected override void Encode(IChannelHandlerContext context, Jt808PackageInfo message, IByteBuffer output)
 {
     if (message != null)
     {
         try
         {
             output.MarkWriterIndex();
             output.WriteBytes(Unpooled.WrappedBuffer(packageConverter.Serialize(message)));
         }
         catch (Exception e)
         {
             output.ResetWriterIndex();
             if (logger.IsEnabled(LogLevel.Error))
             {
                 logger.LogError(e, $"消息 {message.Header.MessageId:X2} 编码发生异常");
             }
         }
     }
 }
        public void DiscardReadBytes3()
        {
            IByteBuffer a = Unpooled.WrappedBuffer(new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 });
            IByteBuffer b = Unpooled.WrappedBuffer(
                Unpooled.WrappedBuffer(new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }, 0, 5),
                Unpooled.WrappedBuffer(new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }, 5, 5));

            a.SkipBytes(6);
            a.MarkReaderIndex();
            b.SkipBytes(6);
            b.MarkReaderIndex();
            Assert.Equal(a.ReaderIndex, b.ReaderIndex);
            a.SetReaderIndex(a.ReaderIndex - 1);
            b.SetReaderIndex(b.ReaderIndex - 1);
            Assert.Equal(a.ReaderIndex, b.ReaderIndex);
            a.SetWriterIndex(a.WriterIndex - 1);
            a.MarkWriterIndex();
            b.SetWriterIndex(b.WriterIndex - 1);
            b.MarkWriterIndex();
            Assert.Equal(a.WriterIndex, b.WriterIndex);
            a.SetWriterIndex(a.WriterIndex + 1);
            b.SetWriterIndex(b.WriterIndex + 1);
            Assert.Equal(a.WriterIndex, b.WriterIndex);
            Assert.True(ByteBufferUtil.Equals(a, b));
            // now discard
            a.DiscardReadBytes();
            b.DiscardReadBytes();
            Assert.Equal(a.ReaderIndex, b.ReaderIndex);
            Assert.Equal(a.WriterIndex, b.WriterIndex);
            Assert.True(ByteBufferUtil.Equals(a, b));
            a.ResetReaderIndex();
            b.ResetReaderIndex();
            Assert.Equal(a.ReaderIndex, b.ReaderIndex);
            a.ResetWriterIndex();
            b.ResetWriterIndex();
            Assert.Equal(a.WriterIndex, b.WriterIndex);
            Assert.True(ByteBufferUtil.Equals(a, b));

            a.Release();
            b.Release();
        }
Exemplo n.º 6
0
 public IByteBuffer MarkWriterIndex()
 {
     _ = Buf.MarkWriterIndex();
     return(this);
 }
Exemplo n.º 7
0
 public void MarkWriterPosition()
 {
     EnsureNotClosed();
     _ = _buffer.MarkWriterIndex();
 }