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