/* * Copyright (C) 2024-present ScyllaDB */ /* * SPDX-License-Identifier: AGPL-3.0-or-later */ #pragma once #include "streaming/stream_reason.hh" #include "tasks/task_manager.hh" namespace service { class storage_service; } namespace node_ops { class node_ops_virtual_task : public tasks::task_manager::virtual_task::impl { private: service::storage_service& _ss; public: node_ops_virtual_task(tasks::task_manager::module_ptr module, service::storage_service& ss) : tasks::task_manager::virtual_task::impl(std::move(module)) , _ss(ss) {} virtual tasks::task_manager::task_group get_group() const noexcept override; virtual future> get_ids() const override; virtual future is_abortable() const override; virtual future> get_status(tasks::task_id id) override; virtual future> wait(tasks::task_id id) override; virtual future<> abort(tasks::task_id id) noexcept override; virtual future> get_stats() override; }; class task_manager_module : public tasks::task_manager::module { private: service::storage_service& _ss; public: task_manager_module(tasks::task_manager& tm, service::storage_service& ss) noexcept; virtual std::set get_nodes() const noexcept override; }; }