Bredbandskollen CLI  1.2
Asynchronous network task engine
workerprocess.h
1 // Copyright (c) 2018 IIS (The Internet Foundation in Sweden)
2 // Written by Göran Andersson <initgoran@gmail.com>
3 
4 #pragma once
5 
6 #include <vector>
7 
8 class SocketReceiver;
9 
22 public:
24  WorkerProcess(pid_t pid, std::vector<SocketReceiver *> &receivers) :
25  worker_pid(pid),
26  channels(receivers) {
27  }
28 
29  ~WorkerProcess() {
30  for (auto &conn : channels)
31  conn->peerDead();
32  }
33 
35  pid_t pid() const {
36  return worker_pid;
37  }
38 
40  SocketReceiver *channel(unsigned int n=0) const {
41  return channels.at(n);
42  }
43 
45  size_t noChannels() const {
46  return channels.size();
47  }
48 
49 private:
50  pid_t worker_pid;
51  std::vector<SocketReceiver *> channels;
52 };
Pass sockets and messages between processes.
Definition: socketreceiver.h:21
Used by LoadBalancer to manage child processes.
Definition: workerprocess.h:21
SocketReceiver * channel(unsigned int n=0) const
Return a channel.
Definition: workerprocess.h:40
size_t noChannels() const
Return number of channels.
Definition: workerprocess.h:45
pid_t pid() const
Return the PID of the worker process.
Definition: workerprocess.h:35
WorkerProcess(pid_t pid, std::vector< SocketReceiver * > &receivers)
Create worker to run in newly forked process pid.
Definition: workerprocess.h:24