예제 #1
0
        public void SetUp()
        {
            databusForSiteA = new InMemoryDataBus();
            databusForSiteB = new InMemoryDataBus();

            inMemoryReceiver = new InMemoryReceiver();

            var builder = MockRepository.GenerateStub <IBuilder>();

            var channelFactory = new ChannelFactory();

            channelFactory.RegisterReceiver(typeof(HttpChannelReceiver));

            channelFactory.RegisterSender(typeof(HttpChannelSender));


            var channelManager = MockRepository.GenerateStub <IMangageReceiveChannels>();

            channelManager.Stub(x => x.GetReceiveChannels()).Return(new[] { new ReceiveChannel()
                                                                            {
                                                                                Address = HttpAddressForSiteB,
                                                                                Type    = "http",
                                                                                NumberOfWorkerThreads = 1
                                                                            } });
            channelManager.Stub(x => x.GetDefaultChannel()).Return(defaultChannelForSiteA);


            builder.Stub(x => x.Build <IdempotentChannelForwarder>()).Return(new IdempotentChannelForwarder(channelFactory)
            {
                DataBus = databusForSiteA
            });

            builder.Stub(x => x.Build <IReceiveMessagesFromSites>()).Return(new IdempotentChannelReceiver(channelFactory, new InMemoryPersistence())
            {
                DataBus = databusForSiteB
            });


            builder.Stub(x => x.BuildAll <IRouteMessagesToSites>()).Return(new[] { new KeyPrefixConventionSiteRouter() });

            messageSender   = new FakeMessageSender();
            receiverInSiteB = new GatewayReceiver(channelManager, new DefaultEndpointRouter
            {
                MainInputAddress = EndpointAddressForSiteB
            }, builder, messageSender);

            dispatcherInSiteA = new GatewaySender(builder,
                                                  channelManager,
                                                  MockRepository.GenerateStub <IMessageNotifier>(),
                                                  MockRepository.GenerateStub <ISendMessages>(),
                                                  new FakeDispatcherSettings
            {
                Receiver       = inMemoryReceiver,
                FailureManager = MockRepository.GenerateStub <IManageMessageFailures>()
            });

            dispatcherInSiteA.Start(GatewayAddressForSiteA);
            receiverInSiteB.Start(GatewayAddressForSiteB);
        }
예제 #2
0
파일: Gateway.cs 프로젝트: tcunning/orleans
 internal void Start()
 {
     acceptor.Start();
     for (int i = 0; i < senders.Length; i++)
     {
         int capture = i;
         senders[capture] = new Lazy <GatewaySender>(() =>
         {
             var sender = new GatewaySender("GatewaySiloSender_" + capture, this);
             sender.Start();
             return(sender);
         }, LazyThreadSafetyMode.ExecutionAndPublication);
     }
     dropper.Start();
 }
예제 #3
0
파일: Gateway.cs 프로젝트: wanglong/orleans
 internal void Start(ClientObserverRegistrar clientRegistrar)
 {
     this.clientRegistrar = clientRegistrar;
     this.clientRegistrar.SetGateway(this);
     acceptor.Start();
     for (int i = 0; i < senders.Length; i++)
     {
         int capture = i;
         senders[capture] = new Lazy <GatewaySender>(() =>
         {
             var sender = new GatewaySender("GatewaySiloSender_" + capture, this);
             sender.Start();
             return(sender);
         }, LazyThreadSafetyMode.ExecutionAndPublication);
     }
     dropper.Start();
 }
예제 #4
0
 public Gateway(
     MessageCenter msgCtr,
     ILocalSiloDetails siloDetails,
     MessageFactory messageFactory,
     ILoggerFactory loggerFactory,
     IOptions <SiloMessagingOptions> options)
 {
     this.messagingOptions = options.Value;
     this.loggerFactory    = loggerFactory;
     this.logger           = this.loggerFactory.CreateLogger <Gateway>();
     dropper                  = new GatewayClientCleanupAgent(this, loggerFactory, messagingOptions.ClientDropTimeout);
     clients                  = new ConcurrentDictionary <ClientGrainId, ClientState>();
     clientConnections        = new ConcurrentDictionary <GatewayInboundConnection, ClientState>();
     clientsReplyRoutingCache = new ClientsReplyRoutingCache(messagingOptions.ResponseTimeout);
     this.gatewayAddress      = siloDetails.GatewayAddress;
     this.sender              = new GatewaySender(this, msgCtr, messageFactory, loggerFactory.CreateLogger <GatewaySender>());
     lockable                 = new object();
 }
