summaryrefslogtreecommitdiff
path: root/src/mongo/idl/server_parameter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/idl/server_parameter.cpp')
-rw-r--r--src/mongo/idl/server_parameter.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/mongo/idl/server_parameter.cpp b/src/mongo/idl/server_parameter.cpp
index 5e0d3ef66fd..975f2b515e6 100644
--- a/src/mongo/idl/server_parameter.cpp
+++ b/src/mongo/idl/server_parameter.cpp
@@ -88,6 +88,31 @@ void ServerParameterSet::add(ServerParameter* sp) {
x = sp;
}
+StatusWith<std::string> ServerParameter::coerceToString(const BSONElement& element, bool redact) {
+ switch (element.type()) {
+ case NumberDouble:
+ return std::to_string(element.Double());
+ case String:
+ return element.String();
+ case NumberInt:
+ return std::to_string(element.Int());
+ case NumberLong:
+ return std::to_string(element.Long());
+ case Date:
+ return dateToISOStringLocal(element.Date());
+ default:
+ std::string diag;
+ if (redact) {
+ diag = "###";
+ } else {
+ diag = element.toString();
+ }
+ return {ErrorCodes::BadValue,
+ str::stream() << "Unsupported type " << typeName(element.type()) << " (value: '"
+ << diag << "') for setParameter: " << name()};
+ }
+}
+
IDLServerParameterDeprecatedAlias::IDLServerParameterDeprecatedAlias(StringData name,
ServerParameter* sp)
: ServerParameter(ServerParameterSet::getGlobal(),