summaryrefslogtreecommitdiff
path: root/src/mongo/executor/task_executor.cpp
diff options
context:
space:
mode:
authorA. Jesse Jiryu Davis <jesse@mongodb.com>2019-04-27 15:05:28 -0400
committerA. Jesse Jiryu Davis <jesse@mongodb.com>2019-05-04 14:49:58 -0400
commit30f602bb9c8799e9b2b0d1c608d13fdfb24d2ce2 (patch)
tree7a03a34d4fe4589324de2d76fdc82d6df06a35a5 /src/mongo/executor/task_executor.cpp
parent4fb71c5a1c79b745ef56d53a8264ef5fdd202dda (diff)
downloadmongo-30f602bb9c8799e9b2b0d1c608d13fdfb24d2ce2.tar.gz
SERVER-40765 TaskExecutor inherits from OutOfLineExecutor
Diffstat (limited to 'src/mongo/executor/task_executor.cpp')
-rw-r--r--src/mongo/executor/task_executor.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/mongo/executor/task_executor.cpp b/src/mongo/executor/task_executor.cpp
index 7ad6c3355fd..dea064860c7 100644
--- a/src/mongo/executor/task_executor.cpp
+++ b/src/mongo/executor/task_executor.cpp
@@ -37,6 +37,17 @@ namespace executor {
TaskExecutor::TaskExecutor() = default;
TaskExecutor::~TaskExecutor() = default;
+void TaskExecutor::schedule(OutOfLineExecutor::Task func) {
+ auto cb = CallbackFn([func = std::move(func)](const CallbackArgs& args) { func(args.status); });
+ auto statusWithCallback = scheduleWork(std::move(cb));
+ if (!statusWithCallback.isOK()) {
+ // The callback was not scheduled or moved from, it is still valid. Run it inline to inform
+ // it of the error. Construct a CallbackArgs for it, only CallbackArgs::status matters here.
+ CallbackArgs args(this, {}, statusWithCallback.getStatus(), nullptr);
+ cb(args);
+ }
+}
+
TaskExecutor::CallbackState::CallbackState() = default;
TaskExecutor::CallbackState::~CallbackState() = default;