roundrobintest.cpp

来自「C++高级编程这本书所附的源代码」· C++ 代码 · 共 82 行

CPP
82
字号
#include "RoundRobin.h"#include <stdexcept>#include <iostream>using namespace std;//// Forward declaration for NetworkRequest// Implementation details omitted//class NetworkRequest {};//// Simple Host class that serves as a proxy for a physical machine.// Implementation details omitted.//class Host{public:  //  // Implementation of processRequest would forward  // the request to the network host represented by the  // object. Omitted here.  //  void processRequest(NetworkRequest& request) {} };//// Simple load balancer that distributes incoming requests// to its hosts using a round-robin scheme.//class LoadBalancer{public:  //  // Constructor takes a vector of hosts.  //  LoadBalancer(const vector<Host>& hosts);  ~LoadBalancer() {}  //  // Ship the incoming request to the next host using  // a round-robin scheduling algorithm  //  void distributeRequest(NetworkRequest& request);protected:  RoundRobin<Host> rr;};LoadBalancer::LoadBalancer(const vector<Host>& hosts){  // add the hosts  for (size_t i = 0; i < hosts.size(); ++i) {    rr.add(hosts[i]);  }}void LoadBalancer::distributeRequest(NetworkRequest& request){  try {    rr.getNext().processRequest(request);  } catch (out_of_range& e) {    cerr << "No more hosts.\n";  }}int main(int argc, char** argv){  vector<Host> hosts;  hosts.push_back(Host());  hosts.push_back(Host());  hosts.push_back(Host());  LoadBalancer lb(hosts);  NetworkRequest r;  lb.distributeRequest(r);  lb.distributeRequest(r);  lb.distributeRequest(r);  lb.distributeRequest(r);  lb.distributeRequest(r);  lb.distributeRequest(r);}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?