void ScheduleTimeout(IChannelHandlerContext context, Task future) { var task = new WriteTimeoutTask(context, future, this); var wrappedTask = new LinkedListNode <WriteTimeoutTask>(task); task.ScheduledTask = context.Executor.Schedule(task, timeout); if (!task.ScheduledTask.Completion.IsCompleted) { this.AddWriteTimeoutTask(wrappedTask); } }
void ScheduleTimeout(IChannelHandlerContext context, Task future) { // Schedule a timeout. var task = new WriteTimeoutTask(context, future, this); task.ScheduledTask = context.Executor.Schedule(task, _timeout); if (!task.ScheduledTask.Completion.IsCompleted) { AddWriteTimeoutTask(task); // Cancel the scheduled timeout if the flush promise is complete. _ = future.ContinueWith(WriteTimeoutTask.OperationCompleteAction, task, TaskContinuationOptions.ExecuteSynchronously); } }
void RemoveWriteTimeoutTask(WriteTimeoutTask task) { _ = tasks.Remove(task); }
void AddWriteTimeoutTask(WriteTimeoutTask task) { _ = tasks.AddLast(task); }
void RemoveWriteTimeoutTask(WriteTimeoutTask task) { this.tasks.Remove(task); }
void AddWriteTimeoutTask(WriteTimeoutTask task) { this.tasks.AddLast(task); }