/// <summary> /// Sets the ipc internal headers. /// </summary> /// <param name="messageToSend">The message to send.</param> /// <param name="responseId">The response identifier.</param> private void SetIpcInternalHeaders(IMessage messageToSend, IResponseId responseId) { messageToSend.SetInternalHeader(Configuration.HeaderNames.StandardHeaders.RpcTimeout, _rpcTimeoutFactory.Create(responseId.TimeOut)); messageToSend.SetInternalHeader(Configuration.HeaderNames.StandardHeaders.RpcResponseId, responseId.MessageId.Id.Value.ToString()); }
/// <summary> /// Sends the specified message. /// </summary> /// <param name="message">The message.</param> /// <param name="responseId">The response identifier.</param> /// <returns></returns> public async Task <IQueueOutputMessage> SendAsync(T message, IResponseId responseId) { ThrowIfDisposed(); var data = new AdditionalMessageData(); return(await SendAsync(message, responseId, data).ConfigureAwait(false)); }
/// <summary> /// Sends the specified message. /// </summary> /// <param name="message">The message.</param> /// <param name="responseId">The response identifier.</param> /// <param name="inputData">The additional message data.</param> /// <returns></returns> public async Task <IQueueOutputMessage> SendAsync(T message, IResponseId responseId, IAdditionalMessageData inputData) { ThrowIfDisposed(); Guard.NotNull(() => message, message); Guard.NotNull(() => responseId, responseId); var data = SetupForSend(message, responseId, inputData); //send the message to the transport return(await _sendMessages.SendAsync(data.Item1, data.Item2).ConfigureAwait(false)); }
/// <summary> /// Sends the specified message. /// </summary> /// <param name="message">The message.</param> /// <param name="responseId">The response identifier.</param> /// <param name="inputData"></param> /// <returns></returns> public IQueueOutputMessage Send(T message, IResponseId responseId, IAdditionalMessageData inputData = null) { ThrowIfDisposed(); Guard.NotNull(() => message, message); Guard.NotNull(() => responseId, responseId); var data = SetupForSend(message, responseId, inputData); //send the message to the transport return(_sendMessages.Send(data.Item1, data.Item2)); }
private Tuple <IMessage, IAdditionalMessageData> SetupForSend(T message, IResponseId responseId, IAdditionalMessageData inputData) { var data = inputData ?? new AdditionalMessageData(); if (!Configuration.IsReadOnly) { Configuration.SetReadOnly(); } var additionalHeaders = _generateMessageHeaders.HeaderSetup(data); //construct our wrapper around the data to send var messageToSend = _messageFactory.Create(message, additionalHeaders); _addStandardMessageHeaders.AddHeaders(messageToSend, data); SetIpcInternalHeaders(messageToSend, responseId); return(new Tuple <IMessage, IAdditionalMessageData>(messageToSend, data)); }