Vlnový algoritmus Echo
Užitečné odkazy
Separátní logy pro každý proces
Ve třídě Node
implementujte separátní logger podobně jak je uvedeno níže.
1
2
3
4
5
6
self.logger = logging.getLogger(name_of_the_node)
hdlr = logging.FileHandler('/path/to/log/{}.log'.format(name), mode='w')
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
hdlr.setFormatter(formatter)
self.logger.addHandler(hdlr)
self.logger.setLevel(logging.INFO)
Algoritmus Echo
Vlnový, centralizovaný algoritmus pro libovolnou topologii. Algoritmus je pro neorientované sítě, je tedy nutné mít obousměrné kanály, případně dvojci kanálů (náš případ).
Token může být například tuple
s hodnotami (číslo, název uzlu z kterého byl poslán)
. Cílem je zjistit počet uzlů v topologii (decide v initiator
).
Pseudokód procesu initiator
:
1
2
3
4
5
6
7
8
for node in neighbors:
send(token, node)
while rec < len(neighbors):
recieve(token)
rec += 1
decide()
Pseudokód ostatních procesů:
1
2
3
4
5
6
7
8
9
10
11
12
13
token, source = recieve_any()
father = source
rec += 1
for node in neighbors:
if node is not father:
send(token, node)
while rec < len(neighbors):
recieve(token)
rec += 1
send(token, father)
Úkol
V simulátoru dist. sítě implementujte vlnový algoritmus Echo.