-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.py
74 lines (61 loc) · 1.86 KB
/
main.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
#!/usr/bin/python
# -*- coding: utf-8 -*
import route
import socket
import threading
import time
import sys
from netifaces import interfaces, ifaddresses, AF_INET
#from collections import dequee
#tabela = route.router()
tabela = None
#tabela = deque(maxlen = TAMANHO_TABELA) # create a deque with SIZE_BUFFER positions
PORT = 9999 #porta com a qual sera feita a conexao
timeout = 1 # DECLAREI UM VALOR ALEATORIO PARA TIMEOUT
TEMPO_PARA_REENVIO = 60 #periodo (em segundos) para enviar mensagem de rotina
class ThreadEnviaTabela (threading.Thread):
global tabela
def __init__(self):
threading.Thread.__init__(self)
def run(self):
tabela.enviaTabela()
#envia periodicamente seu vetor de distancias
class ThreadRecebeTabela (threading.Thread):
global tabela
def __init__(self):
threading.Thread.__init__(self)
def run(self):
tabela.recebeTabela()
#recebeTabela vai receber a tabela de um de seus vizinhos, em seguida enviará um ACK, e por fim mandará
# seu vetor de distâncias atualizado para outros,
class InterfacesInfo:
ifinfo = None
addr = None
netmask = None
def __init__(self, ifinfo, addr, netmask):
self.ifinfo = ifinfo
self.addr = addr
self.netmask = netmask
def main():
#PORT = parametro de entrada
global tabela
lista_Interfaces = list()
argumentos = sys.argv[1:]
host_name = ""
for i in xrange(len(argumentos)):
if argumentos[i] == '-h':
host_name = argumentos[i+1]
tabela = route.router(host_name)
for ifName in interfaces():
ifinfo = ifaddresses(ifName).setdefault(AF_INET)[0]
addr = ifinfo['addr']
netmask = ifinfo['netmask']
aux = InterfacesInfo(ifinfo, addr, netmask)
lista_Interfaces.append(aux)
tabela.preenche_viz(lista_Interfaces)
enviar = ThreadEnviaTabela()
enviar.start()
receber = ThreadRecebeTabela()
receber.start()
if __name__ == "__main__":
main()