public void Initialize() { var privateKey = new PrivateKey(new Hex(TestPrivateKeyHex)); _publicKey = privateKey.PublicKey; var logger = NullLogger.Instance; var config = new DiscoveryConfigurationProvider(new NetworkHelper(logger)) { PongTimeout = 100 }; var configProvider = new ConfigurationProvider(); _messageSender = Substitute.For <IMessageSender>(); _nodeFactory = new NodeFactory(); var calculator = new NodeDistanceCalculator(config); _nodeTable = new NodeTable(config, _nodeFactory, new FileKeyStore(configProvider, new JsonSerializer(logger), new AesEncrypter(configProvider, logger), new CryptoRandom(), logger), logger, calculator); _nodeTable.Initialize(); var evictionManager = new EvictionManager(_nodeTable, logger); var lifecycleFactory = new NodeLifecycleManagerFactory(_nodeFactory, _nodeTable, logger, config, new DiscoveryMessageFactory(config), evictionManager, new NodeStatsProvider(config)); _nodes = new[] { _nodeFactory.CreateNode("192.168.1.18", 1), _nodeFactory.CreateNode("192.168.1.19", 2) }; _discoveryManager = new DiscoveryManager(logger, config, lifecycleFactory, _nodeFactory, _nodeTable, new DiscoveryStorage(config, _nodeFactory, logger, new PerfService(logger))); _discoveryManager.MessageSender = _messageSender; }
public void Initialize() { SetupNodeIds(); var logger = NullLogger.Instance; //setting config to store 3 nodes in a bucket and for table to have one bucket//setting config to store 3 nodes in a bucket and for table to have one bucket _configurationProvider = new DiscoveryConfigurationProvider(new NetworkHelper(logger)) { PongTimeout = 50, BucketSize = 3, BucketsCount = 1 }; var configProvider = new ConfigurationProvider(); _nodeFactory = new NodeFactory(); var calculator = new NodeDistanceCalculator(_configurationProvider); _nodeTable = new NodeTable(_configurationProvider, _nodeFactory, new FileKeyStore(configProvider, new JsonSerializer(logger), new AesEncrypter(configProvider, logger), new CryptoRandom(), logger), logger, calculator); _nodeTable.Initialize(); var evictionManager = new EvictionManager(_nodeTable, logger); var lifecycleFactory = new NodeLifecycleManagerFactory(_nodeFactory, _nodeTable, logger, _configurationProvider, new DiscoveryMessageFactory(_configurationProvider), evictionManager, new NodeStatsProvider(_configurationProvider)); _udpClient = Substitute.For <IMessageSender>(); _discoveryManager = new DiscoveryManager(logger, _configurationProvider, lifecycleFactory, _nodeFactory, _nodeTable, new DiscoveryStorage(_configurationProvider, _nodeFactory, logger, new PerfService(logger))); _discoveryManager.MessageSender = _udpClient; }
private static void Start() { var privateKeyProvider = new PrivateKeyProvider(PrivateKey); var config = new DiscoveryConfigurationProvider(new NetworkHelper(Logger)); var signer = new Signer(); var cryptoRandom = new CryptoRandom(); var configProvider = new ConfigurationProvider(); var nodeFactory = new NodeFactory(); var calculator = new NodeDistanceCalculator(config); var nodeTable = new NodeTable(config, nodeFactory, new FileKeyStore(configProvider, new JsonSerializer(Logger), new AesEncrypter(configProvider, Logger), cryptoRandom, Logger), Logger, calculator); var evictionManager = new EvictionManager(nodeTable, Logger); var lifecycleFactory = new NodeLifecycleManagerFactory(nodeFactory, nodeTable, Logger, config, new DiscoveryMessageFactory(config), evictionManager); var discoveryManager = new DiscoveryManager(Logger, config, lifecycleFactory, nodeFactory, nodeTable); var nodesLocator = new NodesLocator(nodeTable, discoveryManager, config, Logger); var discoveryMesageFactory = new DiscoveryMessageFactory(config); var nodeIdResolver = new NodeIdResolver(signer); var pingSerializer = new PingMessageSerializer(signer, privateKeyProvider, discoveryMesageFactory, nodeIdResolver, nodeFactory); var pongSerializer = new PongMessageSerializer(signer, privateKeyProvider, discoveryMesageFactory, nodeIdResolver, nodeFactory); var findNodeSerializer = new FindNodeMessageSerializer(signer, privateKeyProvider, discoveryMesageFactory, nodeIdResolver, nodeFactory); var neighborsSerializer = new NeighborsMessageSerializer(signer, privateKeyProvider, discoveryMesageFactory, nodeIdResolver, nodeFactory); var messageSerializationService = new MessageSerializationService(); messageSerializationService.Register(pingSerializer); messageSerializationService.Register(pongSerializer); messageSerializationService.Register(findNodeSerializer); messageSerializationService.Register(neighborsSerializer); //P2P initialization IMessagePad eip8Pad = new Eip8MessagePad(cryptoRandom); messageSerializationService.Register(new AuthEip8MessageSerializer(eip8Pad)); messageSerializationService.Register(new AckEip8MessageSerializer(eip8Pad)); messageSerializationService.Register(new HelloMessageSerializer()); messageSerializationService.Register(new DisconnectMessageSerializer()); messageSerializationService.Register(new Nethermind.Network.P2P.PingMessageSerializer()); messageSerializationService.Register(new Nethermind.Network.P2P.PongMessageSerializer()); messageSerializationService.Register(new StatusMessageSerializer()); IEciesCipher eciesCipher = new EciesCipher(cryptoRandom); IEncryptionHandshakeService encryptionHandshakeService = new EncryptionHandshakeService(messageSerializationService, eciesCipher, cryptoRandom, signer, PrivateKey, Logger); var p2pManager = new P2PManager(encryptionHandshakeService, Logger, messageSerializationService, Substitute.For <ISynchronizationManager>()); //Connect discovery with P2P discoveryManager.RegisterDiscoveryListener(p2pManager); _discoveryApp = new DiscoveryApp(config, nodesLocator, Logger, discoveryManager, nodeFactory, nodeTable, messageSerializationService, cryptoRandom); _discoveryApp.Start(PrivateKey.PublicKey); }