示例#1
0
            public async Task <Metrics> PipelineLatency(PipelineMetadata metadata)
            {
                var latency = DateTime.Now.Subtract(metadata.Timestamp);
                await _stats.Timing((long)latency.TotalMilliseconds, nameof(StatMetrics.Time.PipelineLatency)).ConfigureAwait(false);

                return(this);
            }
示例#2
0
        private async Task SendBatchedDataAsync(CancellationToken cancellationToken, PipelineMetadata metadata)
        {
            var task = _next?.PushAsync(cancellationToken, _batch.ToImmutableArray(), metadata);

            _batch.Clear();
            _bufferedCount = 0;
            if (task != null)
            {
                await task.ConfigureAwait(false);
            }
        }
示例#3
0
        public void StopProcessTime(MyResultObj resultObj, string filterName)
        {
            var metaData = new PipelineMetadata
            {
                Filter            = filterName,
                FilterDeltaTime   = DateTime.Now.Subtract(ProcessStartTime),
                InboundDataCount  = InboundCount,
                OutboundDataCount = resultObj.OutboundData?.Count() ?? resultObj.InboundData.Count()
            };

            resultObj.PipelineMetadata.Add(metaData);
        }
示例#4
0
        public async Task PushAsync(CancellationToken cancellationToken, TEntity input, PipelineMetadata metadata)
        {
            _latestMetadata = metadata;
            var batchedTask = Task.CompletedTask;

            if (_bufferedCount + 1 > _batchSize)
            {
                batchedTask = SendBatchedDataAsync(cancellationToken, metadata);
            }
            _bufferedCount++;
            _batch.Add(input);
            await Task.WhenAll(batchedTask, Task.CompletedTask).ConfigureAwait(false);
        }
示例#5
0
 public async Task PushAsync(CancellationToken cancellationToken, TInput input, PipelineMetadata metadata)
 {
     if (_following != null)
     {
         await _following.PushAsync(cancellationToken, input, metadata).ConfigureAwait(false);
     }
 }
示例#6
0
 public async Task PushAsync(CancellationToken cancellationToken, TInput input, PipelineMetadata metadata)
 {
     await _action(cancellationToken, input, metadata).ConfigureAwait(false);
 }
示例#7
0
        protected override async Task PushToPipeAsync(CancellationToken cancellationToken, TConsumerValue entity, PipelineMetadata pipelineMetadata, AbstractPipe <TConsumerValue> pipe)
        {
            await pipe.Head.PushAsync(cancellationToken, entity, pipelineMetadata).ConfigureAwait(false);

            await _stats.Metric().PipelineLatency(pipelineMetadata).ConfigureAwait(false);
        }
示例#8
0
 public Task Send(CancellationToken cancellationToken, JObject json, PipelineMetadata metadata)
 {
     return(_producer.ProduceAsync("key", json));
 }
示例#9
0
 public Task <JObject> AddProperty(CancellationToken cancellationToken, JObject json, PipelineMetadata metadata)
 {
     json.Add(new JProperty("testProperty", 1));
     return(Task.FromResult(json));
 }
示例#10
0
        public async Task PushAsync(CancellationToken cancellationToken, TInput input, PipelineMetadata metadata)
        {
            if (_positive == null && _negative == null)
            {
                throw new InvalidOperationException("Decision block should have at least one branch");
            }

            var condition = await _condition(cancellationToken, input, metadata).ConfigureAwait(false);

            var task = condition
                ? _positive?.PushAsync(cancellationToken, input, metadata)
                : _negative?.PushAsync(cancellationToken, input, metadata);

            if (task != null)
            {
                await task.ConfigureAwait(false);
            }
        }
示例#11
0
 public async Task PushAsync(CancellationToken cancellationToken, TEntity input, PipelineMetadata metadata)
 {
     if (_targets == null)
     {
         return;
     }
     var tasks = _targets.Select(target => target.PushAsync(cancellationToken, input, metadata)).ToArray();
     await Task.WhenAll(tasks).ConfigureAwait(false);
 }