OplogFetcher::OplogFetcher(executor::TaskExecutor* executor, OpTime lastFetched, HostAndPort source, NamespaceString nss, ReplSetConfig config, std::size_t maxFetcherRestarts, int requiredRBID, bool requireFresherSyncSource, DataReplicatorExternalState* dataReplicatorExternalState, EnqueueDocumentsFn enqueueDocumentsFn, OnShutdownCallbackFn onShutdownCallbackFn, const int batchSize, StartingPoint startingPoint) : AbstractOplogFetcher(executor, lastFetched, source, nss, maxFetcherRestarts, onShutdownCallbackFn, "oplog fetcher"), _metadataObject(makeMetadataObject()), _requiredRBID(requiredRBID), _requireFresherSyncSource(requireFresherSyncSource), _dataReplicatorExternalState(dataReplicatorExternalState), _enqueueDocumentsFn(enqueueDocumentsFn), _awaitDataTimeout(calculateAwaitDataTimeout(config)), _batchSize(batchSize), _startingPoint(startingPoint) { invariant(config.isInitialized()); invariant(enqueueDocumentsFn); }
OplogFetcher::OplogFetcher(executor::TaskExecutor* exec, OpTimeWithHash lastFetched, HostAndPort source, NamespaceString oplogNSS, ReplicaSetConfig config, DataReplicatorExternalState* dataReplicatorExternalState, EnqueueDocumentsFn enqueueDocumentsFn, OnShutdownCallbackFn onShutdownCallbackFn) : _dataReplicatorExternalState(dataReplicatorExternalState), _fetcher(exec, source, oplogNSS.db().toString(), makeFindCommandObject(dataReplicatorExternalState, oplogNSS, lastFetched.opTime), stdx::bind( &OplogFetcher::_callback, this, stdx::placeholders::_1, stdx::placeholders::_3), uassertStatusOK(makeMetadataObject(config.getProtocolVersion() == 1LL)), config.getElectionTimeoutPeriod()), _enqueueDocumentsFn(enqueueDocumentsFn), _awaitDataTimeout(calculateAwaitDataTimeout(config)), _onShutdownCallbackFn(onShutdownCallbackFn), _lastFetched(lastFetched) { uassert(ErrorCodes::BadValue, "null last optime fetched", !lastFetched.opTime.isNull()); uassert(ErrorCodes::InvalidReplicaSetConfig, "uninitialized replica set configuration", config.isInitialized()); uassert(ErrorCodes::BadValue, "null enqueueDocuments function", enqueueDocumentsFn); uassert(ErrorCodes::BadValue, "null onShutdownCallback function", onShutdownCallbackFn); }