-
Notifications
You must be signed in to change notification settings - Fork 17
commum
O pacote commum apresenta classes utilitárias que são utilizadas por todos os módulos do programa.
O módulo Model.py contém as classes utilizadas para representar os objetos de rede, como roteadores, hosts e enlaces.
As objetos das classes Host, Router e Link possuem a capacidade de serem encodados em json. Também são providas classes Factory para a realizar a decodificação de strings em json nos objetos correspondentes.
Também existem as classe Topology, Group, Request e Event, que representam as principais mensagens que o servidor de topologia pode enviar ou receber.
Para criar um Router e gerar a string json correspondente:
from commum.Model import Router
router = Router()
router.id = 5
router.addPort(1)
router.addPort(2)
router.addPort(9)
router.addPort(8)
jsonMessage = router.toJson()
Para decodificar um string json em um objeto router:
from commum.Model import Router, RouterFactory
router = RouterFactory().decodeJson(jsonMessage)
O módulo util.py possui classes e funções utilitárias.
A classe LongMessageSocket pode ser utilizada para enviar e receber mensagens via sockets TPC/IPv4 de de tamanho indefinido e longas. Para utilizá-la, basta criar uma instância de LongMessageSocket passando como paramêtro para o construtor o socket python criado.
Através dos métodos send e recv, é possível se trocar mensagens de qualquer tamanho. Estes métodos lançam exceções do tipo ErrorRuntine quando a conexão é perdida.
Exemplo:
#!/usr/bin/env python
import socket
from commum.util import LongMessageSocket
#Criando o socket python padrão
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect( ('localhost', 8887) )
#Instâciando o LongMesssageSocket
clientSocket = LongMessageSocket(s)
message = 'This is a long message!' * 1000
clientSocket.send(message) #Enviando uma mensagem longa
print clientSocket.recv() #Recebendo uma mensagem
clientSocket.close() #Fechando o socket.