/// <summary> /// Gets the singleton instance for this object. /// </summary> /// <returns></returns> public static NetworkNodesPool GetInstance(ILoggerFactory loggerFactory) { if (_instance == null) { lock (_threadLock) { if (_instance == null) { _instance = new NetworkNodesPool(loggerFactory); } } } return(_instance); }
public NetworkManager(NetworkNodesPool nodePool, ILoggerFactory loggerFactory, IBlockValidator blockValidator, IDifficultyCalculator difficultyCalculator, IBlockchainRepository repo, string netId) { _logger = loggerFactory.CreateLogger <NetworkManager>(); _nodePool = nodePool; _repo = repo; _netId = netId; _relayedTransactionHashes = new List <string>(); _relayedBlockHashes = new List <string>(); _messageHandler = new MessageHandler(this, ConcurrentTransactionPool.GetInstance(), nodePool, difficultyCalculator, blockValidator, loggerFactory, repo, netId); _handshakeMessageHandler = new HandshakeMessageHandler(this, nodePool, loggerFactory, repo, netId); _delays = new ConcurrentBag <int>(); EventPublisher.GetInstance().OnValidatedBlockCreated += OnValidatedBlockCreated; EventPublisher.GetInstance().OnValidTransactionReceived += OnValidTransactionReceived; // In the first phase, check every 10s if there is a node that has a longer chain than ours. // After the sync completed, exit the 'syncing' state and accept new blocks and transactions. StartSyncProcess(new CancellationTokenSource()); // todo cts }
public HandshakeMessageHandler(INetworkManager manager, NetworkNodesPool nodePool, ILoggerFactory loggerFactory, IBlockchainRepository blockchainRepo, string netId) : base(manager, nodePool, loggerFactory) { _blockchainRepo = blockchainRepo; _netId = netId; }
protected AbstractMessageHandler(INetworkManager manager, NetworkNodesPool nodePool, ILoggerFactory loggerFactory) { _networkManager = manager; _nodePool = nodePool; _logger = loggerFactory.CreateLogger <MessageHandler>(); }
public MessageHandler(INetworkManager manager, ConcurrentTransactionPool txPool, NetworkNodesPool nodePool, IDifficultyCalculator difficultyCalculator, IBlockValidator blockValidator, ILoggerFactory loggerFactory, IBlockchainRepository blockchainRepo, string netId) : base(manager, nodePool, loggerFactory) { _difficultyCalculator = difficultyCalculator; _blockValidator = blockValidator; _blockchainRepo = blockchainRepo; _netId = netId; _txPool = txPool; _blockchain = _blockchainRepo.GetChainByNetId(_netId); _difficulty = _difficultyCalculator.CalculateCurrentDifficulty(_blockchain); }