71 size_t originalRequestSize_;
72 int lastEvaluationQueueSize_;
74 int requestsProcessed_;
76 int serversSubtracted_;
77 std::vector<std::unique_ptr<WebServer>> webServers_;
79 std::mutex coutMutex_;
80 std::mutex webServersMutex_;
81 std::mutex requestQueueMutex_;
82 std::thread loadBalancerThread_;
Defines the Queue class for managing requests in a FIFO manner.
Defines the Request class, representing a network request.
Defines the WebServer class for handling HTTP requests.
A class that represents a load balancer for distributing requests to web servers.
Definition LoadBalancer.h:29
void start()
Starts the load balancer, allowing it to begin processing requests.
Definition LoadBalancer.cpp:68
void evaluate()
Evaluates the current load and adjusts the number of active servers accordingly.
Definition LoadBalancer.cpp:100
~LoadBalancer()
Destructor to clean up resources used by the LoadBalancer.
Definition LoadBalancer.cpp:45
void work()
The main work loop of the load balancer that processes incoming requests.
Definition LoadBalancer.cpp:133
void stop()
Stops the load balancer and all managed web servers.
Definition LoadBalancer.cpp:77
void sendRequest(const Request &req)
Sends a request to the load balancer for processing.
Definition LoadBalancer.cpp:58
A class that represents a queue of Request objects.
Definition Queue.h:24
A class to represent a network request.
Definition Request.h:25