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);
        }
Пример #2
0
        /// <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;
        }
Пример #3
0
        /// <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]);
                }
            }
        }