Пример #1
0
        public void FillClientStatus(MqttClientStatus clientStatus)
        {
            clientStatus.ClientId = ClientId;
            clientStatus.Endpoint = _endpoint;

            clientStatus.ProtocolVersion = _channelAdapter.PacketFormatterAdapter.ProtocolVersion;
            clientStatus.BytesSent       = _channelAdapter.BytesSent;
            clientStatus.BytesReceived   = _channelAdapter.BytesReceived;

            Statistics.FillClientStatus(clientStatus);
        }
Пример #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.ConnectedTimestamp                      = _connectedTimestamp;
            status.LastPacketReceivedTimestamp             = LastPacketReceivedTimestamp;
            status.LastNonKeepAlivePacketReceivedTimestamp = _lastNonKeepAlivePacketReceivedTimestamp;

            status.BytesSent     = _channelAdapter.BytesSent;
            status.BytesReceived = _channelAdapter.BytesReceived;
        }
        public void FillClientStatus(MqttClientStatus clientStatus)
        {
            if (clientStatus == null)
            {
                throw new ArgumentNullException(nameof(clientStatus));
            }

            clientStatus.ConnectedTimestamp = _connectedTimestamp;

            clientStatus.ReceivedPacketsCount = Interlocked.Read(ref _receivedPacketsCount);
            clientStatus.SentPacketsCount     = Interlocked.Read(ref _sentPacketsCount);

            clientStatus.ReceivedApplicationMessagesCount = Interlocked.Read(ref _receivedApplicationMessagesCount);
            clientStatus.SentApplicationMessagesCount     = Interlocked.Read(ref _sentApplicationMessagesCount);

            clientStatus.LastPacketReceivedTimestamp = _lastPacketReceivedTimestamp;
            clientStatus.LastPacketSentTimestamp     = _lastPacketSentTimestamp;

            clientStatus.LastNonKeepAlivePacketReceivedTimestamp = _lastNonKeepAlivePacketReceivedTimestamp;
        }
Пример #4
0
        public Task <IList <IMqttClientStatus> > GetClientStatusAsync()
        {
            var result = new List <IMqttClientStatus>();

            lock (_clientConnections)
            {
                foreach (var connection in _clientConnections.Values)
                {
                    var clientStatus = new MqttClientStatus(connection);
                    connection.FillClientStatus(clientStatus);

                    var sessionStatus = new MqttSessionStatus(connection.Session, this);
                    connection.Session.FillSessionStatus(sessionStatus);
                    clientStatus.Session = sessionStatus;

                    result.Add(clientStatus);
                }
            }

            return(Task.FromResult((IList <IMqttClientStatus>)result));
        }
Пример #5
0
        public ServerMQTT(IMqttServer server, string internalClientId)
        {
            _server    = server;
            servername = internalClientId;

            _server.UseClientConnectedHandler(async e =>
            {
                MqttClientStatus clientStatus = (MqttClientStatus)(await _server.GetClientStatusAsync()).FirstOrDefault(o => o.ClientId == e.ClientId);

                Console.WriteLine($"Connectd {e.ClientId}");
                Console.WriteLine($"{clientStatus.Endpoint}");

                await clientStatus.Session.ClearPendingApplicationMessagesAsync();

                ReceiveMsg?.Invoke(this, new GatewayStarted(e.ClientId, clientStatus.Endpoint));
            });

            _server.UseClientDisconnectedHandler(e =>
            {
                ReceiveMsg?.Invoke(this, new GatewayDisconnected(e.ClientId));
            });

            _server.UseApplicationMessageReceivedHandler(msg =>
            {
                Console.WriteLine($"Topic {msg.ClientId} {msg.ApplicationMessage.Topic} payload {msg.ApplicationMessage.ConvertPayloadToString()}");

                if (msg.ClientId == _server.Options.ClientId || msg.ClientId == servername)
                {
                    return;
                }

                var msgContext = ToMessage(msg.ApplicationMessage.Topic, msg.ApplicationMessage.ConvertPayloadToString());

                if (msgContext != null)
                {
                    ReceiveMsg?.Invoke(this, msgContext);
                }
            });
        }
Пример #6
0
 public void FillStatus(MqttClientStatus status)
 {
     throw new NotSupportedException();
 }