Example #1
0
        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));
        }
Example #2
0
        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));
        }