diff options
| author | A. Jesse Jiryu Davis <jesse@mongodb.com> | 2019-04-27 15:05:28 -0400 |
|---|---|---|
| committer | A. Jesse Jiryu Davis <jesse@mongodb.com> | 2019-05-04 14:49:58 -0400 |
| commit | 30f602bb9c8799e9b2b0d1c608d13fdfb24d2ce2 (patch) | |
| tree | 7a03a34d4fe4589324de2d76fdc82d6df06a35a5 /src/mongo/executor/task_executor.cpp | |
| parent | 4fb71c5a1c79b745ef56d53a8264ef5fdd202dda (diff) | |
| download | mongo-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.cpp | 11 |
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; |
