balancer (1420B)
1 #ifndef _BALANCER_ 2 #define _BALANCER_ 3 4 #include "sys/sys" 5 #include "memory/memory" 6 7 #include "backend/backend" 8 #include "backenddef/backenddef" 9 #include "config/config" 10 #include "fdset/fdset" 11 #include "error/error" 12 #include "SocketHandling/socket/socket" 13 14 // Check ups of back ends and the web interface 15 #include "Checkers/wakeupthread/wakeupthread" 16 #include "Checkers/checkupthread/checkupthread" 17 #include "webinterface/webinterface" 18 19 using namespace std; 20 21 class Balancer { 22 public: 23 Balancer (); 24 void init(); 25 void addbackend(BackendDef const &b); 26 void addbackend(Backend const &b, 27 bool is_up = true, bool is_live = true, 28 bool do_check = true); 29 void deletebackend(unsigned i); 30 void serve(); 31 32 unsigned nbackends() { return backends.size(); } 33 Backend &backend (unsigned i) { return backends[i]; } 34 bool terminate() const { return term; } 35 void terminate (bool t) { term = t; } 36 bool report() const { return rep; } 37 void report (bool r) { rep = r; } 38 void restart(bool t) { rest = t; } 39 bool restart() const { return rest; } 40 long requestnr() const { return request_nr; } 41 42 unsigned connections(); 43 44 private: 45 void init_tcp (); 46 void init_fd (); 47 48 Socket server_fd; 49 long request_nr; 50 vector<Backend> backends; 51 bool term; 52 bool rep; 53 bool rest; 54 Webinterface *webinterface; 55 }; 56 57 extern Balancer balancer; 58 59 #endif