public async Task <CopySchedulerResult <CopyFileResult> > ScheduleOutboundPullAsync(OutboundPullCopy request) { return(await _outboundPullGate.GatedOperationAsync(async pair => { var(timeWaiting, currentCount) = pair; var queueLength = _outboundPullGate.ConcurrencyLimit - currentCount; var summary = new CopySchedulingSummary( QueueWait: timeWaiting, PriorityQueueLength: queueLength, Priority: 0, OverallQueueLength: queueLength); return new CopySchedulerResult <CopyFileResult>(await request.PerformOperationAsync(new OutboundPullArguments(request.Context, summary))); }, request.Context.Token, _configuration.OutboundPullConfiguration.WaitTimeout, onTimeout : _ => CopySchedulerResult <CopyFileResult> .TimeOut())); }
public Task<CopySchedulerResult<T>> ScheduleOutboundPushAsync<T>(OutboundPushCopy<T> request) where T : class { return _outboundPushGate.GatedOperationAsync(async pair => { var (timeWaiting, currentCount) = pair; var queueLength = _outboundPushGate.ConcurrencyLimit - currentCount; var summary = new CopySchedulingSummary( QueueWait: timeWaiting, PriorityQueueLength: queueLength, Priority: 0, OverallQueueLength: queueLength); return new CopySchedulerResult<T>(await request.PerformOperationAsync(new OutboundPushArguments(request.Context, summary))); }, request.Context.Token, _configuration.OutboundPushConfiguration.WaitTimeout, onTimeout: _ => CopySchedulerResult<T>.TimeOut(_configuration.OutboundPushConfiguration.WaitTimeout)); }