// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once #include "operationdonecontext.h" #include #include #include namespace document { class Document; } namespace proton { /** * Context class for document update operations that acks operation when * instance is destroyed. Typically a shared pointer to an instance is * passed around to multiple worker threads that performs portions of * a larger task before dropping the shared pointer, triggering the * ack when all worker threads have completed. */ class UpdateDoneContext : public OperationDoneContext { IPendingLidTracker::Token _uncommitted; document::DocumentUpdate::SP _upd; std::shared_future> _doc; public: UpdateDoneContext(std::shared_ptr token, IPendingLidTracker::Token uncommitted, const document::DocumentUpdate::SP &upd); ~UpdateDoneContext() override; const document::DocumentUpdate &getUpdate() { return *_upd; } void setDocument(std::shared_future> doc); }; } // namespace proton