6#ifndef BATCHSERVER_HPP_INCLUDE
7#define BATCHSERVER_HPP_INCLUDE
68 static std::unique_ptr<BatchServer>
make_unique(
int client_pid,
69 const std::vector<geopm_request_s> &signal_config,
70 const std::vector<geopm_request_s> &control_config);
81 static int main(
int argc,
char **argv);
82 static void main(
int client_pid, std::istream &input_stream);
95 "/run/geopm/batch-buffer-";
102 const std::vector<geopm_request_s> &signal_config,
103 const std::vector<geopm_request_s> &control_config);
105 const std::vector<geopm_request_s> &signal_config,
106 const std::vector<geopm_request_s> &control_config,
107 const std::string &signal_shmem_key,
108 const std::string &control_shmem_key,
110 std::shared_ptr<BatchStatus> batch_status,
111 std::shared_ptr<POSIXSignal> posix_signal,
112 std::shared_ptr<SharedMemory> signal_shmem,
113 std::shared_ptr<SharedMemory> control_shmem,
128 void check_return(
int ret,
const std::string &func_name)
const;
133 const int m_client_pid;
134 const std::string m_server_key;
135 const std::vector<geopm_request_s> m_signal_config;
136 const std::vector<geopm_request_s> m_control_config;
137 const std::string m_signal_shmem_key;
138 const std::string m_control_shmem_key;
140 std::shared_ptr<SharedMemory> m_signal_shmem;
141 std::shared_ptr<SharedMemory> m_control_shmem;
142 std::shared_ptr<BatchStatus> m_batch_status;
143 std::shared_ptr<POSIXSignal> m_posix_signal;
146 bool m_is_client_attached;
147 bool m_is_client_waiting;
150 std::vector<int> m_signal_handle;
153 std::vector<int> m_control_handle;
Definition BatchServer.hpp:26
static std::unique_ptr< BatchServer > make_unique(int client_pid, const std::vector< geopm_request_s > &signal_config, const std::vector< geopm_request_s > &control_config)
Supports the D-Bus interface for starting a batch server.
Definition BatchServer.cpp:44
static std::string get_control_shmem_key(const std::string &server_key)
Definition BatchServer.cpp:58
virtual std::string server_key(void) const =0
virtual void run_batch(void)=0
static std::string get_signal_shmem_key(const std::string &server_key)
Definition BatchServer.cpp:52
static constexpr const char * M_SHMEM_PREFIX
Definition BatchServer.hpp:94
virtual void register_handler(void)=0
static int main(int argc, char **argv)
Definition BatchServer.cpp:315
BatchServer()=default
Interface called by geopmd to create the server for batch commands.
virtual int server_pid(void) const =0
virtual void create_shmem(void)=0
virtual bool is_active(void)=0
Returns true if the batch server is running.
virtual ~BatchServer()=default
Definition BatchServer.hpp:99
void check_invalid_signal(void)
void run_batch(void) override
Definition BatchServer.cpp:178
bool is_active(void) override
Returns true if the batch server is running.
Definition BatchServer.cpp:236
void update_and_write(void)
Definition BatchServer.cpp:268
char read_message(void)
Definition BatchServer.cpp:135
void check_return(int ret, const std::string &func_name) const
Definition BatchServer.cpp:413
void event_loop(void)
Definition BatchServer.cpp:201
void push_requests(void)
Definition BatchServer.cpp:241
virtual ~BatchServerImp()
Definition BatchServer.cpp:114
BatchServerImp & operator=(const BatchServerImp &other)=delete
void register_handler(void) override
Definition BatchServer.cpp:304
void create_shmem(void) override
Definition BatchServer.cpp:283
BatchServerImp(const BatchServerImp &other)=delete
int server_pid(void) const override
Definition BatchServer.cpp:125
void write_message(char message)
Definition BatchServer.cpp:162
std::string server_key(void) const override
Definition BatchServer.cpp:130
void read_and_update(void)
Definition BatchServer.cpp:253
Definition geopm_pio.h:387