public SerializedPayload NewSubscribeTopic(string topicName) { var payload = new SubscribeTopic { Id = Guid.NewGuid(), TopicName = topicName }; return(_serializer.Serialize(payload)); }
//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); } }
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"); } }