crossroads

Git mirror of https://crossroads.e-tunity.com/
git clone git://git.finwo.net/app/crossroads
Log | Files | Refs | LICENSE

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