Load Balancer Simulator
CSCE 412 - Load Balancer Simulation Project
WebServer.cpp
Go to the documentation of this file.
1 
6 #include "WebServer.h"
7 
9  this->id = id;
10  this->currRequest = nullptr;
11  this->cyclesRemaining = -1; // no request
12 }
13 
15  // should NEVER be the case since we only take away from the active pool. but we handle just in case due to mem leaks
16  if (currRequest != nullptr){
17  delete currRequest;
18  currRequest = nullptr;
19  }
20 }
21 
23  return id;
24 }
25 
26 const bool WebServer::tick() {
27  if (currRequest == nullptr) {
28  return false;
29  }
30 
32 
33  if (cyclesRemaining <= 0) {
34  delete currRequest;
35  currRequest = nullptr;
36  return true;
37  }
38 
39  return false;
40 }
41 
43  currRequest = req;
44  cyclesRemaining = req->time;
45 }
Defines the WebServer class that processes requests assigned by the LoadBalancer.
int id
Unique identifier for this server.
Definition: WebServer.h:19
~WebServer()
Destructor. Cleans up any assigned request to prevent memory leaks.
Definition: WebServer.cpp:14
const bool tick()
Advances the server by one clock cycle.
Definition: WebServer.cpp:26
WebServer(int id)
Constructs a WebServer with the given ID.
Definition: WebServer.cpp:8
int cyclesRemaining
Clock cycles remaining to finish the current request.
Definition: WebServer.h:21
void assignRequest(Request *req)
Assigns a new request to this server for processing.
Definition: WebServer.cpp:42
int getId()
Returns the server's unique ID.
Definition: WebServer.cpp:22
Request * currRequest
Pointer to the currently assigned request, or nullptr if idle.
Definition: WebServer.h:20
Represents a single network request with source/destination IPs, processing time, and job type.
Definition: Request.h:14
int time
Processing time in clock cycles.
Definition: Request.h:17