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)); }
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)); }
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)); }