diff options
author | jannaerin <golden.janna@gmail.com> | 2021-03-23 21:09:06 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-03-25 16:42:16 +0000 |
commit | d5ec2876050089857832308a5f72ea23dbb49715 (patch) | |
tree | c709a9726627e58e2ce5ac2624b3def1a40670e0 /src/mongo/db/cancelable_operation_context.h | |
parent | b79aa28799f52362d88eb7ca32948d2098daa741 (diff) | |
download | mongo-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.h | 21 |
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 |