// public methods public bool IsMet(FeatureContext context) { BsonValue parameterValue; try { parameterValue = GetParameterValue(context); } catch { // if we aren't authorized to use getParameter the only safe thing to assume is that the dependency isn't met return false; } // treat "0" and "false" as false even though JavaScript truthiness would consider them to be true if (parameterValue.IsString) { var s = parameterValue.AsString; if (s == "0" || s.Equals("false", StringComparison.OrdinalIgnoreCase)) { return false; } } return parameterValue.ToBoolean(); }
// private methods private BsonValue GetParameterValue(FeatureContext context) { // allow environment variable to provide value in case authentication prevents use of getParameter command var environmentVariableName = "mongod." + _parameterName; var environmentVariableValue = Environment.GetEnvironmentVariable(environmentVariableName); if (environmentVariableValue != null) { return environmentVariableValue; } var command = new CommandDocument { { "getParameter", 1 }, { _parameterName, 1 } }; var commandOperation = new CommandOperation<CommandResult>( "admin", // databaseName new BsonBinaryReaderSettings(), // readerSettings new BsonBinaryWriterSettings(), // writerSettings command, QueryFlags.SlaveOk, null, // options null, // readPreference null, // serializationOptions BsonSerializer.LookupSerializer(typeof(CommandResult)) // resultSerializer ); var result = commandOperation.Execute(context.Connection); return result.Response[_parameterName]; }
// public methods public bool IsMet(FeatureContext context) { var command = new CommandDocument { { "getParameter", 1 }, { _parameterName, 1 } }; var result = context.ServerInstance.RunCommandAs<CommandResult>(context.Connection, "admin", command); return result.Response[_parameterName].ToBoolean(); }
// public methods public bool IsFeatureSupported(FeatureContext context) { foreach (var dependency in _dependencies) { if (!dependency.IsMet(context)) { return false; } } return true; }
// public methods public FeatureSet DetectFeatureSet(FeatureContext context) { var featureSet = new FeatureSet(); foreach (var featureDetector in __featureDetectors) { if (featureDetector.IsFeatureSupported(context)) { featureSet.AddFeature(featureDetector.FeatureId); } } return featureSet; }
// public methods public bool IsMet(FeatureContext context) { if (context.IsMasterResult.MaxWireVersion < _min) { return false; } if (context.IsMasterResult.MinWireVersion > _max) { return false; } return true; }
// public methods public bool IsMet(FeatureContext context) { if (_min != null && context.BuildInfo.Version < _min) { return false; } if (_max != null && context.BuildInfo.Version > _max) { return false; } return true; }
// public methods public bool IsMet(FeatureContext context) { var parameterValue = GetParameterValue(context); // treat "0" and "false" as false even though JavaScript truthiness would consider them to be true if (parameterValue.IsString) { var s = parameterValue.AsString; if (s == "0" || s.Equals("false", StringComparison.OrdinalIgnoreCase)) { return false; } } return parameterValue.ToBoolean(); }
// public methods public FeatureSet DetectFeatureSet(FeatureContext context) { var featureSet = new FeatureSet(); foreach (var featureSetDependency in __featureSetDependencies) { if (featureSetDependency.Dependency.IsMet(context)) { foreach (var featureId in featureSetDependency.FeatureIds) { featureSet.AddFeature(featureId); } } } return featureSet; }
// private methods private BsonValue GetParameterValue(FeatureContext context) { // allow environment variable to provide value in case authentication prevents use of getParameter command var environmentVariableName = "mongod." + _parameterName; var environmentVariableValue = Environment.GetEnvironmentVariable(environmentVariableName); if (environmentVariableValue != null) { return environmentVariableValue; } var command = new CommandDocument { { "getParameter", 1 }, { _parameterName, 1 } }; var result = context.ServerInstance.RunCommandAs<CommandResult>(context.Connection, "admin", command); return result.Response[_parameterName]; }
// public methods public bool IsMet(FeatureContext context) { return _range.Overlaps(context.IsMasterResult.WireVersionRange); }
// public methods public bool IsMet(FeatureContext context) { return(_dependencies.All(d => d.IsMet(context))); }
// public methods public bool IsMet(FeatureContext context) { return _dependencies.All(d => d.IsMet(context)); }