7 #include "socketreceiver.h"
8 #include "workerprocess.h"
27 double start()
override;
30 const std::string &key_path,
31 const std::string &password)
override;
44 if (++next_worker >= worker_proc.size())
59 return worker_config +
"\nworker_number " + std::to_string(i);
68 std::map<ServerSocket *, unsigned int> portMap;
70 unsigned int max_retries = 100;
71 unsigned int no_channels = 1;
72 std::vector<WorkerProcess *> worker_proc;
73 std::vector<TimePoint> worker_proc_health;
74 size_t next_worker = 0;
76 std::string worker_config;
77 size_t tot_no_workers;
Create worker (child) processes, and pass new connections evenly among them.
Definition: loadbalancer.h:17
void doPass(int fd, size_t wid, ServerSocket *srv)
Pass a connection to a worker process.
Definition: loadbalancer.cpp:77
void setMaxRetries(unsigned int n)
Max number of times to restart failed worker processes.
Definition: loadbalancer.h:63
double start() override
Definition: loadbalancer.cpp:39
void removeWorker(pid_t pid)
Remove a worker process.
Definition: loadbalancer.cpp:150
std::string workerConfig(unsigned int i=0) const
Return configuration of a worker process.
Definition: loadbalancer.h:58
void new_worker(size_t i)
Create a new worker process.
Definition: loadbalancer.cpp:118
void serverRemoved(ServerSocket *s) override
Definition: loadbalancer.cpp:63
void processFinished(int pid, int wstatus) override
Will be called to notify when an external process has terminated.
Definition: loadbalancer.cpp:113
void rotateNextWorker()
Definition: loadbalancer.h:43
bool tlsSetKey(ServerSocket *conn, const std::string &crt_path, const std::string &key_path, const std::string &password) override
Use SSL certificate for a listening socket.
Definition: loadbalancer.cpp:28
SocketConnection * newClient(int fd, const char *, uint16_t, ServerSocket *) override
Definition: loadbalancer.cpp:56
size_t nextWorker() const
Return a worker number.
Definition: loadbalancer.h:37
Listen on a single socket for incoming connections.
Definition: serversocket.h:15
This class implements low-level socket connection operations. Inherit from it to implement protocols ...
Definition: socketconnection.h:47
Read configuration from file or string.
Definition: taskconfig.h:44
The purpose of a task is to manage socket connections, and/or to execute timers.
Definition: task.h:39