Cade Royal CSCE 412 Project 3
Loading...
Searching...
No Matches
LoadBalancer.h
Go to the documentation of this file.
1
11#ifndef LOADBALANCER_H
12#define LOADBALANCER_H
13
14#include <string>
15#include <thread>
16#include <mutex>
17#include <vector>
18#include "Request.h"
19#include "Queue.h"
20#include "WebServer.h"
21
30public:
36 LoadBalancer(int numberServers);
37
42
46 void start();
47
51 void stop();
52
58 void sendRequest(const Request& req);
59
63 void evaluate();
64
68 void work();
69
70private:
71 size_t originalRequestSize_;
72 int lastEvaluationQueueSize_;
73 int numberServers_;
74 int requestsProcessed_;
75 int serversAdded_;
76 int serversSubtracted_;
77 std::vector<std::unique_ptr<WebServer>> webServers_;
78 Queue requestQueue_;
79 std::mutex coutMutex_;
80 std::mutex webServersMutex_;
81 std::mutex requestQueueMutex_;
82 std::thread loadBalancerThread_;
83 bool shouldStop_;
84};
85
86#endif // LOADBALANCER_H
87
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