public SerializedPayload NewSubscribeTopic(string topicName)
        {
            var payload = new SubscribeTopic
            {
                Id        = Guid.NewGuid(),
                TopicName = topicName
            };

            return(_serializer.Serialize(payload));
        }
예제 #2
0
        //MQTT接收信息
        private void OnMessageReceived(MqttApplicationMessageReceivedEventArgs e)
        {
            if (!SubscribeTopic.Equals(e.ApplicationMessage.Topic))
            {
                return;
            }

            //支持中文
            var msg = MessageEncoding.GetString(e.ApplicationMessage.Payload);

            _msgAction?.Invoke(msg);
        }
        public void Serialization_SubscribeTopic_MatchResults()
        {
            var subscribeQueue = new SubscribeTopic
            {
                Id        = Guid.NewGuid(),
                TopicName = RandomGenerator.GenerateString(10)
            };

            var b = _serializer.Serialize(subscribeQueue);

            var result = _deserializer.ToSubscribeTopic(b.DataWithoutSize);

            Assert.Equal(subscribeQueue.Id, result.Id);
            Assert.Equal(subscribeQueue.TopicName, result.TopicName);
        }
        public SerializedPayload Serialize(SubscribeTopic subscribeTopic)
        {
            var binaryWriter = ObjectPool.Shared.Rent <BinaryProtocolWriter>();

            try
            {
                return(binaryWriter
                       .WriteType(PayloadType.SubscribeTopic)
                       .WriteId(subscribeTopic.Id)
                       .WriteStr(subscribeTopic.TopicName)
                       .ToSerializedPayload());
            }
            finally
            {
                ObjectPool.Shared.Return(binaryWriter);
            }
        }
예제 #5
0
        private void OnSubscribeTopic(Guid clientId, SubscribeTopic subscribeTopic)
        {
            _clientStore.TryGet(clientId, out var client);

            if (client is null)
            {
                Log.Warning($"The client for id {clientId} was not found");
                SendReceivePayloadError(clientId, subscribeTopic.Id, "Internal error");
                return;
            }

            if (_topicStore.TryGetValue(subscribeTopic.TopicName, out var topic))
            {
                topic.ClientSubscribed(client);
                SendReceivedPayloadOk(clientId, subscribeTopic.Id);
            }
            else
            {
                SendReceivePayloadError(clientId, subscribeTopic.Id, "Queue not found");
            }
        }