public Logic(OutputStreamSourceStage stage) : base(stage.Shape) { _stage = stage; _downstreamCallback = GetAsyncCallback((Either <ByteString, Exception> result) => { if (result.IsLeft) { OnPush(result.Value as ByteString); } else { FailStage(result.Value as Exception); } }); _upstreamCallback = GetAsyncCallback <Tuple <IAdapterToStageMessage, TaskCompletionSource <NotUsed> > >(OnAsyncMessage); _pullTask = new OnPullRunnable(_downstreamCallback, stage._dataQueue); SetHandler(_stage._out, onPull: OnPull, onDownstreamFinish: OnDownstreamFinish); }
public Logic(OutputStreamSourceStage stage, BlockingCollection <ByteString> dataQueue, AtomicReference <IDownstreamStatus> downstreamStatus, string dispatcherId) : base(stage.Shape) { _stage = stage; _dataQueue = dataQueue; _downstreamStatus = downstreamStatus; _dispatcherId = dispatcherId; var downstreamCallback = GetAsyncCallback <Either <ByteString, Exception> >(result => { if (result.IsLeft) { OnPush(result.Value as ByteString); } else { FailStage(result.Value as Exception); } }); _upstreamCallback = GetAsyncCallback <(IAdapterToStageMessage, TaskCompletionSource <NotUsed>)>(OnAsyncMessage); _pullTask = new OnPullRunnable(downstreamCallback, dataQueue, _cancellation.Token); SetHandler(_stage._out, this); }