コード例 #1
0
        /// <summary>
        /// Creates the <see cref="IRequestMediator{TRequest, TResponse}"/> instance.
        /// </summary>
        /// <returns>The <see cref="IRequestMediator{TRequest, TResponse}"/> instance.</returns>
        public IRequestMediator <TRequest, TResponse> CreateMqMediator()
        {
            if (_cached == null)
            {
                int sendSize = 0;
                SortedList <ServicingOrder, List <IRequestHandler <TRequest, TResponse> > > executionSendSequence = new SortedList <ServicingOrder, List <IRequestHandler <TRequest, TResponse> > >(_handlers.Count());
                foreach (var item in _handlers)
                {
                    sendSize++;
                    if (executionSendSequence.ContainsKey(item.OrderInTheGroup))
                    {
                        executionSendSequence[item.OrderInTheGroup].Add(item);
                    }
                    else
                    {
                        executionSendSequence[item.OrderInTheGroup] = new List <IRequestHandler <TRequest, TResponse> >()
                        {
                            item
                        };
                    }
                }
                _cached = new MqSendMediatorProvider(executionSendSequence, sendSize);
            }

            return(_cached);
        }
コード例 #2
0
 /// <summary>
 /// Initialize instance with specifics configuration.
 /// </summary>
 /// <param name="factory">The mediator factory.</param>
 public RequestMediatorManager(IRequestMediatorFactory <TRequest, TResponse> factory)
 {
     _mediator = factory.CreateMqMediator();
 }