private void Setup() { // Arrange string firstImagePath = "C:\\Users\\Alessandro\\Pictures\\viaggio Erasmus - 5 - D\\DSC_0004.NEF"; if (File.Exists("C:\\Users\\Alessandro\\Pictures\\viaggio Erasmus -5 - D\\DSC_0004.xmp")) { File.Delete("C:\\Users\\Alessandro\\Pictures\\viaggio Erasmus -5 - D\\DSC_0004.xmp"); } proxy = new AdapterProxy(firstImagePath); }
/// <summary> /// <para>Initializes an instance of the <see cref="MessageEngine"/> class.</para> /// </summary> public MessageEngine() { _adapterProxy = new AdapterProxy(); _sendPipelineDictionary = new Dictionary <AdapterBase, ComponentPipeline>(); _receivePipelineDictionary = new Dictionary <AdapterBase, ComponentPipeline>(); _subscriptionManager = new SubscriptionManager(); _adapterCollection = new List <AdapterBase>(); _correlationDictionary = new Dictionary <string, CorrelationContext>(); _correlationSyncLock = new ReaderWriterLock(); _traceSource = new TraceSource("MessageEngine"); _blockThreadsWaitEvent = new ManualResetEvent(false); LockMillisecondsTimeout = (ConfigurationManager.GetSection(MessagingSection.SectionKey) as MessagingSection).DeadlockTimeout; }
/// <summary> /// Transmits a message. /// </summary> /// <param name="msg">The message to transmit.</param> public void TransmitMessage(MultiPartMessage msg) { if (_isDisposed) { throw new ObjectDisposedException(this.GetType().Name); } if (!_isRunning) { throw new InvalidOperationException("Message Engine is not running."); } CheckMetadata(msg); AdapterBase adapter = AdapterProxy.GetAdapterById(msg.Metadata.ReadAsString("SendAdapterId")); ComponentPipeline pipeline = _sendPipelineDictionary[adapter]; Collection <MultiPartMessage> resultCollection = pipeline.Execute(msg); if (resultCollection != null) { //Check if message should be part of a transaction if (TransactionScope.Current != null) { if (adapter is ITransactional) { ITransactional transactionalAdapter = adapter as ITransactional; AdapterTransaction transaction = transactionalAdapter.StartTransaction(resultCollection[0]); transaction.State = TransactionState.Started; TransactionScope.Current.EnlistTransaction(transaction); transactionalAdapter.TransmitMessage(resultCollection[0], transaction); } else { throw new AdapterException("Adapter: \"" + adapter.AdapterId + "\" is not transactional."); } } else { adapter.TransmitMessage(resultCollection[0]); } } }