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()); }
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(); } }
/// <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(); }
public IByteBuffer MarkWriterIndex() { _ = Buf.MarkWriterIndex(); return(this); }
public void MarkWriterPosition() { EnsureNotClosed(); _ = _buffer.MarkWriterIndex(); }