// 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);
 }
示例#12
0
 // 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));
 }