Skip to content
caioviel edited this page Oct 23, 2011 · 5 revisions

Pacote commum

O pacote commum apresenta classes utilitárias que são utilizadas por todos os módulos do programa.

Model.py

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.

Exemplos de Utilização

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)

Util.py

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.

Clone this wiki locally