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); }
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); } }