public void ProxyMainLogic_Process_SendDataToRealDistributor() { var queue = new QueueConfiguration(1, 1000); var server1 = new ServerId("localhost", 21171); var server2 = new ServerId("localhost", 21172); var server3 = new ServerId("localhost", 21173); var netconfig = new ConnectionConfiguration("testService", 10); TestHelper.OpenDistributorHost(server1, netconfig); TestHelper.OpenDistributorHost(server2, netconfig); var net = new ProxyNetModule(netconfig, new ConnectionTimeoutConfiguration(Consts.OpenTimeout, Consts.SendTimeout)); var distributor = new ProxyDistributorModule(new AsyncProxyCache(TimeSpan.FromMinutes(100)), net, queue, server1, new AsyncTasksConfiguration(TimeSpan.FromDays(1)), new AsyncTasksConfiguration(TimeSpan.FromDays(1))); net.SetDistributor(distributor); var cache = new ProxyCache(TimeSpan.FromSeconds(20)); var main = new ProxyMainLogicModule(distributor, net, cache); net.Start(); distributor.Start(); distributor.SayIAmHere(server1); distributor.SayIAmHere(server2); distributor.SayIAmHere(server3); cache.Start(); main.Start(); const string hash = ""; var ev = new InnerData(new Transaction("", "")); ev.Transaction = distributor.CreateTransaction(hash); ev.Transaction = distributor.CreateTransaction(hash); ev.Transaction = distributor.CreateTransaction(hash); ev.Transaction.Destination = new List <ServerId> { server1 }; bool res = main.Process(ev); var server = cache.Get(ev.Transaction.EventHash); Assert.IsNull(server); Assert.IsTrue(res); main.Dispose(); distributor.Dispose(); net.Dispose(); }
public ProxyInputModuleCommon(ProxyMainLogicModule mainLogic, QueueConfiguration queueConfiguration, ProxyDistributorModule distributor, AsyncProxyCache asyncProxyCache) { Contract.Requires(queueConfiguration != null); Contract.Requires(mainLogic != null); Contract.Requires(distributor != null); Contract.Requires(asyncProxyCache != null); _queueConfiguration = queueConfiguration; _distributor = distributor; _asyncProxyCache = asyncProxyCache; _mainLogic = mainLogic; _queue = GlobalQueue.Queue; _apis = new Dictionary <string, ProxyInputModule>(); }
public override void Build() { var q = new GlobalQueueInner(); GlobalQueue.SetQueue(q); var asyncCache = new AsyncProxyCache(_asyncCacheConfiguration.TimeAliveSec); var net = new ProxyNetModule(_connectionConfiguration, _connectionTimeoutConfiguration); var distributor = new ProxyDistributorModule(asyncCache, net, new QueueConfiguration(1, 1000), _local, _asyncGetData, _asyncPing); net.SetDistributor(distributor); var cache = new ProxyCache(_cacheConfiguration.TimeAliveSec); var main = new ProxyMainLogicModule(distributor, net, cache); var input = new ProxyInputModuleCommon(main, _queueConfiguration, distributor, asyncCache); CreateApi = input.CreateApi; var receive = new ProxyNetReceiver(distributor, _netReceiverConfiguration); AddModule(input); AddModule(main); AddModule(cache); AddModule(asyncCache); AddModule(net); AddModule(distributor); AddModule(receive); AddModule(q); AddModuleDispose(distributor); AddModuleDispose(receive); AddModuleDispose(q); AddModuleDispose(input); AddModuleDispose(asyncCache); AddModuleDispose(main); AddModuleDispose(net); AddModuleDispose(cache); }