public MongoPersistenceEngine(MongoDatabase store, IDocumentSerializer serializer, MongoPersistenceOptions options) { if (store == null) { throw new ArgumentNullException("store"); } if (serializer == null) { throw new ArgumentNullException("serializer"); } if (options == null) { throw new ArgumentNullException("options"); } _store = store; _serializer = serializer; _options = options; // set config options _commitSettings = _options.GetCommitSettings(); _snapshotSettings = _options.GetSnapshotSettings(); _streamSettings = _options.GetStreamSettings(); _insertCommitWriteConcern = _options.GetInsertCommitWriteConcern(); _getLastCheckPointNumber = () => TryMongo(() => { var max = PersistedCommits .FindAll() .SetFields(Fields.Include(MongoCommitFields.CheckpointNumber)) .SetSortOrder(SortBy.Descending(MongoCommitFields.CheckpointNumber)) .SetLimit(1) .FirstOrDefault(); return(max != null ? max[MongoCommitFields.CheckpointNumber].AsInt64 : 0L); }); _getNextCheckpointNumber = () => new LongCheckpoint(_getLastCheckPointNumber() + 1L); _updateScript = new BsonJavaScript("function (x){ return insertCommit(x);}"); _checkpointZero = new LongCheckpoint(0); }