setdispatcmode.cc (1672B)
1 #include "config" 2 3 void Config::setdispatchmode (string s) { 4 if (s.substr(0, 2) == "e:") { 5 dmode.mode (Dispatchmode::m_external); 6 external_algorithm = s.substr (2); 7 } else if (s.substr (0, 9) == "external:") { 8 dmode.mode (Dispatchmode::m_external); 9 external_algorithm = s.substr(9); 10 } else if (s == "f" || s == "first-available") 11 dmode.mode (Dispatchmode::m_firstactive); 12 else if (s == "h" || s == "strict-hashed-ip") 13 dmode.mode (Dispatchmode::m_strict_hashed_ip); 14 else if (s == "H" || s == "lax-hashed-ip") 15 dmode.mode (Dispatchmode::m_lax_hashed_ip); 16 else if (s == "l" || s == "least-connections") 17 dmode.mode (Dispatchmode::m_leastconn); 18 else if (s == "r" || s == "round-robin") 19 dmode.mode (Dispatchmode::m_roundrobin); 20 else if (s == "L" || s == "weighted-load" ) { 21 timeval t1; 22 gettimeofday(&t1, NULL); 23 mt_srand(t1.tv_sec * t1.tv_usec); 24 dmode.mode (Dispatchmode::m_weighted_load); 25 } 26 else if (s.substr(0, 2) == "s:") { 27 dmode.mode (Dispatchmode::m_strict_stored_ip); 28 ipstoretimeout(setinteger(s.substr(2))); 29 } else if (s.substr(0, 17) == "strict-stored-ip:") { 30 dmode.mode (Dispatchmode::m_strict_stored_ip); 31 ipstoretimeout(setinteger(s.substr(17))); 32 } else if (s.substr(0, 2) == "S:") { 33 dmode.mode (Dispatchmode::m_lax_stored_ip); 34 ipstoretimeout(setinteger(s.substr(2))); 35 } else if (s.substr(0, 14) == "lax-stored-ip:") { 36 dmode.mode (Dispatchmode::m_lax_stored_ip); 37 ipstoretimeout(setinteger(s.substr(14))); 38 } else 39 throw Error("Bad dispatch mode -d" + s); 40 41 if (dmode.mode() == Dispatchmode::m_external && 42 external_algorithm.size() < 1) 43 throw Error("External algorithm handler missing"); 44 }