Beispiel #1
0
        // 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);
        }
Beispiel #2
0
        // 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;
        }
Beispiel #4
0
        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));
        }