/// <summary> /// Constructs an instance of a MempoolSignaled object. /// Starts the block notification loop to memory pool behaviors for connected nodes. /// </summary> /// <param name="manager">Memory pool manager injected dependency.</param> /// <param name="chainIndexer">Concurrent chain injected dependency.</param> /// <param name="connection">Connection manager injected dependency.</param> /// <param name="nodeLifetime">Node lifetime injected dependency.</param> /// <param name="asyncProvider">Asynchronous loop factory injected dependency.</param> /// <param name="mempoolLock">The mempool lock.</param> /// <param name="memPool">the mempool.</param> /// <param name="validator">The mempool validator.</param> /// <param name="mempoolOrphans">The mempool orphan list.</param> public MempoolSignaled( MempoolManager manager, ChainIndexer chainIndexer, IConnectionManager connection, INodeLifetime nodeLifetime, IAsyncProvider asyncProvider, MempoolSchedulerLock mempoolLock, ITxMempool memPool, IMempoolValidator validator, MempoolOrphans mempoolOrphans, ISignals signals, IInitialBlockDownloadState initialBlockDownloadState) { this.manager = manager; this.chainIndexer = chainIndexer; this.connection = connection; this.nodeLifetime = nodeLifetime; this.asyncProvider = asyncProvider; this.mempoolLock = mempoolLock; this.memPool = memPool; this.validator = validator; this.mempoolOrphans = mempoolOrphans; this.signals = signals; this.initialBlockDownloadState = initialBlockDownloadState; }
public MempoolBehavior( IMempoolValidator validator, MempoolManager mempoolManager, MempoolOrphans orphans, IConnectionManager connectionManager, IInitialBlockDownloadState initialBlockDownloadState, Signals.Signals signals, ILoggerFactory loggerFactory, Network network) { this.validator = validator; this.mempoolManager = mempoolManager; this.orphans = orphans; this.connectionManager = connectionManager; this.initialBlockDownloadState = initialBlockDownloadState; this.signals = signals; this.logger = loggerFactory.CreateLogger(this.GetType().FullName); this.loggerFactory = loggerFactory; this.network = network; this.lockObject = new object(); this.inventoryTxToSend = new HashSet <uint256>(); this.filterInventoryKnown = new HashSet <uint256>(); this.isPeerWhitelistedForRelay = false; this.isBlocksOnlyMode = false; }
/// <summary> /// Constructs and instance of memory pool behavior. /// Constructs a logger instance for memory pool behavior object. /// </summary> /// <param name="validator">Memory pool validator for validating transactions.</param> /// <param name="manager">Memory pool manager for managing the memory pool.</param> /// <param name="orphans">Memory pool orphans for managing orphan transactions.</param> /// <param name="connectionManager">Connection manager for managing node connections.</param> /// <param name="chainState">Current block chain state.</param> /// <param name="signals">Node notifications available to subscribe to.</param> /// <param name="loggerFactory">Logger factory for creating logger.</param> public MempoolBehavior( IMempoolValidator validator, MempoolManager manager, MempoolOrphans orphans, IConnectionManager connectionManager, ChainState chainState, Signals.Signals signals, ILoggerFactory loggerFactory) : this(validator, manager, orphans, connectionManager, chainState, signals, loggerFactory.CreateLogger(typeof(MempoolBehavior).FullName)) { }
/// <summary> /// Constructs and instance of memory pool behavior. /// Constructs a logger instance for memory pool behavior object. /// </summary> /// <param name="validator">Memory pool validator for validating transactions.</param> /// <param name="manager">Memory pool manager for managing the memory pool.</param> /// <param name="orphans">Memory pool orphans for managing orphan transactions.</param> /// <param name="connectionManager">Connection manager for managing peer connections.</param> /// <param name="initialBlockDownloadState">Provider of IBD state.</param> /// <param name="signals">Peer notifications available to subscribe to.</param> /// <param name="loggerFactory">Logger factory for creating logger.</param> public MempoolBehavior( IMempoolValidator validator, MempoolManager manager, MempoolOrphans orphans, IConnectionManager connectionManager, IInitialBlockDownloadState initialBlockDownloadState, Signals.Signals signals, ILoggerFactory loggerFactory) : this(validator, manager, orphans, connectionManager, initialBlockDownloadState, signals, loggerFactory.CreateLogger(typeof(MempoolBehavior).FullName)) { }
/// <summary> /// Constructs an instance of a memory pool manager object. /// </summary> /// <param name="mempoolLock">A lock for managing asynchronous access to memory pool.</param> /// <param name="memPool">Transaction memory pool for managing transactions in the memory pool.</param> /// <param name="validator">Memory pool validator for validating transactions.</param> /// <param name="orphans">Memory pool orphans for managing orphan transactions.</param> /// <param name="dateTimeProvider">Date and time information provider.</param> /// <param name="nodeArgs">Settings from the node.</param> /// <param name="mempoolPersistence">Memory pool persistence methods for loading and saving from storage.</param> /// <param name="loggerFactory">Logger factory for creating instance logger.</param> public MempoolManager( MempoolAsyncLock mempoolLock, TxMempool memPool, IMempoolValidator validator, MempoolOrphans orphans, IDateTimeProvider dateTimeProvider, NodeSettings nodeArgs, IMempoolPersistence mempoolPersistence, ILoggerFactory loggerFactory) { this.MempoolLock = mempoolLock; this.memPool = memPool; this.DateTimeProvider = dateTimeProvider; this.NodeArgs = nodeArgs; this.Orphans = orphans; this.Validator = validator; this.mempoolPersistence = mempoolPersistence; this.mempoolLogger = loggerFactory.CreateLogger(this.GetType().FullName); }
/// <summary> /// Constructs an instance of memory pool behavior. /// </summary> /// <param name="validator">Memory pool validator for validating transactions.</param> /// <param name="manager">Memory pool manager for managing the memory pool.</param> /// <param name="orphans">Memory pool orphans for managing orphan transactions.</param> /// <param name="connectionManager">Connection manager for managing node connections.</param> /// <param name="chainState">Current block chain state.</param> /// <param name="signals">Node notifications available to subscribe to.</param> /// <param name="logger">Instance logger for memory pool behavior.</param> public MempoolBehavior( IMempoolValidator validator, MempoolManager manager, MempoolOrphans orphans, IConnectionManager connectionManager, ChainState chainState, Signals.Signals signals, ILogger logger) { this.validator = validator; this.manager = manager; this.orphans = orphans; this.connectionManager = connectionManager; this.chainState = chainState; this.signals = signals; this.logger = logger; this.inventoryTxToSend = new Dictionary <uint256, uint256>(); this.filterInventoryKnown = new Dictionary <uint256, uint256>(); }
/// <summary> /// Constructs an instance of a MempoolSignaled object. /// Starts the block notification loop to memory pool behaviors for connected nodes. /// </summary> /// <param name="manager">Memory pool manager injected dependency.</param> /// <param name="chain">Concurrent chain injected dependency.</param> /// <param name="connection">Connection manager injected dependency.</param> /// <param name="nodeLifetime">Node lifetime injected dependency.</param> /// <param name="asyncLoopFactory">Asynchronous loop factory injected dependency.</param> /// <param name="mempoolLock">The mempool lock.</param> /// <param name="memPool">the mempool.</param> /// <param name="validator">The mempool validator.</param> /// <param name="mempoolOrphans">The mempool orphan list.</param> public MempoolSignaled( MempoolManager manager, ConcurrentChain chain, IConnectionManager connection, INodeLifetime nodeLifetime, IAsyncLoopFactory asyncLoopFactory, MempoolSchedulerLock mempoolLock, ITxMempool memPool, IMempoolValidator validator, MempoolOrphans mempoolOrphans) { this.manager = manager; this.chain = chain; this.connection = connection; this.nodeLifetime = nodeLifetime; this.asyncLoopFactory = asyncLoopFactory; this.mempoolLock = mempoolLock; this.memPool = memPool; this.validator = validator; this.mempoolOrphans = mempoolOrphans; }
/// <summary> /// Constructs an instance of a memory pool manager object. /// </summary> /// <param name="mempoolLock">A lock for managing asynchronous access to memory pool.</param> /// <param name="memPool">Transaction memory pool for managing transactions in the memory pool.</param> /// <param name="validator">Memory pool validator for validating transactions.</param> /// <param name="orphans">Memory pool orphans for managing orphan transactions.</param> /// <param name="dateTimeProvider">Date and time information provider.</param> /// <param name="nodeArgs">Settings from the node.</param> /// <param name="mempoolSettings">Settings for memory pool.</param> /// <param name="mempoolPersistence">Memory pool persistence methods for loading and saving from storage.</param> /// <param name="loggerFactory">Logger factory for creating instance logger.</param> public MempoolManager( MempoolSchedulerLock mempoolLock, TxMempool memPool, IMempoolValidator validator, MempoolOrphans orphans, IDateTimeProvider dateTimeProvider, MempoolSettings mempoolSettings, IMempoolPersistence mempoolPersistence, CoinView coinView, ILoggerFactory loggerFactory) { this.MempoolLock = mempoolLock; this.memPool = memPool; this.DateTimeProvider = dateTimeProvider; this.mempoolSettings = mempoolSettings; this.Orphans = orphans; this.Validator = validator; this.mempoolPersistence = mempoolPersistence; this.coinView = coinView; this.mempoolLogger = loggerFactory.CreateLogger(this.GetType().FullName); }
/// <summary> /// Constructs an instance of memory pool behavior. /// </summary> /// <param name="validator">Memory pool validator for validating transactions.</param> /// <param name="manager">Memory pool manager for managing the memory pool.</param> /// <param name="orphans">Memory pool orphans for managing orphan transactions.</param> /// <param name="connectionManager">Connection manager for managing peer connections.</param> /// <param name="initialBlockDownloadState">Provider of IBD state.</param> /// <param name="signals">Peer notifications available to subscribe to.</param> /// <param name="logger">Instance logger for memory pool behavior.</param> /// <param name="network">The blockchain network.</param> public MempoolBehavior( IMempoolValidator validator, MempoolManager manager, MempoolOrphans orphans, IConnectionManager connectionManager, IInitialBlockDownloadState initialBlockDownloadState, Signals.Signals signals, ILogger logger, Network network) { this.validator = validator; this.manager = manager; this.orphans = orphans; this.connectionManager = connectionManager; this.initialBlockDownloadState = initialBlockDownloadState; this.signals = signals; this.logger = logger; this.network = network; this.inventoryTxToSend = new Dictionary <uint256, uint256>(); this.filterInventoryKnown = new Dictionary <uint256, uint256>(); }