示例#1
0
        private Request <TResponse> CreateRequest <TResponse>(object body, MessageSendingFlags flags, CancellationToken cancellationToken)
        {
            var request = new Request <TResponse>(
                CreateMessage(body, flags.HasFlag(MessageSendingFlags.ContentRelated)),
                flags,
                SendRequestAsync,
                cancellationToken);

            _requestsManager.Add(request);
            return(request);
        }
示例#2
0
        public async Task SendAsync(object requestBody, MessageSendingFlags flags, TimeSpan timeout, CancellationToken cancellationToken)
        {
            byte[] messageBytes = EncodeMessage(CreateMessage(requestBody, flags.HasFlag(MessageSendingFlags.ContentRelated)), flags.HasFlag(MessageSendingFlags.Encrypted));

            var timeoutCancellationTokenSource = new CancellationTokenSource(timeout);

            using (
                CancellationTokenSource cts = CancellationTokenSource.CreateLinkedTokenSource(
                    timeoutCancellationTokenSource.Token,
                    cancellationToken,
                    _connectionCancellationToken))
            {
                await SendAsync(messageBytes, cts.Token);
            }
        }