Example #1
0
        public async Task UnSubscribeAsync(NATSMsgSubscriptionConfig subscriptionConfig)
        {
            await _policy.ExecuteAsync(async (content) =>
            {
                await ConnectAsync();

                var UnSubscribePacket = new UnSubscribePacket(subscriptionConfig.SubscribeId);

                await _embed_channel.WriteAndFlushAsync(UnSubscribePacket);
            }, new Dictionary <string, object>() { { "hld", "UnSubscribeAsync" } });
        }
Example #2
0
        protected static void EncodeUnsubscribeMessage(IByteBufferAllocator bufferAllocator, UnSubscribePacket packet, List <object> output)
        {
            byte[] IdBytes           = EncodeStringInUtf8(packet.Id);
            byte[] WaitMessagesBytes = EncodeStringInUtf8(packet.WaitMessages?.ToString() ?? string.Empty);

            int variablePartSize = IdBytes.Length + CRLF_BYTES.Length;

            if (WaitMessagesBytes.Length > 0)
            {
                variablePartSize += SPACES_BYTES.Length + WaitMessagesBytes.Length;
            }

            int fixedHeaderBufferSize = UNSUB_BYTES.Length + SPACES_BYTES.Length;

            IByteBuffer buf = null;

            try
            {
                buf = bufferAllocator.Buffer(fixedHeaderBufferSize + variablePartSize);
                buf.WriteBytes(UNSUB_BYTES);
                buf.WriteBytes(SPACES_BYTES);
                buf.WriteBytes(IdBytes);
                if (WaitMessagesBytes.Length > 0)
                {
                    buf.WriteBytes(SPACES_BYTES);
                    buf.WriteBytes(WaitMessagesBytes);
                }
                buf.WriteBytes(CRLF_BYTES);

                output.Add(buf);
                buf = null;
            }
            finally
            {
                buf?.SafeRelease();
            }
        }