// private methods private TransactionOptions ParseTransactionOptions(BsonDocument document) { JsonDrivenHelper.EnsureAllFieldsAreValid(document, "readConcern", "readPreference", "writeConcern", "maxCommitTimeMS"); var options = new TransactionOptions(); if (document.Contains("readConcern")) { options = options.With(readConcern: ReadConcern.FromBsonDocument(document["readConcern"].AsBsonDocument)); } if (document.Contains("readPreference")) { options = options.With(readPreference: ReadPreference.FromBsonDocument(document["readPreference"].AsBsonDocument)); } if (document.Contains("writeConcern")) { options = options.With(writeConcern: WriteConcern.FromBsonDocument(document["writeConcern"].AsBsonDocument)); } if (document.Contains("maxCommitTimeMS")) { options = options.With(maxCommitTime: TimeSpan.FromMilliseconds(document["maxCommitTimeMS"].ToInt32())); } return(options); }
// private methods private void SetOptions(BsonDocument document) { JsonDrivenHelper.EnsureAllFieldsAreValid(document, "readConcern", "writeConcern"); if (document.Contains("readConcern")) { _options = _options.With(readConcern: ReadConcern.FromBsonDocument(document["readConcern"].AsBsonDocument)); } if (document.Contains("writeConcern")) { _options = _options.With(writeConcern: WriteConcern.FromBsonDocument(document["writeConcern"].AsBsonDocument)); } }
// private methods private void SetOptions(BsonDocument document) { JsonDrivenHelper.EnsureAllFieldsAreValid(document, "readConcern", "readPreference", "writeConcern"); var options = new TransactionOptions(); if (document.Contains("readConcern")) { options = options.With(readConcern: ReadConcern.FromBsonDocument(document["readConcern"].AsBsonDocument)); } if (document.Contains("readPreference")) { options = options.With(readPreference: ReadPreference.FromBsonDocument(document["readPreference"].AsBsonDocument)); } if (document.Contains("writeConcern")) { options = options.With(writeConcern: WriteConcern.FromBsonDocument(document["writeConcern"].AsBsonDocument)); } _options = options; }
public UnifiedWithTransactionOperation Build(string targetSessionId, BsonDocument arguments) { var session = _entityMap.GetSession(targetSessionId); BsonArray operations = null; TransactionOptions options = null; foreach (var argument in arguments) { switch (argument.Name) { case "callback": operations = argument.Value.AsBsonArray; break; case "readConcern": options = options ?? new TransactionOptions(); options = options.With(readConcern: ReadConcern.FromBsonDocument(argument.Value.AsBsonDocument)); break; case "readPreference": options = options ?? new TransactionOptions(); options = options.With(readPreference: ReadPreference.FromBsonDocument(argument.Value.AsBsonDocument)); break; case "writeConcern": options = options ?? new TransactionOptions(); options = options.With(writeConcern: WriteConcern.FromBsonDocument(argument.Value.AsBsonDocument)); break; default: throw new FormatException($"Invalid WithTransactionOperation argument name: '{argument.Name}'."); } } return(new UnifiedWithTransactionOperation(session, operations, options)); }