37 void run(
int totalClockCycles);
84 void log(
const char* colorCode,
const char* msg)
const;
88 std::vector<std::unique_ptr<WebServer>>
servers_;
Defines the LoadBalancerConfig structure for simulation parameters.
Defines the Request structure for load balancer simulation.
Defines the WebServer class for processing requests.
void generateRequest()
Possibly generate a new request (based on probability).
void scaleServers()
Add or remove servers based on queue size thresholds.
std::uniform_int_distribution< int > timeDist_
std::string generateRandomIP()
Generate a random IP address string (x.x.x.x format).
LoadBalancerConfig config_
std::vector< std::unique_ptr< WebServer > > servers_
void assignRequests()
Assign queued requests to idle servers.
void log(const char *colorCode, const char *msg) const
Log a message with optional color code.
std::uniform_int_distribution< int > octetDist_
void run(int totalClockCycles)
Run the simulation for the specified number of clock cycles.
LoadBalancer(int initialServers, const LoadBalancerConfig &config)
Construct the load balancer with initial servers and config.
void prefillQueue(int count)
Prefill the request queue with random requests.
std::uniform_int_distribution< int > jobTypeDist_
std::bernoulli_distribution requestDist_
void printSummary(int initialServerCount) const
Print simulation summary statistics.
std::queue< Request > requestQueue_
Request createRandomRequest()
Create a random request with random IPs and processing time.
int requestsAddedToQueue_
Configuration parameters for the load balancer simulation.
Represents a single request/job in the load balancer simulation.