private Task <KafkaDataPayload> EnqueueWriteTask(KafkaDataPayload payload, CancellationToken cancellationToken) { var sendTask = new SocketPayloadSendTask(payload, cancellationToken, _log); _sendTaskQueue.Add(sendTask); //StatisticsTracker.QueueNetworkWrite(_endpoint, payload); return(sendTask.Tcp.Task); }
private async Task ProcessSentTasksAsync(NetworkStream netStream, SocketPayloadSendTask sendTask) { if (sendTask == null) { return; } using (sendTask) { var failed = false; var sw = Stopwatch.StartNew(); try { sw.Restart(); if (UseStatisticsTracker()) { StatisticsTracker.IncrementGauge(StatisticGauge.ActiveWriteOperation); } if (OnWriteToSocketAttempt != null) { OnWriteToSocketAttempt(sendTask.Payload); } _log.DebugFormat("Sending data for CorrelationId:{0} Connection:{1}", sendTask.Payload.CorrelationId, Endpoint); await netStream.WriteAsync(sendTask.Payload.Buffer, 0, sendTask.Payload.Buffer.Length).ConfigureAwait(false); _log.DebugFormat("Data sent to CorrelationId:{0} Connection:{1}", sendTask.Payload.CorrelationId, Endpoint); sendTask.Tcp.TrySetResult(sendTask.Payload); } catch (Exception ex) { failed = true; if (_disposeToken.IsCancellationRequested) { var exception = new ObjectDisposedException("Object is disposing."); sendTask.Tcp.TrySetException(exception); throw exception; } sendTask.Tcp.TrySetException(ex); throw; } finally { if (UseStatisticsTracker()) { StatisticsTracker.DecrementGauge(StatisticGauge.ActiveWriteOperation); StatisticsTracker.CompleteNetworkWrite(sendTask.Payload, sw.ElapsedMilliseconds, failed); } } } }
private async Task ProcessSentTasksAsync(NetworkStream netStream, SocketPayloadSendTask sendTask) { if (sendTask == null) return; using (sendTask) { var failed = false; var sw = Stopwatch.StartNew(); try { sw.Restart(); if (UseStatisticsTracker()) { StatisticsTracker.IncrementGauge(StatisticGauge.ActiveWriteOperation); } if (OnWriteToSocketAttempt != null) OnWriteToSocketAttempt(sendTask.Payload); _log.DebugFormat("Sending data for CorrelationId:{0} Connection:{1}", sendTask.Payload.CorrelationId, Endpoint); await netStream.WriteAsync(sendTask.Payload.Buffer, 0, sendTask.Payload.Buffer.Length, _disposeToken.Token).ConfigureAwait(false); _log.DebugFormat("Data sent to CorrelationId:{0} Connection:{1}", sendTask.Payload.CorrelationId, Endpoint); sendTask.Tcp.TrySetResult(sendTask.Payload); } catch (Exception ex) { failed = true; var wrappedException = WrappedException(ex); sendTask.Tcp.TrySetException(wrappedException); throw; } finally { if (UseStatisticsTracker()) { StatisticsTracker.DecrementGauge(StatisticGauge.ActiveWriteOperation); StatisticsTracker.CompleteNetworkWrite(sendTask.Payload, sw.ElapsedMilliseconds, failed); } } } }
private Task<KafkaDataPayload> EnqueueWriteTask(KafkaDataPayload payload, CancellationToken cancellationToken) { var sendTask = new SocketPayloadSendTask(payload, cancellationToken); _sendTaskQueue.Add(sendTask); if (UseStatisticsTracker()) { StatisticsTracker.QueueNetworkWrite(_endpoint, payload); } return sendTask.Tcp.Task; }
private async Task ProcessSentTasksAsync(NetworkStream netStream, SocketPayloadSendTask sendTask) { if (sendTask == null) return; using (sendTask) { var failed = false; var sw = Stopwatch.StartNew(); try { sw.Restart(); StatisticsTracker.IncrementGauge(StatisticGauge.ActiveWriteOperation); if (OnWriteToSocketAttempt != null) OnWriteToSocketAttempt(sendTask.Payload); await netStream.WriteAsync(sendTask.Payload.Buffer, 0, sendTask.Payload.Buffer.Length).ConfigureAwait(false); sendTask.Tcp.TrySetResult(sendTask.Payload); } catch (Exception ex) { failed = true; if (_disposeToken.IsCancellationRequested) { var exception = new ObjectDisposedException("Object is disposing."); sendTask.Tcp.TrySetException(exception); throw exception; } sendTask.Tcp.TrySetException(ex); throw; } finally { StatisticsTracker.DecrementGauge(StatisticGauge.ActiveWriteOperation); StatisticsTracker.CompleteNetworkWrite(sendTask.Payload, sw.ElapsedMilliseconds, failed); } } }