public void PingAsync()
 {
     var msgBuilder = new MqttPingRequestMessageBuilder();
     SendMessageAsync(msgBuilder);
 }
        public void PingToFailedBrokerCallsNetworkErrorEventAfterTimeout()
        {
            var are = new AutoResetEvent(false);
            var eventData = "Test data";
            var moqSocket = new MoqSocket
            {
                DoNotRespond = true
            };

            MqttProtocolInformation.Settings.NetworkTimeout = 5; // 5 seconds
            var client = new MqttClientProtocol(new LogCompositor(), moqSocket);
            var bldr = new MqttPingRequestMessageBuilder();

            client.SendMessageComplete += (sender, args) => Assert.Fail();
            client.NetworkError += (sender, args) => are.Set();

            client.SendMessageAsync(bldr, eventData, null);

            if (!are.WaitOne(MqttProtocolInformation.Settings.NetworkTimeout * 1000 + 5000))
            {
                Assert.Fail("NetworkError event not fired for PingRequest.");
            }
        }
 public IAsyncAction PingAsync()
 {
     var msgBuilder = new MqttPingRequestMessageBuilder();
     return SendMessageAsync(msgBuilder);
 }
        public void PingCallsSendMessageCompleteEventWithEventData()
        {
            var are = new AutoResetEvent(false);
            var eventData = "Test data";
            var moqSocket = new MoqSocket();
            var client = new MqttClientProtocol(new LogCompositor(), moqSocket);
            var bldr = new MqttPingRequestMessageBuilder();

            client.SendMessageComplete += (sender, args) =>
            {
                Assert.AreSame(eventData, args.EventData);
                Assert.IsTrue(moqSocket.SentMessages.Contains(MessageType.PingReq));
                are.Set();
            };

            client.SendMessageAsync(bldr, eventData, null);

            if (!are.WaitOne(5000))
            {
                Assert.Fail("SendMessageComplete event not fired for PingRequest.");
            }
        }
 private void KeepAliveTimerOnTimeout(object sender, object data)
 {
     Logger.LogMessage("Protocol", LogLevel.Verbose, "Keep alive timer sending PingReq. KeepAliveTimer instance=" + _keepAliveTimer.GetHashCode());
     var msgBuilder = new MqttPingRequestMessageBuilder();
     SendMessageAsync(msgBuilder, null, _clientUid);
 }