internal async Task <MessagingContext> CreateAS4Message(EncodeMessageInfo encodeInfo) { var pmode = await AssembleSendingPMode(encodeInfo); if (pmode == null) { return(null); } var as4Message = await AssembleAS4MessageAsync(pmode, encodeInfo.Payloads); var context = SetupMessagingContext(as4Message, pmode); return(await StepProcessor.ExecuteStepsAsync(context, StepRegistry.GetOutboundProcessingStepConfiguration())); }
private static async Task <DecodeResult> PerformInboundProcessing(MessagingContext context) { var processingResult = await StepProcessor.ExecuteStepsAsync(context, StepRegistry.GetInboundProcessingConfiguration()); if (processingResult.AS4Message == null) { throw new InvalidOperationException("An error occured while decoding the AS4 Message", processingResult.Exception); } if (processingResult.AS4Message.IsUserMessage) { try { var deliverPayloads = RetrievePayloadsFromMessage(processingResult.AS4Message); var receivedMessageId = processingResult.EbmsMessageId; var receiptResult = await StepProcessor.ExecuteStepsAsync(processingResult, StepRegistry.GetReceiptCreationConfiguration()); if (receiptResult.AS4Message == null) { throw new InvalidOperationException("An unexpected error occured while creating the AS4 Receipt message", receiptResult.Exception); } return(DecodeResult.CreateWithReceipt(deliverPayloads.ToArray(), Serializer.ToByteArray(receiptResult.AS4Message), receivedMessageId, receiptResult.AS4Message.GetPrimaryMessageId())); } finally { processingResult.Dispose(); } } if (!(processingResult.AS4Message.FirstSignalMessage is Error)) { throw new InvalidProgramException("An AS4 Error Message was expected."); } // What we have now, must an error. return(DecodeResult.CreateWithError(Serializer.ToByteArray(processingResult.AS4Message), ((Error)processingResult.AS4Message.FirstSignalMessage), processingResult.AS4Message.FirstSignalMessage.RefToMessageId, processingResult.AS4Message.FirstSignalMessage.MessageId)); }