/// <summary> /// Initializes an instance of the object for outbound network peers. /// </summary> /// <param name="peerAddress">Information about the peer including its network address, protocol version, time of last contact.</param> /// <param name="network">Specification of the network the node runs on - regtest/testnet/mainnet.</param> /// <param name="parameters">Various settings and requirements related to how the connections with peers are going to be established, or <c>null</c> to use default parameters.</param> /// <param name="networkPeerFactory">Factory for creating P2P network peers.</param> /// <param name="dateTimeProvider">Provider of time functions.</param> /// <param name="loggerFactory">Factory for creating loggers.</param> public NetworkPeer(NetworkAddress peerAddress, Network network, NetworkPeerConnectionParameters parameters, INetworkPeerFactory networkPeerFactory, IDateTimeProvider dateTimeProvider, ILoggerFactory loggerFactory) : this(false, peerAddress, network, parameters, dateTimeProvider, loggerFactory) { NetworkPeerClient client = networkPeerFactory.CreateNetworkPeerClient(parameters); this.logger = loggerFactory.CreateLogger(this.GetType().FullName, $"[{client.Id}-{peerAddress.Endpoint}] "); this.logger.LogTrace("()"); this.Connection = new NetworkPeerConnection(this, client, this.dateTimeProvider, this.loggerFactory); this.logger.LogTrace("(-)"); }
/// <summary> /// Initializes an instance of the object for outbound network peers. /// </summary> /// <param name="peerAddress">Information about the peer including its network address, protocol version, time of last contact.</param> /// <param name="network">Specification of the network the node runs on - regtest/testnet/mainnet.</param> /// <param name="parameters">Various settings and requirements related to how the connections with peers are going to be established, or <c>null</c> to use default parameters.</param> /// <param name="networkPeerFactory">Factory for creating P2P network peers.</param> /// <param name="dateTimeProvider">Provider of time functions.</param> /// <param name="loggerFactory">Factory for creating loggers.</param> public NetworkPeer(NetworkAddress peerAddress, Network network, NetworkPeerConnectionParameters parameters, INetworkPeerFactory networkPeerFactory, IDateTimeProvider dateTimeProvider, ILoggerFactory loggerFactory) : this(false, peerAddress, network, parameters, dateTimeProvider, loggerFactory) { this.logger.LogTrace("()"); NetworkPeerClient client = networkPeerFactory.CreateNetworkPeerClient(parameters); this.Connection = new NetworkPeerConnection(this, client, this.dateTimeProvider, this.loggerFactory); this.ConnectAsync(parameters.ConnectCancellation).GetAwaiter().GetResult(); this.InitDefaultBehaviors(parameters); this.Connection.StartReceiveMessages(); this.logger.LogTrace("(-)"); }