summaryrefslogtreecommitdiff
path: root/src/mongo/scripting/mozjs/global.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/scripting/mozjs/global.cpp')
-rw-r--r--src/mongo/scripting/mozjs/global.cpp16
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();