public async Task <bool> SendDataToSocket(object data) { if (Disconnected) { return(false); } try { var dataToSocket = _tcpSerializer.Serialize(data); var stream = _socket.GetStream(); await stream.WriteAsync(dataToSocket, 0, dataToSocket.Length); _socketStatistic.Sent += dataToSocket.Length; _socketStatistic.LastSendTime = DateTime.UtcNow; await stream.FlushAsync(); return(true); } catch (Exception ex) { await Disconnect(); _log.Add("SendDataToSocket Error. Id: " + Id + "; Msg: " + ex.Message); return(false); } }
public void SendDataToSocket(TSocketData data) { if (!Connected) { return; } var dataToSend = TcpSerializer.Serialize(data); _deliveryPublisherSubscriber.Publish(dataToSend); }
public async Task <bool> SendDataToSocket(object data, CancellationToken cancellationToken) { if (Disconnected) { return(false); } try { var dataToSocket = _tcpSerializer.Serialize(data); var stream = _socket.GetStream(); try { await _streamWriteLock.WaitAsync(cancellationToken); await stream.WriteAsync(dataToSocket, 0, dataToSocket.Length, cancellationToken); // Concurrent write is not supported await stream.FlushAsync(cancellationToken); _socketStatistic.Sent += dataToSocket.Length; _socketStatistic.LastSendTime = DateTime.UtcNow; } finally { _streamWriteLock.Release(); } return(true); } catch (OperationCanceledException) { return(false); } catch (Exception ex) { await Disconnect(ex); _log?.Error(ex, context: new { connectionId = Id }); _legacyLog?.Add("SendDataToSocket Error. Id: " + Id + "; Msg: " + ex.Message); TelemetryHelper.SubmitException(ex); return(false); } }