public void TestReadFlowManagement()
        {
            ReadCounter       counter = new ReadCounter();
            IByteBufferHolder first   = Message("first");
            IByteBufferHolder chunk   = Message("chunk");
            IByteBufferHolder last    = Message("last");

            var             agg      = new MockMessageAggregator(first, chunk, last);
            EmbeddedChannel embedded = new EmbeddedChannel(counter, agg);

            embedded.Configuration.IsAutoRead = false;

            Assert.False(embedded.WriteInbound(first));
            Assert.False(embedded.WriteInbound(chunk));
            Assert.True(embedded.WriteInbound(last));

            Assert.Equal(3, counter.Value); // 2 reads issued from MockMessageAggregator
                                            // 1 read issued from EmbeddedChannel constructor

            IByteBufferHolder all = new DefaultByteBufferHolder(Unpooled.WrappedBuffer(
                                                                    (IByteBuffer)first.Content.Retain(), (IByteBuffer)chunk.Content.Retain(), (IByteBuffer)last.Content.Retain()));
            var output = embedded.ReadInbound <IByteBufferHolder>();

            Assert.Equal(all, output);
            Assert.True(all.Release() && output.Release());
            Assert.False(embedded.Finish());
        }
Beispiel #2
0
        public void EvalSelect(RCRunner runner, RCClosure closure, RCSymbol left, RCCube right)
        {
            RCLong      args    = new RCLong(0, 0);
            ReadCounter counter = new ReadCounter(right);
            ReadSpec    spec    = new ReadSpec(counter, left, args, 0, false, false, true, false);
            RCCube      result  = right.Read(spec, counter, true, right.Count);

            runner.Yield(closure, result);
        }
Beispiel #3
0
            // internal RCCube _blackboard = new RCCube (new RCArray<string> ("G", "S"));

            internal void Clear()
            {
                // g gets updated...
                _g += _blackboard.Count;
                // blackboard cube is dumped.
                _blackboard = new RCCube(new RCArray <string> ("G", "E", "S"));
                // Uncomment this to disable the E column I think
                // I want it to be G or E in the blackboard, not both
                // _blackboard = new RCCube (new RCArray<string> ("G", "S"));
                // waiters keep on waiting.
                // But what about _counter?
                // Shouldn't we just reset it?
                _counter = new ReadCounter();
            }