/* * Copyright (C) 2020-present ScyllaDB */ /* * SPDX-License-Identifier: AGPL-3.0-or-later */ #pragma once #include #include #include #include "service/memory_limiter.hh" #include "protocol_server.hh" using namespace seastar; class thrift_server; namespace replica { class database; } namespace auth { class service; } namespace cql3 { class query_processor; } namespace service { class storage_service; class storage_proxy; } class thrift_controller : public protocol_server { std::unique_ptr> _server; std::optional _addr; semaphore _ops_sem; /* protects start/stop operations on _server */ bool _stopped = false; distributed& _db; sharded& _auth_service; sharded& _qp; sharded& _mem_limiter; sharded& _ss; sharded& _proxy; future<> do_start_server(); future<> do_stop_server(); public: thrift_controller(distributed&, sharded&, sharded&, sharded&, sharded& ss, sharded& proxy); virtual sstring name() const override; virtual sstring protocol() const override; virtual sstring protocol_version() const override; virtual std::vector listen_addresses() const override; virtual future<> start_server() override; virtual future<> stop_server() override; virtual future<> request_stop_server() override; };