private void OnDeclareQueue(Guid clientId, TopicDeclare topicDeclare) { _logger.LogInformation($"declaring topic: {topicDeclare.Name}"); // if queue exists if (_topicStore.TryGetValue(topicDeclare.Name, out var queue)) { // if queue route match if (queue.Route == topicDeclare.Route) { SendReceivedPayloadOk(clientId, topicDeclare.Id); } else { SendReceivePayloadError(clientId, topicDeclare.Id, "Queue name already exists"); } return; } // create new queue _topicStore.Add(topicDeclare.Name, topicDeclare.Route); SendReceivedPayloadOk(clientId, topicDeclare.Id); }
public SerializedPayload NewDeclareTopic(string name, string route) { var payload = new TopicDeclare { Id = Guid.NewGuid(), Name = name, Route = route }; return(_serializer.Serialize(payload)); }
public void Serialization_TopicDeclare_MatchResults() { var queue = new TopicDeclare { Id = Guid.NewGuid(), Name = RandomGenerator.GenerateString(10), Route = RandomGenerator.GenerateString(10) }; var b = _serializer.Serialize(queue); var result = _deserializer.ToTopicDeclare(b.DataWithoutSize); Assert.Equal(queue.Id, result.Id); Assert.Equal(queue.Name, result.Name); Assert.Equal(queue.Route, result.Route); }
public SerializedPayload Serialize(TopicDeclare topicDeclare) { var binaryWriter = ObjectPool.Shared.Rent <BinaryProtocolWriter>(); try { return(binaryWriter .WriteType(PayloadType.TopicDeclare) .WriteId(topicDeclare.Id) .WriteStr(topicDeclare.Name) .WriteStr(topicDeclare.Route) .ToSerializedPayload()); } finally { ObjectPool.Shared.Return(binaryWriter); } }