diff options
Diffstat (limited to 'src/mongo/scripting/mozjs/global.cpp')
-rw-r--r-- | src/mongo/scripting/mozjs/global.cpp | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/mongo/scripting/mozjs/global.cpp b/src/mongo/scripting/mozjs/global.cpp index 1cb3e463e35..15c183fe78c 100644 --- a/src/mongo/scripting/mozjs/global.cpp +++ b/src/mongo/scripting/mozjs/global.cpp @@ -40,12 +40,14 @@ #include "mongo/scripting/mozjs/jsstringwrapper.h" #include "mongo/scripting/mozjs/objectwrapper.h" #include "mongo/scripting/mozjs/valuereader.h" +#include "mongo/scripting/mozjs/valuewriter.h" #include "mongo/util/version.h" namespace mongo { namespace mozjs { -const JSFunctionSpec GlobalInfo::freeFunctions[6] = { +const JSFunctionSpec GlobalInfo::freeFunctions[7] = { + MONGO_ATTACH_JS_FUNCTION(sleep), MONGO_ATTACH_JS_FUNCTION(gc), MONGO_ATTACH_JS_FUNCTION(print), MONGO_ATTACH_JS_FUNCTION(version), @@ -110,6 +112,18 @@ void GlobalInfo::Functions::gc::call(JSContext* cx, JS::CallArgs args) { args.rval().setUndefined(); } +void GlobalInfo::Functions::sleep::call(JSContext* cx, JS::CallArgs args) { + uassert(16259, + "sleep takes a single numeric argument -- sleep(milliseconds)", + args.length() == 1 && args.get(0).isNumber()); + + auto scope = getScope(cx); + int64_t duration = ValueWriter(cx, args.get(0)).toInt64(); + scope->sleep(Milliseconds(duration)); + + args.rval().setUndefined(); +} + MONGO_INITIALIZER(JavascriptPrintDomain)(InitializerContext*) { jsPrintLogDomain = logger::globalLogManager()->getNamedDomain("javascriptOutput"); return Status::OK(); |