simplify Event class
This commit is contained in:
17
src/main.py
17
src/main.py
@@ -3,14 +3,9 @@ import random
|
||||
from heapq import heappush, heappop
|
||||
|
||||
class Event:
|
||||
def __init__(self, event_type, additional_options):
|
||||
self.event_type = event_type
|
||||
if event_type == "request":
|
||||
self.request = additional_options['request']
|
||||
elif event_type == "router_finish":
|
||||
self.request = additional_options['request']
|
||||
elif event_type == "process_finish":
|
||||
self.request = additional_options['request']
|
||||
def __init__(self, event_type, request):
|
||||
self.event_type = event_type # 'request', 'router_finish', 'process_finish'
|
||||
self.request = request
|
||||
|
||||
class Request:
|
||||
def __init__(self, category, arrival_time):
|
||||
@@ -53,7 +48,7 @@ class Simulation:
|
||||
category = random.randint(0, self.C-1) if self.C>1 else 0
|
||||
|
||||
request = Request(category, arrival_time)
|
||||
request_event = Event("request", {"request": request})
|
||||
request_event = Event("request", request)
|
||||
|
||||
heappush(self.event_queue, (arrival_time, request_event))
|
||||
|
||||
@@ -72,7 +67,7 @@ class Simulation:
|
||||
def router_process(self, request):
|
||||
if self.router_state == "idle":
|
||||
self.router_state = 'processing'
|
||||
router_finish = Event("router_finish", {"request": request})
|
||||
router_finish = Event("router_finish", request)
|
||||
finish_time = self.current_time + self.router_processing_time
|
||||
heappush(self.event_queue, (finish_time, router_finish))
|
||||
else:
|
||||
@@ -99,7 +94,7 @@ class Simulation:
|
||||
def process_request(self, request):
|
||||
interval = random.expovariate(self.service_rate)
|
||||
finish_time = self.current_time + interval
|
||||
process_finish = Event("process_finish", {"request": request})
|
||||
process_finish = Event("process_finish", request)
|
||||
heappush(self.event_queue, (finish_time, process_finish))
|
||||
|
||||
def process_request_finish(self, request):
|
||||
|
Reference in New Issue
Block a user