src/api/transport/rpc_thread_pool.hpp¶
Namespaces¶
| Name |
|---|
| sgns |
| sgns::api |
Classes¶
| Name | |
|---|---|
| class | sgns::api::RpcThreadPool thread pool for serve RPC calls |
| struct | sgns::api::RpcThreadPool::Configuration |
| class | AppStateManager |
Source code¶
#ifndef SUPERGENIUS_SRC_API_RPC_THREAD_POOL_HPP
#define SUPERGENIUS_SRC_API_RPC_THREAD_POOL_HPP
#include <boost/asio/io_service.hpp>
#include <boost/asio/signal_set.hpp>
#include <set>
#include <thread>
#include "api/transport/rpc_io_context.hpp"
#include "application/app_state_manager.hpp"
#include "base/logger.hpp"
#include "singleton/IComponent.hpp"
using sgns::application::AppStateManager;
namespace sgns::api {
class RpcThreadPool : public std::enable_shared_from_this<RpcThreadPool>, public IComponent {
public:
using Context = RpcContext;
struct Configuration {
size_t min_thread_number = 1;
size_t max_thread_number = 10;
};
RpcThreadPool(std::shared_ptr<Context> context,
const Configuration &configuration);
~RpcThreadPool() override = default;
void start();
void stop();
std::string GetName() override
{
return "RpcThreadPool";
}
private:
std::shared_ptr<Context> context_;
const Configuration config_;
std::vector<std::shared_ptr<std::thread>> threads_;
base::Logger logger_ = base::createLogger("RPC thread pool");
};
} // namespace sgns::api
#endif // SUPERGENIUS_SRC_API_RPC_THREAD_POOL_HPP
Updated on 2026-03-04 at 13:10:44 -0800