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

            return(_serializer.Serialize(payload));
        }
        public void Serialization_UnsubscribeTopic_MatchResults()
        {
            var unsubscribeQueue = new UnsubscribeTopic
            {
                Id        = Guid.NewGuid(),
                TopicName = RandomGenerator.GenerateString(10)
            };

            var b = _serializer.Serialize(unsubscribeQueue);

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

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

            try
            {
                return(binaryWriter
                       .WriteType(PayloadType.UnsubscribeTopic)
                       .WriteId(unSubscribeTopic.Id)
                       .WriteStr(unSubscribeTopic.TopicName)
                       .ToSerializedPayload());
            }
            finally
            {
                ObjectPool.Shared.Return(binaryWriter);
            }
        }
Пример #4
0
        private void OnUnsubscribeTopic(Guid clientId, UnsubscribeTopic unsubscribeTopic)
        {
            _clientStore.TryGet(clientId, out var client);

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

            if (_topicStore.TryGetValue(unsubscribeTopic.TopicName, out var queue))
            {
                queue.ClientUnsubscribed(client);
                SendReceivedPayloadOk(clientId, unsubscribeTopic.Id);
            }
            else
            {
                SendReceivePayloadError(clientId, unsubscribeTopic.Id, "Queue not found");
            }
        }