summaryrefslogtreecommitdiff
path: root/src/mongo/db/server_parameters.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/server_parameters.h')
-rw-r--r--src/mongo/db/server_parameters.h189
1 files changed, 102 insertions, 87 deletions
diff --git a/src/mongo/db/server_parameters.h b/src/mongo/db/server_parameters.h
index 9c281e4499c..fed9a6b21e0 100644
--- a/src/mongo/db/server_parameters.h
+++ b/src/mongo/db/server_parameters.h
@@ -38,125 +38,140 @@
namespace mongo {
- class ServerParameterSet;
- class OperationContext;
+class ServerParameterSet;
+class OperationContext;
- /**
- * Lets you make server level settings easily configurable.
- * Hooks into (set|get)Paramter, as well as command line processing
- */
- class ServerParameter {
- public:
- typedef std::map< std::string, ServerParameter* > Map;
+/**
+ * Lets you make server level settings easily configurable.
+ * Hooks into (set|get)Paramter, as well as command line processing
+ */
+class ServerParameter {
+public:
+ typedef std::map<std::string, ServerParameter*> Map;
- ServerParameter( ServerParameterSet* sps, const std::string& name,
- bool allowedToChangeAtStartup, bool allowedToChangeAtRuntime );
- ServerParameter( ServerParameterSet* sps, const std::string& name );
- virtual ~ServerParameter();
+ ServerParameter(ServerParameterSet* sps,
+ const std::string& name,
+ bool allowedToChangeAtStartup,
+ bool allowedToChangeAtRuntime);
+ ServerParameter(ServerParameterSet* sps, const std::string& name);
+ virtual ~ServerParameter();
- std::string name() const { return _name; }
+ std::string name() const {
+ return _name;
+ }
- /**
- * @return if you can set on command line or config file
- */
- bool allowedToChangeAtStartup() const { return _allowedToChangeAtStartup; }
+ /**
+ * @return if you can set on command line or config file
+ */
+ bool allowedToChangeAtStartup() const {
+ return _allowedToChangeAtStartup;
+ }
- /**
- * @param if you can use (get|set)Parameter
- */
- bool allowedToChangeAtRuntime() const { return _allowedToChangeAtRuntime; }
+ /**
+ * @param if you can use (get|set)Parameter
+ */
+ bool allowedToChangeAtRuntime() const {
+ return _allowedToChangeAtRuntime;
+ }
- virtual void append(OperationContext* txn, BSONObjBuilder& b, const std::string& name ) = 0;
+ virtual void append(OperationContext* txn, BSONObjBuilder& b, const std::string& name) = 0;
- virtual Status set( const BSONElement& newValueElement ) = 0;
+ virtual Status set(const BSONElement& newValueElement) = 0;
- virtual Status setFromString( const std::string& str ) = 0;
+ virtual Status setFromString(const std::string& str) = 0;
- private:
- std::string _name;
- bool _allowedToChangeAtStartup;
- bool _allowedToChangeAtRuntime;
- };
+private:
+ std::string _name;
+ bool _allowedToChangeAtStartup;
+ bool _allowedToChangeAtRuntime;
+};
- class ServerParameterSet {
- public:
- typedef std::map< std::string, ServerParameter* > Map;
+class ServerParameterSet {
+public:
+ typedef std::map<std::string, ServerParameter*> Map;
- void add( ServerParameter* sp );
+ void add(ServerParameter* sp);
- const Map& getMap() const { return _map; }
+ const Map& getMap() const {
+ return _map;
+ }
- static ServerParameterSet* getGlobal();
+ static ServerParameterSet* getGlobal();
- private:
- Map _map;
- };
+private:
+ Map _map;
+};
+/**
+ * Implementation of ServerParameter for reading and writing a server parameter with a given
+ * name and type into a specific C++ variable.
+ */
+template <typename T>
+class ExportedServerParameter : public ServerParameter {
+public:
/**
- * Implementation of ServerParameter for reading and writing a server parameter with a given
- * name and type into a specific C++ variable.
+ * Construct an ExportedServerParameter in parameter set "sps", named "name", whose storage
+ * is at "value".
+ *
+ * If allowedToChangeAtStartup is true, the parameter may be set at the command line,
+ * e.g. via the --setParameter switch. If allowedToChangeAtRuntime is true, the parameter
+ * may be set at runtime, e.g. via the setParameter command.
*/
- template<typename T>
- class ExportedServerParameter : public ServerParameter {
- public:
-
- /**
- * Construct an ExportedServerParameter in parameter set "sps", named "name", whose storage
- * is at "value".
- *
- * If allowedToChangeAtStartup is true, the parameter may be set at the command line,
- * e.g. via the --setParameter switch. If allowedToChangeAtRuntime is true, the parameter
- * may be set at runtime, e.g. via the setParameter command.
- */
- ExportedServerParameter( ServerParameterSet* sps, const std::string& name, T* value,
- bool allowedToChangeAtStartup, bool allowedToChangeAtRuntime)
- : ServerParameter( sps, name, allowedToChangeAtStartup, allowedToChangeAtRuntime ),
- _value( value ) {}
- virtual ~ExportedServerParameter() {}
-
- virtual void append(OperationContext* txn, BSONObjBuilder& b, const std::string& name) {
- b.append( name, *_value );
- }
-
- virtual Status set( const BSONElement& newValueElement );
- virtual Status set( const T& newValue );
-
- virtual const T& get() const { return *_value; }
-
- virtual Status setFromString( const std::string& str );
-
- protected:
-
- virtual Status validate( const T& potentialNewValue ){ return Status::OK(); }
-
- T* _value; // owned elsewhere
- };
+ ExportedServerParameter(ServerParameterSet* sps,
+ const std::string& name,
+ T* value,
+ bool allowedToChangeAtStartup,
+ bool allowedToChangeAtRuntime)
+ : ServerParameter(sps, name, allowedToChangeAtStartup, allowedToChangeAtRuntime),
+ _value(value) {}
+ virtual ~ExportedServerParameter() {}
+
+ virtual void append(OperationContext* txn, BSONObjBuilder& b, const std::string& name) {
+ b.append(name, *_value);
+ }
+
+ virtual Status set(const BSONElement& newValueElement);
+ virtual Status set(const T& newValue);
+
+ virtual const T& get() const {
+ return *_value;
+ }
+
+ virtual Status setFromString(const std::string& str);
+
+protected:
+ virtual Status validate(const T& potentialNewValue) {
+ return Status::OK();
+ }
+
+ T* _value; // owned elsewhere
+};
}
-#define MONGO_EXPORT_SERVER_PARAMETER_IMPL( NAME, TYPE, INITIAL_VALUE, \
- CHANGE_AT_STARTUP, CHANGE_AT_RUNTIME ) \
- TYPE NAME = INITIAL_VALUE; \
- ExportedServerParameter<TYPE> _##NAME(\
- ServerParameterSet::getGlobal(), #NAME, &NAME, CHANGE_AT_STARTUP, CHANGE_AT_RUNTIME )
+#define MONGO_EXPORT_SERVER_PARAMETER_IMPL( \
+ NAME, TYPE, INITIAL_VALUE, CHANGE_AT_STARTUP, CHANGE_AT_RUNTIME) \
+ TYPE NAME = INITIAL_VALUE; \
+ ExportedServerParameter<TYPE> _##NAME( \
+ ServerParameterSet::getGlobal(), #NAME, &NAME, CHANGE_AT_STARTUP, CHANGE_AT_RUNTIME)
/**
* Create a global variable of type "TYPE" named "NAME" with the given INITIAL_VALUE. The
* value may be set at startup or at runtime.
*/
-#define MONGO_EXPORT_SERVER_PARAMETER( NAME, TYPE, INITIAL_VALUE ) \
- MONGO_EXPORT_SERVER_PARAMETER_IMPL( NAME, TYPE, INITIAL_VALUE, true, true )
+#define MONGO_EXPORT_SERVER_PARAMETER(NAME, TYPE, INITIAL_VALUE) \
+ MONGO_EXPORT_SERVER_PARAMETER_IMPL(NAME, TYPE, INITIAL_VALUE, true, true)
/**
* Like MONGO_EXPORT_SERVER_PARAMETER, but the value may only be set at startup.
*/
-#define MONGO_EXPORT_STARTUP_SERVER_PARAMETER( NAME, TYPE, INITIAL_VALUE ) \
- MONGO_EXPORT_SERVER_PARAMETER_IMPL( NAME, TYPE, INITIAL_VALUE, true, false )
+#define MONGO_EXPORT_STARTUP_SERVER_PARAMETER(NAME, TYPE, INITIAL_VALUE) \
+ MONGO_EXPORT_SERVER_PARAMETER_IMPL(NAME, TYPE, INITIAL_VALUE, true, false)
/**
* Like MONGO_EXPORT_SERVER_PARAMETER, but the value may only be set at runtime.
*/
-#define MONGO_EXPORT_RUNTIME_SERVER_PARAMETER( NAME, TYPE, INITIAL_VALUE ) \
- MONGO_EXPORT_SERVER_PARAMETER_IMPL( NAME, TYPE, INITIAL_VALUE, false, true )
+#define MONGO_EXPORT_RUNTIME_SERVER_PARAMETER(NAME, TYPE, INITIAL_VALUE) \
+ MONGO_EXPORT_SERVER_PARAMETER_IMPL(NAME, TYPE, INITIAL_VALUE, false, true)
#include "server_parameters_inline.h"