// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. /** * Messages used internally within visitor implementation. Sent from visitor * manager to visitor threads, to avoid any locking issues generated by calling * visitor threads directly. */ #pragma once #include #include namespace storage { /** * @class PropagateVisitorConfig * @ingroup visiting * * @brief Used to propagate visitor config to visitor threads. */ class PropagateVisitorConfig : public api::InternalCommand { vespa::config::content::core::StorVisitorConfig _config; public: static const uint32_t ID = 3001; PropagateVisitorConfig(const vespa::config::content::core::StorVisitorConfig& config) : api::InternalCommand(ID), _config(config) {} std::unique_ptr makeReply() override; const vespa::config::content::core::StorVisitorConfig& getConfig() const { return _config; } void print(std::ostream& out, bool verbose, const std::string& indent) const override { out << "PropagateVisitorConfig()"; if (verbose) { out << " : "; api::InternalCommand::print(out, true, indent); } } }; /** * @class PropagateVisitorConfigReply * @ingroup visiting */ class PropagateVisitorConfigReply : public api::InternalReply { public: static const int ID = 3002; PropagateVisitorConfigReply(const PropagateVisitorConfig& cmd) : api::InternalReply(ID, cmd) {} void print(std::ostream& out, bool verbose, const std::string& indent) const override { out << "PropagateVisitorConfigReply()"; if (verbose) { out << " : "; api::InternalReply::print(out, true, indent); } } }; inline std::unique_ptr PropagateVisitorConfig::makeReply() { return std::unique_ptr( new PropagateVisitorConfigReply(*this)); } } // storage