public Task <IList <IMqttClientStatus> > GetClientStatusAsync() { var result = new List <IMqttClientStatus>(); foreach (var connection in _connections.Values) { var clientStatus = new MqttClientStatus(connection); connection.FillStatus(clientStatus); var sessionStatus = new MqttSessionStatus(connection.Session, this); connection.Session.FillStatus(sessionStatus); clientStatus.Session = sessionStatus; result.Add(clientStatus); } return(Task.FromResult((IList <IMqttClientStatus>)result)); }
public void FillStatus(MqttClientStatus status) { status.ClientId = ClientId; status.Endpoint = _endpoint; status.ProtocolVersion = _channelAdapter.PacketFormatterAdapter.ProtocolVersion; status.ReceivedApplicationMessagesCount = Interlocked.Read(ref _receivedApplicationMessagesCount); status.SentApplicationMessagesCount = Interlocked.Read(ref _sentApplicationMessagesCount); status.ReceivedPacketsCount = Interlocked.Read(ref _receivedPacketsCount); status.SentPacketsCount = Interlocked.Read(ref _sentPacketsCount); status.LastPacketReceivedTimestamp = _lastPacketReceivedTimestamp; status.LastNonKeepAlivePacketReceivedTimestamp = _lastNonKeepAlivePacketReceivedTimestamp; status.BytesSent = _channelAdapter.BytesSent; status.BytesReceived = _channelAdapter.BytesReceived; }
public Task <IList <MqttClientStatus> > GetClientStatusesAsync() { var result = new List <MqttClientStatus>(); lock (_clients) { foreach (var connection in _clients.Values) { var clientStatus = new MqttClientStatus(connection) { Session = new MqttSessionStatus(connection.Session) }; result.Add(clientStatus); } } return(Task.FromResult((IList <MqttClientStatus>)result)); }