-
Notifications
You must be signed in to change notification settings - Fork 0
/
Empaquetador.py
74 lines (54 loc) · 2.4 KB
/
Empaquetador.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
from Server import *
from numpy import random
class Empaquetador:
my_id = None
#suposo
queue = None
size = None
def __init__(self, scheduler, empaquetador_id):
self.scheduler = scheduler
self.state = "idle"
self.my_id = empaquetador_id
self.size = 0
# estadistics
self.suma_taronges_intput = 0 #probably useless
self.n_caixes_enviades = 0
def crearConnexioAmbQueue(self, nou_queue):
self.queue = nou_queue
def arribenTaronges(self, n_taronges_arribadores, time):
if self.state != "idle":
print("Empaquetador " + self.my_id + " got arribenTaronges but it is on busy")
else:
self.size = self.size+n_taronges_arribadores
#estadístic
self.suma_taronges_intput = self.suma_taronges_intput + n_taronges_arribadores
#queue ja garanteix q no em passarà més del compte
if self.size == 50:
t_empaquetar = random.exponential(90, 1)
#print("random.exponential(90,1)[0] is "+ str(t_empaquetar[0]))
event_end_empaquetament = Event(self, 'END_EMPAQUETAMENT', time + t_empaquetar[0], None)
self.scheduler.afegirEsdeveniment(event_end_empaquetament)
event_end_empaquetament_queue = Event(self.queue, 'END_EMPAQUETAMENT', time + t_empaquetar[0], None)
self.scheduler.afegirEsdeveniment(event_end_empaquetament_queue)
self.state = "busy"
#(else em quedo a idle)
def tractarEsdeveniment(self, event):
if event.type == 'END_EMPAQUETAMENT':
if self.state != "busy":
print("Empaquetador " + self.my_id + " got END_EMPAQUETAMENT but it is on idle")
else:
self.processarEndEmpaquetament(event)
def processarEndEmpaquetament(self, event):
self.n_caixes_enviades = self.n_caixes_enviades + 1
#traces
if self.scheduler.enableTraces:
print("Empaquetador envia caixa "+str(self.n_caixes_enviades))
self.size = 0
self.state="idle"
def getSize(self):
return self.size
def getState(self):
return self.state
def recollirEstadistics(self):
print("Empaquetador: suma taronges input: "+str(self.suma_taronges_intput))
print("Empaquetador: NUMERO DE CAIXES ENVIADES: " + str(self.n_caixes_enviades))