Load Balancer - CSCE 412 Project 3 1.0
Loading...
Searching...
No Matches
load_balancer.h
Go to the documentation of this file.
1#include <iostream>
2#include <queue>
3#include <string>
4#include <vector>
5
6#include "request.h"
7#include "web_server.h"
8
14
15#ifndef LOAD_BALANCER_H
16#define LOAD_BALANCER_H
17
24 public:
29
34
38 int time_elapsed = 0;
39
44
49
53 std::ostream& output_stream;
54
58 std::queue<Request> request_queue;
59
63 std::vector<WebServer*> servers;
64
72 LoadBalancer(int num_servers, int time_to_run, std::ostream& output_stream);
73
79
84 bool is_finished() { return time_elapsed >= time_to_run; }
85
91
96 void add_request(const Request& req) { this->request_queue.push(req); }
97
102 void handle_requests();
103
104 private:
109 std::string generate_random_ip();
110};
111
112#endif // LOAD_BALANCER_H
std::vector< WebServer * > servers
Vector holding pointers to all heap-allocated web servers.
Definition load_balancer.h:63
int time_to_run
Total number of cycles to run the load balancer.
Definition load_balancer.h:33
int min_request_time
Minimum duration (in cycles) for a request.
Definition load_balancer.h:43
int num_servers
Number of active web servers managed by the load balancer.
Definition load_balancer.h:28
bool is_finished()
Checks if the load balancer has finished running.
Definition load_balancer.h:84
int max_request_time
Maximum duration (in cycles) for a request.
Definition load_balancer.h:48
std::queue< Request > request_queue
Queue storing all pending requests.
Definition load_balancer.h:58
~LoadBalancer()
Destructor. Cleans up all heap-allocated web servers and logs final state.
Definition load_balancer.cpp:49
int time_elapsed
Number of cycles elapsed since the load balancer started.
Definition load_balancer.h:38
LoadBalancer(int num_servers, int time_to_run, std::ostream &output_stream)
Constructs a LoadBalancer with a given number of servers and run time.
Definition load_balancer.cpp:16
void handle_requests()
Main loop for handling requests and managing servers. Continues until the specified run time is reach...
Definition load_balancer.cpp:116
std::ostream & output_stream
Output stream for logging and status messages.
Definition load_balancer.h:53
void add_request(const Request &req)
Adds a request to the request queue.
Definition load_balancer.h:96
Request generate_random_request()
Generates a random request with random IPs and duration.
Definition load_balancer.cpp:101
Definition of the Request struct for representing network requests.
Represents a network request with source and destination IPs and a processing time.
Definition request.h:17
Declaration of the WebServer class for simulating a web server handling requests.