예제 #5
0
        public void SetUp()
        {
            databusForSiteA = new InMemoryDataBus();
            databusForSiteB = new InMemoryDataBus();

            inMemoryReceiver = new InMemoryReceiver();

            var builder = MockRepository.GenerateStub<IBuilder>();

            var channelFactory = new ChannelFactory();

            channelFactory.RegisterReceiver(typeof(HttpChannelReceiver));

            channelFactory.RegisterSender(typeof(HttpChannelSender));

            var channelManager = MockRepository.GenerateStub<IMangageReceiveChannels>();
            channelManager.Stub(x => x.GetActiveChannels()).Return(new[] {new Channel
                                                                              {
                                                                                  Address = HttpAddressForSiteB,
                                                                                  Type = "http"
                                                                              }});
            channelManager.Stub(x => x.GetDefaultChannel()).Return(defaultChannelForSiteA);

            builder.Stub(x => x.Build<IdempotentChannelForwarder>()).Return(new IdempotentChannelForwarder(channelFactory)
                                                                             {
                                                                                 DataBus = databusForSiteA
                                                                             });

            builder.Stub(x => x.Build<IReceiveMessagesFromSites>()).Return(new IdempotentChannelReceiver(channelFactory, new InMemoryPersistence())
            {
                DataBus = databusForSiteB
            });

            builder.Stub(x => x.BuildAll<IRouteMessagesToSites>()).Return(new[] { new KeyPrefixConventionSiteRouter() });

            messageSender = new FakeMessageSender();
            receiverInSiteB = new GatewayReceiver(channelManager,new DefaultEndpointRouter
                                                                     {
                                                                         MainInputAddress = EndpointAddressForSiteB
                                                                     },builder,messageSender);

            dispatcherInSiteA = new GatewaySender(builder,
                                                                   channelManager,
                                                                   MockRepository.GenerateStub<IMessageNotifier>(),
                                                                   MockRepository.GenerateStub<ISendMessages>(),
                                                                   new FakeDispatcherSettings
                                                                       {
                                                                           Receiver = inMemoryReceiver
                                                                       });

            dispatcherInSiteA.Start(GatewayAddressForSiteA);
            receiverInSiteB.Start(GatewayAddressForSiteB);
        }
예제 #6
0
        public void SetUp()
        {
            databusForSiteA = new InMemoryDataBus();
            databusForSiteB = new InMemoryDataBus();
            fakeTransport = new FakeTransport();

            var builder = MockRepository.GenerateStub<IBuilder>();

            var channelFactory = new ChannelFactory();

            channelFactory.RegisterReceiver(typeof(HttpChannelReceiver));

            channelFactory.RegisterSender(typeof(HttpChannelSender));

            var channelManager = MockRepository.GenerateStub<IManageReceiveChannels>();
            channelManager.Stub(x => x.GetReceiveChannels()).Return(new[] {new ReceiveChannel()
                                                                              {
                                                                                  Address = HttpAddressForSiteB,
                                                                                  Type = "http",
                                                                                  NumberOfWorkerThreads = 1
                                                                              }});
            channelManager.Stub(x => x.GetDefaultChannel()).Return(defaultChannelForSiteA);

            builder.Stub(x => x.Build<IdempotentChannelForwarder>()).Return(new IdempotentChannelForwarder(channelFactory)
                                                                             {
                                                                                 DataBus = databusForSiteA
                                                                             });

            builder.Stub(x => x.Build<IReceiveMessagesFromSites>()).Return(new IdempotentChannelReceiver(channelFactory, new InMemoryPersistence())
            {
                DataBus = databusForSiteB
            });

            builder.Stub(x => x.BuildAll<IRouteMessagesToSites>()).Return(new[] { new KeyPrefixConventionSiteRouter() });

            messageSender = new FakeMessageSender();
            receiverInSiteB = new GatewayReceiver();
            receiverInSiteB.ChannelManager = channelManager;
            receiverInSiteB.EndpointRouter = new DefaultEndpointRouter
                {
                    MainInputAddress = EndpointAddressForSiteB
                };
            receiverInSiteB.MessageSender = messageSender;
            receiverInSiteB.builder = builder;
            //receiverInSiteB.InputAddress = GatewayAddressForSiteA;

            dispatcherInSiteA = new GatewaySender();
            dispatcherInSiteA.ChannelManager = channelManager;
            dispatcherInSiteA.Builder = builder;
            dispatcherInSiteA.MessageSender = MockRepository.GenerateStub<ISendMessages>();
            dispatcherInSiteA.Notifier = MockRepository.GenerateStub<IMessageNotifier>();
               // dispatcherInSiteA.InputAddress = GatewayAddressForSiteA;

            dispatcherInSiteA.Start();
            receiverInSiteB.Start();
        }