public FlowControlledData(DefaultHttp2ConnectionEncoder encoder, IHttp2Stream stream, IByteBuffer buf, int padding, bool endOfStream, IPromise promise, IChannel channel) : base(encoder, stream, padding, endOfStream, promise) { _queue = new CoalescingBufferQueue(channel); _queue.Add(buf, promise); _dataSize = _queue.ReadableBytes(); }
public void Merge() { writeQueue.Add(cat, catPromise); CoalescingBufferQueue otherQueue = new CoalescingBufferQueue(channel); otherQueue.Add(mouse, NewFutureListener()); otherQueue.CopyTo(writeQueue); AssertQueueSize(8, false); IPromise aggregatePromise = NewPromise(); Assert.Equal("catmouse", Dequeue(8, aggregatePromise)); AssertQueueSize(0, true); Assert.False(catPromise.IsSuccess); Assert.False(mouseDone); aggregatePromise.Complete(); Assert.True(catPromise.IsSuccess); Assert.True(mouseSuccess); Assert.Equal(0, cat.ReferenceCount); Assert.Equal(0, mouse.ReferenceCount); }
public void AddFirstPromiseRetained() { writeQueue.Add(cat, catPromise); AssertQueueSize(3, false); writeQueue.Add(mouse, NewFutureListener()); AssertQueueSize(8, false); IPromise aggregatePromise = NewPromise(); Assert.Equal("catmous", Dequeue(7, aggregatePromise)); IByteBuffer remainder = Unpooled.WrappedBuffer(Encoding.ASCII.GetBytes("mous")); writeQueue.AddFirst(remainder, aggregatePromise); IPromise aggregatePromise2 = NewPromise(); Assert.Equal("mouse", Dequeue(5, aggregatePromise2)); aggregatePromise2.Complete(); Assert.True(catPromise.IsSuccess); Assert.True(mouseSuccess); Assert.Equal(0, cat.ReferenceCount); Assert.Equal(0, mouse.ReferenceCount); }