Task WriteAsync(object msg, bool flush) { FABHandlerContext next = this.FindContextOutbound(); object m = this.pipeline.Touch(msg, next); IEventExecutor nextExecutor = next.Executor; if (nextExecutor.InEventLoop) { return(flush ? next.InvokeWriteAndFlushAsync(m) : next.InvokeWriteAsync(m)); } else { var promise = new TaskCompletionSource(); AbstractWriteTask task = flush ? WriteAndFlushTask.NewInstance(next, m, promise) : (AbstractWriteTask)WriteTask.NewInstance(next, m, promise); SafeExecuteOutbound(nextExecutor, task, promise, msg); return(promise.Task); } }
protected virtual Task WriteAsync(FABHandlerContext ctx, object msg) { return(ctx.InvokeWriteAsync(msg)); }