コード例 #1
0
 public void RemoveSubscriptionClient(SubscriptionClient subClient)
 {
     lock (_subscriptionClients)
     {
         _subscriptionClients.Remove(subClient);
     }
 }
コード例 #2
0
 public void AddSubscriptionClient(SubscriptionClient subClient)
 {
     lock (_subscriptionClients)
     {
         _subscriptionClients.Add(subClient);
     }
 }
コード例 #3
0
        public void OnMessageCallbackGetsCalledWithWildcardTopics1()
        {
            var are = new AutoResetEvent(false);
            var ip = "1.1.1.1";
            var port = 1883;
            var eventData = "Test data";
            string connectionKey = "123";
            var moqSocket = new MoqSocket();
            var protocol = new MqttClientProtocol(new LogCompositor(), moqSocket);
            var bldr = new MqttConnectMessageBuilder
            {
                ClientId = "UnitTest"
            };

            protocol.ConnectAsync(bldr, ip, port, SocketEncryption.None, eventData);

            var subscriptionItem = new SubscriptionItem
            {
                TopicName = "a/b/+",
                QualityOfService = QualityOfService.AtMostOnce
            };
            var subClient = new SubscriptionClient(protocol, subscriptionItem, connectionKey);

            subClient.OnMessage(msg =>
            {
                Assert.IsNotNull(msg);
                Assert.IsTrue(msg.MessageType == MessageType.Publish);
                Assert.AreEqual(msg.Payload[0], 0x00);
                Assert.AreEqual(msg.Payload[1], 0x01);
                Assert.AreEqual(msg.Payload[2], 0x02);
                are.Set();
            });

            moqSocket.ReceiveMessage(new MqttPublishMessageBuilder
            {
                TopicName = "a/b/c",
                Payload = new byte[] { 0x00, 0x01, 0x02 }
            });

            if (!are.WaitOne(5000))
            {
                Assert.Fail("OnMessage callback not called.");
            }
        }
コード例 #4
0
        public void OnMessageCallbackDoesNotGetCalledAfterClose()
        {
            var are = new AutoResetEvent(false);
            var ip = "1.1.1.1";
            var port = 1883;
            var eventData = "Test data";
            string connectionKey = "123";
            var moqSocket = new MoqSocket();
            var protocol = new MqttClientProtocol(new LogCompositor(), moqSocket);
            var bldr = new MqttConnectMessageBuilder
            {
                ClientId = "UnitTest"
            };

            protocol.ConnectAsync(bldr, ip, port, SocketEncryption.None, eventData);

            var subscriptionItem = new SubscriptionItem
            {
                TopicName = "a/b/c",
                QualityOfService = QualityOfService.AtMostOnce
            };
            var subClient = new SubscriptionClient(protocol, subscriptionItem, connectionKey);

            subClient.OnMessage(msg =>
            {
                Assert.Fail("OnMessage callback was called after Close call.");
                are.Set();
            });
            
            subClient.Close();

            moqSocket.ReceiveMessage(new MqttPublishMessageBuilder
            {
                TopicName = "a/b/c",
                Payload = new byte[] { 0x00, 0x01, 0x02 }
            });

            are.WaitOne(3000);
        }
コード例 #5
0
        public void IsClosedCorrectlyReflectsStateOfObject()
        {
            var ip = "1.1.1.1";
            var port = 1883;
            var eventData = "Test data";
            string connectionKey = "123";
            var moqSocket = new MoqSocket();
            var protocol = new MqttClientProtocol(new LogCompositor(), moqSocket);
            var bldr = new MqttConnectMessageBuilder
            {
                ClientId = "UnitTest"
            };

            protocol.ConnectAsync(bldr, ip, port, SocketEncryption.None, eventData);

            var subscriptionItem = new SubscriptionItem
            {
                TopicName = "a/b/+",
                QualityOfService = QualityOfService.AtMostOnce
            };

            var subClient = new SubscriptionClient(protocol, subscriptionItem, connectionKey);

            Assert.IsTrue(subClient.IsClosed);

            subClient.OnMessage(msg =>
            {
                Assert.IsNotNull(msg);
                Assert.IsTrue(msg.MessageType == MessageType.Publish);
            });

            Assert.IsFalse(subClient.IsClosed);
            subClient.Close();
            Assert.IsTrue(subClient.IsClosed);
        }
コード例 #6
0
 /// <summary>
 /// Create a subscriber client on the specified topic.
 /// </summary>
 /// <param name="subscription"></param>
 /// <returns></returns>
 public SubscriptionClient CreateSubscription(SubscriptionItem subscription)
 {
     var subClient = new SubscriptionClient(_mqtt, subscription, _clientUid);
     return subClient;
 }
コード例 #7
0
ファイル: MqttWinRTClient.cs プロジェクト: xhowar/KittyHawkMQ
        /// <summary>
        /// Create a subscriber client on the specified topic.
        /// </summary>
        /// <param name="subscription"></param>
        /// <returns></returns>
        public SubscriptionClient CreateSubscription(SubscriptionItem subscription)
        {
            var subClient = new SubscriptionClient(_mqtt, subscription, _clientUid);

            return(subClient);
        }