public UnifiedCreateChangeStreamOnClientOperation Build(string targetClientId, BsonDocument arguments)
        {
            var client = _entityMap.GetClient(targetClientId);

            ChangeStreamOptions options = null;
            BsonDocumentStagePipelineDefinition <ChangeStreamDocument <BsonDocument>, ChangeStreamDocument <BsonDocument> > pipeline = null;

            foreach (var argument in arguments)
            {
                switch (argument.Name)
                {
                case "batchSize":
                    options           = options ?? new ChangeStreamOptions();
                    options.BatchSize = argument.Value.AsInt32;
                    break;

                case "pipeline":
                    var stages = argument.Value.AsBsonArray.Cast <BsonDocument>();
                    pipeline = new BsonDocumentStagePipelineDefinition <ChangeStreamDocument <BsonDocument>, ChangeStreamDocument <BsonDocument> >(stages);
                    break;

                default:
                    throw new FormatException($"Invalid CreateChangeStreamOperation argument name: '{argument.Name}'.");
                }
            }

            return(new UnifiedCreateChangeStreamOnClientOperation(client, pipeline, options));
        }
Esempio n. 2
0
        public UnifiedListDatabasesOperation Build(string targetClientId, BsonDocument arguments)
        {
            var client = _entityMap.GetClient(targetClientId);

            if (arguments != null)
            {
                throw new FormatException("ListDatabasesOperation is not expected to contain arguments.");
            }

            return(new UnifiedListDatabasesOperation(client));
        }
Esempio n. 3
0
        public UnifiedListDatabasesOperation Build(string targetClientId, BsonDocument arguments)
        {
            var client = _entityMap.GetClient(targetClientId);
            IClientSessionHandle session = null;

            if (arguments != null)
            {
                foreach (var argument in arguments)
                {
                    switch (argument.Name)
                    {
                    case "session":
                        session = _entityMap.GetSession(argument.Value.AsString);
                        break;

                    default:
                        throw new FormatException($"Invalid ListDatabasesOperation argument name: '{argument.Name}'.");
                    }
                }
            }

            return(new UnifiedListDatabasesOperation(client, session));
        }
        public UnifiedFailPointOperation Build(BsonDocument arguments)
        {
            IMongoClient client           = null;
            BsonDocument failPointCommand = null;

            foreach (var argument in arguments)
            {
                switch (argument.Name)
                {
                case "client":
                    client = _entityMap.GetClient(argument.Value.AsString);
                    break;

                case "failPoint":
                    failPointCommand = argument.Value.AsBsonDocument;
                    break;

                default:
                    throw new FormatException($"Invalid FailPointOperation argument name: '{argument.Name}'.");
                }
            }

            return(new UnifiedFailPointOperation(client, failPointCommand));
        }