Load Balancer - CSCE 412 Project 3 1.0
Loading...
Searching...
No Matches
web_server.h
Go to the documentation of this file.
1
7
8#ifndef WEB_SERVER_H
9#define WEB_SERVER_H
10
11#include <iostream>
12
13#include "request.h"
14
19class WebServer {
20 public:
24 std::ostream& output_stream;
25
30
35
39 bool is_idle = true;
40
45
51 WebServer(int num_webserver, std::ostream& output_stream = std::cout)
53 output_stream << "Web server " << num_webserver << " opened." << std::endl;
54 }
55
60 output_stream << "Web server " << num_webserver << " closed." << std::endl;
61 }
62
67 void handle_request(Request request) {
68 is_idle = false;
70 current = request;
71 output_stream << "Web server " << num_webserver << ": request from "
72 << request.ip_in << " to " << request.ip_out
73 << " :: Duration " << request.time << " Cycles" << std::endl;
74 }
75
79 void pass_time() {
81 if (processed_time >= current.time) {
82 // enough time has passed, request is complete
83 output_stream << "Web server " << num_webserver
84 << " request complete. Opening for new request."
85 << std::endl;
86 is_idle = true;
87 processed_time = 0; // reset processed time for next request
88 }
89 }
90};
91
92#endif // WEB_SERVER_H
~WebServer()
Destructor. Logs server closure.
Definition web_server.h:59
void handle_request(Request request)
Assigns a new request to the server and begins processing.
Definition web_server.h:67
WebServer(int num_webserver, std::ostream &output_stream=std::cout)
Constructs a WebServer with a unique identifier and output stream.
Definition web_server.h:51
std::ostream & output_stream
Output stream for logging server activity.
Definition web_server.h:24
int num_webserver
Unique identifier for the web server instance.
Definition web_server.h:29
Request current
The current request being processed by the server.
Definition web_server.h:34
int processed_time
Number of cycles spent processing the current request.
Definition web_server.h:44
void pass_time()
Advances the server's processing by one cycle. Marks idle if done.
Definition web_server.h:79
bool is_idle
Indicates whether the server is idle and ready for a new request.
Definition web_server.h:39
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
int time
Number of cycles required to process the request.
Definition request.h:31
std::string ip_out
Destination IP address of the request.
Definition request.h:26
std::string ip_in
Source IP address of the request.
Definition request.h:21