public RaftReplicator(LeaderLocator leaderLocator, MemberId me, Outbound <MemberId, Org.Neo4j.causalclustering.core.consensus.RaftMessages_RaftMessage> outbound, LocalSessionPool sessionPool, ProgressTracker progressTracker, TimeoutStrategy progressTimeoutStrategy, long availabilityTimeoutMillis, AvailabilityGuard availabilityGuard, LogProvider logProvider, LocalDatabase localDatabase, Monitors monitors) { this._me = me; this._outbound = outbound; this._progressTracker = progressTracker; this._sessionPool = sessionPool; this._progressTimeoutStrategy = progressTimeoutStrategy; this._availabilityTimeoutMillis = availabilityTimeoutMillis; this._availabilityGuard = availabilityGuard; this._log = logProvider.getLog(this.GetType()); this._localDatabase = localDatabase; this._replicationMonitor = monitors.NewMonitor(typeof(ReplicationMonitor)); this._leaderProvider = new LeaderProvider(); leaderLocator.RegisterListener(this); }