crossroads

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

backend (2676B)


      1 #ifndef _BACKEND_
      2 #define _BACKEND_
      3 
      4 #include "sys/sys"
      5 #include "backenddef/backenddef"
      6 #include "fdset/fdset"
      7 #include "error/error"
      8 #include "profiler/profiler"
      9 #include "backendcheck/backendcheck"
     10 #include "httpbuffer/httpbuffer"
     11 #include "dnsentry/dnsentry"
     12 #include "SocketHandling/socket/socket"
     13 
     14 using namespace std;
     15 
     16 class Backend {
     17 public:
     18     Backend();
     19     Backend(BackendDef const &b);
     20     virtual ~Backend();
     21     
     22     bool connect();
     23     void markconnecterror();
     24     
     25     Socket &sock() 		       	{ return clsocket; }
     26     
     27     void check();
     28     string description() const;
     29     
     30     bool available() const;
     31     string availablestr() const;
     32     
     33     bool live() const			{ return islive; };
     34     void live(bool state);    
     35     string livestr() const;
     36     
     37     void up(bool state);
     38     bool up() const			{ return isup; }
     39     string upstr() const;
     40     
     41     string const &server() const 	{ return bdef.server(); }
     42     void server(string s)		{ bdef.server(s); }
     43 
     44     int port() const 			{ return bdef.port(); }
     45     void port(int p)			{ bdef.port(p); }
     46 
     47     unsigned maxconn() const 		{ return bdef.maxconn(); }
     48     void maxconn(unsigned m)		{ bdef.maxconn(m); }
     49 
     50     string const &hostmatch() const	{ return bdef.hostmatch(); }
     51     void hostmatch(string const &s)	{ bdef.hostmatch(s); }
     52     regex_t const &hostregex() const	{ return bdef.hostregex(); }
     53 
     54     string const &urlmatch() const	{ return bdef.urlmatch(); }
     55     void urlmatch(string const &u)	{ bdef.urlmatch(u); }
     56     regex_t const &urlregex() const	{ return bdef.urlregex(); }
     57 
     58     unsigned weight() const		{ return bdef.weight(); }
     59     void weight(unsigned w)		{ bdef.weight(w); }
     60     unsigned adjustedweight() const	{ return bdef.adjustedweight(); }
     61 
     62     unsigned connections() const 	{ return nconn; }
     63     unsigned connecterrors() const	{ return nconnerr; }
     64     
     65     double bytesserved() const		{ return bytes_served; }
     66     unsigned clientsserved() const	{ return totconn; }
     67 
     68     double loadavg() const		{ return loadaverage; }
     69     void loadavg(double l)		{ loadaverage = l; }
     70 
     71     void addbytes(unsigned n);
     72     void startconnection();
     73     void endconnection();    
     74 
     75     BackendDef const &backenddef() const {
     76 	return bdef;
     77     }
     78 
     79     BackendCheck const &backendcheck() {
     80 	return bdef.backendcheck();
     81     }
     82     void backendcheck(BackendCheck const &b) {
     83 	bdef.backendcheck(b);
     84     }
     85 
     86     void balancerindex(int i)		{ index = i; }
     87     int balancerindex() const		{ return index; }
     88     
     89 
     90 private:
     91     BackendDef bdef;
     92     bool islive;
     93     bool isup;
     94     Socket clsocket;
     95     unsigned nconn, totconn, nconnerr;
     96     double bytes_served;
     97     double loadaverage;
     98     DNSEntry dnsentry;
     99     int index;
    100 };
    101 
    102 #endif