diff options
Diffstat (limited to 'src/mongo/idl/server_parameter.cpp')
-rw-r--r-- | src/mongo/idl/server_parameter.cpp | 25 |
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(), |