summaryrefslogtreecommitdiff
path: root/src/mongo/db/cancelable_operation_context.h
diff options
context:
space:
mode:
authorjannaerin <golden.janna@gmail.com>2021-03-23 21:09:06 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-03-25 16:42:16 +0000
commitd5ec2876050089857832308a5f72ea23dbb49715 (patch)
treec709a9726627e58e2ce5ac2624b3def1a40670e0 /src/mongo/db/cancelable_operation_context.h
parentb79aa28799f52362d88eb7ca32948d2098daa741 (diff)
downloadmongo-d5ec2876050089857832308a5f72ea23dbb49715.tar.gz
SERVER-55306 Integrate CancelableOperationContext into ReshardingCollectionCloner
Diffstat (limited to 'src/mongo/db/cancelable_operation_context.h')
-rw-r--r--src/mongo/db/cancelable_operation_context.h21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/mongo/db/cancelable_operation_context.h b/src/mongo/db/cancelable_operation_context.h
index ee4225e2b5b..c3bc2931261 100644
--- a/src/mongo/db/cancelable_operation_context.h
+++ b/src/mongo/db/cancelable_operation_context.h
@@ -31,14 +31,15 @@
#include <memory>
+#include "mongo/db/client.h"
#include "mongo/db/service_context.h"
#include "mongo/platform/atomic_word.h"
+#include "mongo/util/cancellation.h"
#include "mongo/util/future.h"
#include "mongo/util/out_of_line_executor.h"
namespace mongo {
-class CancellationToken;
class OperationContext;
/**
@@ -92,4 +93,22 @@ private:
const SemiFuture<void> _markKilledFinished;
};
+/**
+ * A factory to create CancelableOperationContext objects that use the same CancelationToken and
+ * executor.
+ */
+class CancelableOperationContextFactory {
+public:
+ CancelableOperationContextFactory(CancellationToken cancelToken, ExecutorPtr executor)
+ : _cancelToken{std::move(cancelToken)}, _executor{std::move(executor)} {}
+
+ CancelableOperationContext makeOperationContext(Client* client) const {
+ return CancelableOperationContext{client->makeOperationContext(), _cancelToken, _executor};
+ }
+
+private:
+ const CancellationToken _cancelToken;
+ const ExecutorPtr _executor;
+};
+
} // namespace mongo