Пример #1
0
        public MyAppNode(NodeInfo identity, MyAppNodeConfiguration config) :
            base(identity, config)
        {
            var factory = new MyAppDataFactory(config.LoggerDelegate);

            _appRepo    = new MyAppDataRepo(factory.CreateMyAppData);
            _appHandler = new ApplicationHandler(this);

            MessageBus.Subscribe(_appHandler);
            MessageBus.Subscribe(_appRepo);
        }
Пример #2
0
        void Run(string[] args)
        {
            using (var janitor = new DisposableStack())
            {
                var logger = janitor.Push(new FileLogger());

                var hostEntry = _dnsProvider.GetHostEntry("localhost");
                var config    = new MyAppNodeConfiguration
                {
                    HashingService              = _hashingService,
                    Serializer                  = _msgSerializer,
                    NodeSocketFactory           = _nodeSocketFactory,
                    Clock                       = _clock,
                    CorrelationFactory          = _correlationFactory,
                    SuccessorCount              = 2,
                    SeedNode                    = $"{hostEntry.HostName}:{SeedPort}",
                    LoggerDelegate              = logger.WriteLine,
                    ExpiryCalculator            = _expiryCalculator,
                    Random                      = _random,
                    ActionTimerFactory          = _actionTimerFactory,
                    MarshallerFactory           = _marshallerFactory,
                    CommunicationManagerFactory = _communicationManagerFactory,
                };

                var factory = new MyAppNodeFactory(config);

                var hostAndPort0 = $"{hostEntry.HostName}:{SeedPort}";
                var id0          = Node.CreateIdentifier(hostAndPort0);

                var nodes = new List <Node>();

                nodes.Add(janitor.Push(factory.CreateNode(id0, hostAndPort0)));

                for (int i = 9001; i < 9003; ++i)
                {
                    var hostAndPort = $"{hostEntry.HostName}:{i}";
                    var id          = Node.CreateIdentifier(hostAndPort);
                    nodes.Add(janitor.Push(factory.CreateNode(id, hostAndPort)));
                    Thread.Sleep(1500);
                }

                Thread.Sleep(1000);
                Console.WriteLine("***** Connectivity Summary *****");


                Console.ReadKey();

                foreach (var node in nodes)
                {
                    Console.WriteLine($"{node.Identity}\tS: {node.Successor}\tP: {node.Predecessor}");
                }

                Console.ReadKey();

                //var terminate = new TerminateNode(node0.Identity.RoutingHash);
                //node0.Publish(terminate);

                //terminate = new TerminateNode(node1.Identity.RoutingHash);
                //node1.Publish(terminate);

                //terminate = new TerminateNode(node2.Identity.RoutingHash);
                //node2.Publish(terminate);
            }

            Console.ReadKey();
        }
Пример #3
0
 public MyAppNodeFactory(MyAppNodeConfiguration config)
 {
     _hashingService = config.HashingService;
     _config         = config;
 }