/// <summary> /// Sends a copy of the specified <see cref="TransportMessageToSend"/> using the underlying implementation of <see cref="ISendMessages"/> /// with an encrypted message body and additional headers /// </summary> public void Send(string destinationQueueName, TransportMessageToSend message, ITransactionContext context) { var clone = new TransportMessageToSend { Headers = message.Headers.Clone(), Label = message.Label, Body = message.Body, }; if (compressionHelper != null) { var compresssionResult = compressionHelper.Compress(clone.Body); if (compresssionResult.Item1) { clone.Headers[Headers.Compression] = Headers.CompressionTypes.GZip; } clone.Body = compresssionResult.Item2; } if (encryptionHelper != null) { var iv = encryptionHelper.GenerateNewIv(); clone.Body = encryptionHelper.Encrypt(clone.Body, iv); clone.Headers[Headers.Encrypted] = null; clone.Headers[Headers.EncryptionSalt] = iv; } innerSendMessages.Send(destinationQueueName, clone, context); }
/// <summary> /// Sends a copy of the specified <see cref="TransportMessageToSend"/> using the underlying implementation of <see cref="ISendMessages"/> /// with an encrypted message body and additional headers /// </summary> public void Send(string destinationQueueName, TransportMessageToSend message, ITransactionContext context) { var iv = helper.GenerateNewIv(); var transportMessageToSend = new TransportMessageToSend { Headers = message.Headers.Clone(), Label = message.Label, Body = helper.Encrypt(message.Body, iv), }; transportMessageToSend.Headers[Headers.Encrypted] = null; transportMessageToSend.Headers[Headers.EncryptionSalt] = iv; innerSendMessages.Send(destinationQueueName, transportMessageToSend, context); }