def connectionMade(self): """This method is always executed when a conection is established between an agent in client mode and an agent in server mode. """ # display_message(self.fact.agent_ref.aid.name, 'Connection Made') PeerProtocol.connectionMade(self)
def connectionMade(self): """This method is always executed when a conection is established between an agent in client mode and an agent in server mode. Now, nothing is made here. """ PeerProtocol.connectionMade(self)
def connectionMade(self): """Este método é executado sempre que uma conexão é executada entre um agente no modo cliente e um agente no modo servidor """ # fase 1 de identificação do agente com o AMS if self.fact.state == 'IDENT1': # cria a mensagem de registro no AMS msg = ACLMessage() msg.add_receiver( AID( name='AMS' + '@' + self.fact.ams['name'] + ':' + str(self.fact.ams['port']) )) msg.set_sender(self.fact.aid) msg.set_performative(ACLMessage.INFORM) msg.set_content(dumps(self.fact.aid)) # envia a mensagem ao AMS e atualiza a flag de identificação para a # fase 2 self.fact.state = 'IDENT2' self.send_message(msg.get_message()) # se não é a fase de identificação 1 então o agente tenta enviar as mensagens presentes # na fila de envio representada pela variável self.fact.messages else: # captura o host conectado ao agente por meio do metodo # self.transport.getPeer() PeerProtocol.connectionMade(self)
def connectionMade(self): """Este método é executado sempre que uma conexão é executada entre um agente no modo cliente e um agente no modo servidor """ # fase 1 de identificação do agente com o AMS if self.fact.state == 'IDENT1': # cria a mensagem de registro no AMS msg = ACLMessage() msg.add_receiver( AID(name='AMS@' + self.fact.ams['name'] + ':' + str(self.fact.ams['port']))) msg.set_sender(self.fact.aid) msg.set_performative(ACLMessage.INFORM) msg.set_content(dumps({'ref': 'IDENT', 'aid': self.fact.aid})) # envia a mensagem ao AMS e atualiza a flag de identificação para a # fase 2 self.fact.state = 'IDENT2' self.send_message(msg.get_message()) # se não é a fase de identificação 1 então o agente tenta enviar as mensagens presentes # na fila de envio representada pela variável self.fact.messages else: # captura o host conectado ao agente por meio do metodo # self.transport.getPeer() PeerProtocol.connectionMade(self)
def lineReceived(self, line): """Este método é executado sempre que uma mesagem é recebida pelo agente Sniffer """ # este método é executado caso a mensagem recebida tenha sido enviada pelo AMS # para atualização da tabela de agentes disponíveis if 'AMS' in line: message = ACLMessage() message.set_message(line) self.fact.ui.listWidget.clear() # loop for verifica se os agentes enviados na lista do AMS já estão # cadastrados na tabela do agente self.fact.table = loads(message.content) for agent in self.fact.table: serifFont = QtGui.QFont(None, 10, QtGui.QFont.Bold) item = QtGui.QListWidgetItem(str(agent) + '\n') item.setFont(serifFont) self.fact.ui.listWidget.addItem(item) # caso a mensagem recebida seja de um agente a lista de mensagens deste # agente é atualizada else: PeerProtocol.lineReceived(self, line)
def connectionMade(self): """ Este método é executado sempre que uma conexão é executada entre um cliente e um servidor """ # fase de identificação do agente com o AMS if self.fact.state == 'IDENT': # cria a mensagem de registro no AMS msg = ACLMessage() msg.add_receiver( AID(name='AMS' + '@' + self.fact.ams['name'] + ':' + str(self.fact.ams['port']))) msg.set_sender(self.fact.aid) msg.set_performative(ACLMessage.INFORM) msg.set_content(dumps(self.fact.aid)) # envia a mensagem ao AMS self.fact.state = 'READY' self.sendLine(msg.get_message()) self.transport.loseConnection() display_message(self.fact.aid.localname, "Mensagem de autenticacao enviada") else: PeerProtocol.connectionMade(self)
def lineReceived(self, line): """Quando uma mensagem é enviada ao AMS este método é executado. Quando em fase de identificação, o AMS registra o agente em sua tabela de agentes ativos """ # recebe uma parte da mensagem enviada PeerProtocol.lineReceived(self, line)
def dataReceived(self, data): """This method is always executed when a new message is received by the agent, whether the agent is in client or server mode. :param line: message received by the agent. """ PeerProtocol.dataReceived(self, data)
def __init__(self, fact): """ Este método Inicializa o objeto que implementa a classe AMS Parâmetros ---------- factory: factory do protocolo do AMS """ PeerProtocol.__init__(self, fact)
def send_message(self, message): """This method call the functionality send_message from the peer protocol Parameters ---------- message : ACLMessage Message object in the FIPA-ACL standard """ PeerProtocol.send_message(self, message)
def dataReceived(self, data): """This method is always executed when a new data is received by the agent, whether the agent is in client or server mode. Parameters ---------- data : bytes some data received by the agent. """ PeerProtocol.dataReceived(self, data)
def lineReceived(self, line): """Este método é executado sempre que uma nova mensagem é recebida pelo agente, tanto no modo cliente quanto no modo servidor :param line: mensagem recebida pelo agente """ # fase 2 de identificação do agente com o AMS. Nesta fase o agente AMS retorna uma mensagem # ao agente com uma tabela de todos os agentes presentes na rede if self.fact.state == 'IDENT2' and 'AMS' in line: message = ACLMessage() message.set_message(line) self.fact.table = loads(message.content) if self.fact.debug: display_message( self.fact.aid.name, 'Tabela atualizada: ' + str(self.fact.table.keys())) else: pass # alteração do estado de em fase de identificação # para pronto para receber mensagens self.fact.state = 'READY' self.fact.on_start() # self.transport.loseConnection() # caso o agente não esteja na fase 2 de identificação, então estará na fase # de recebimento de mensagens, e assim estará pronto para executar seus # comportamentos else: # este método é executado caso a mensagem recebida tenha sido # enviada pelo AMS para atualização da tabela de agentes disponíveis if 'AMS' in line: message = ACLMessage() message.set_message(line) self.fact.table = loads(message.content) if self.fact.debug: display_message( self.fact.aid.name, 'Tabela atualizada: ' + str(self.fact.table.keys())) else: pass self.transport.loseConnection() # recebe uma parte da mensagem enviada else: PeerProtocol.lineReceived(self, line)
def connectionLost(self, reason): """Este método executa qualquer coisa quando uma conexão é perdida :param reason: Identifica o problema na perda de conexão """ if self.message is not None: message = PeerProtocol.connectionLost(self, reason) # envia mensagem recebida para o AMS # montagem da mensagem a ser enviada ao AMS _message = ACLMessage(ACLMessage.INFORM) ams_aid = AID(name='AMS@' + self.fact.ams['name'] + ':' + str(self.fact.ams['port'])) _message.add_receiver(ams_aid) _message.set_sender(self.fact.aid) _message.set_content(dumps({'ref': 'MESSAGE', 'message': message})) # fim da montagem da mensagem # armazenamento da mensagem para envio self.fact.messages.append((ams_aid, _message)) # estabelecimento de conexão com AMS reactor.connectTCP(self.fact.ams['name'], int(self.fact.ams['port']), self.fact) # execução do comportamento Agent.react à mensagem # recebida self.message = None self.fact.react(message)
def connectionLost(self, reason): """This method executes anything when a connnection is lost. :param reason: Identifies the problem in the lost connection. """ if self.message is not None: message = PeerProtocol.connectionLost(self, reason) # executes the behaviour Agent.react to the received # message. self.message = None self.fact.react(message)
def connectionLost(self, reason): """This method is always executede when a connnection is lost. Parameters ---------- reason : twisted exception Identifies the problem in the lost connection. """ if self.message is not None: message = PeerProtocol.connectionLost(self, reason) self.message = None # executes the behaviour Agent.react to the received message. self.fact.react(message)
def connectionLost(self, reason): """Este método executa qualquer coisa quando uma conexão é perdida :param reason: Identifica o problema na perda de conexão """ if self.message is not None: message = PeerProtocol.connectionLost(self, reason) # armazena a mensagem recebida self.fact.messages_history.append(message) self.fact.recent_message_history.append(message) self.message = None self.fact.react(message)
def connectionLost(self, reason): if self.message is not None: message = PeerProtocol.connectionLost(self, reason) agent = message.sender.name for i in self.fact.agents_messages: if agent == i: messages = self.fact.agents_messages[i] messages.extend(loads(message.content)) self.fact.agents_messages[i] = messages break else: self.fact.agents_messages[agent] = loads(message.content) self.show_messages(self.fact.agents_messages[agent]) self.message = None
def connectionLost(self, reason): """Este método é executado sempre que uma conexão é perdida com o agente AMS. Isso geralmente acontece quando o recebimento de uma mensagem é encerrado """ if self.message is not None: message = PeerProtocol.connectionLost(self, reason) # carrega o conteudo da mensagem recebida content = loads(message.content) # se a mensagem for de identificação, lança o comportamento de # identificação if content['ref'] == 'IDENT': self.handle_identif(content['aid']) # se não, lança o comportamento de armazenamento de mensagens elif content['ref'] == 'MESSAGE': self.handle_store_messages(content['message'], message.sender) # reinicia a variável que armazena a mensagem recebida self.message = None
def __init__(self, fact): PeerProtocol.__init__(self, fact)
def send_message(self, message): PeerProtocol.send_message(self, message)
def lineReceived(self, line): """Este método é executado sempre que uma nova mensagem é recebida pelo agente, tanto no modo cliente quanto no modo servidor :param line: mensagem recebida pelo agente """ # TODO: Melhorar o armazenamento e a troca deste tipo de mensagem # entre o agente e o agente Sniffer # fase 2 de identificação do agente com o AMS. Nesta fase o agente AMS retorna uma mensagem # ao agente com uma tabela de todos os agentes presentes na rede if self.fact.state == 'IDENT2' and 'AMS' in line: message = ACLMessage() message.set_message(line) self.fact.table = loads(message.content) if self.fact.debug: display_message( self.fact.aid.name, 'Tabela atualizada: ' + str(self.fact.table.keys())) else: pass # alteração do estado de em fase de identificação # para pronto para receber mensagens self.fact.state = 'READY' self.fact.on_start() # self.transport.loseConnection() # caso o agente não esteja na fase 2 de identificação, então estará na fase # de recebimento de mensagens, e assim estará pronto para executar seus # comportamentos else: # este método é executado caso a mensagem recebida tenha sido enviada pelo AMS # para atualização da tabela de agentes disponíveis if 'AMS' in line: message = ACLMessage() message.set_message(line) self.fact.table = loads(message.content) if self.fact.debug: display_message( self.fact.aid.name, 'Tabela atualizada: ' + str(self.fact.table.keys())) else: pass self.transport.loseConnection() # este método é executado caso a mensagem recebida tenha sido enviada pelo Agente Sniffer # que requisita a tabela de mensagens do agente elif 'Sniffer' in line: # se for a primeira mensagem recebida do agente Sniffer, então seu endereço, isto é nome # e porta, é armazenado na variável do tipo dicionário # self.fact.sniffer message = ACLMessage() message.set_message(line) if self.fact.debug: display_message(self.fact.aid.name, 'Solicitação do Sniffer Recebida') else: pass self.sniffer_message(message) self.transport.loseConnection() # recebe uma parte da mensagem enviada else: PeerProtocol.lineReceived(self, line)
def lineReceived(self, line): """Este método é executado sempre que uma nova mensagem é recebida pelo agente, tanto no modo cliente quanto no modo servidor :param line: mensagem recebida pelo agente """ # TODO: Melhorar o armazenamento e a troca deste tipo de mensagem # entre o agente e o agente Sniffer # fase 2 de identificação do agente com o AMS. Nesta fase o agente AMS retorna uma mensagem # ao agente com uma tabela de todos os agentes presentes na rede if self.fact.state == 'IDENT2' and 'AMS' in line: message = ACLMessage() message.set_message(line) self.fact.table = loads(message.content) if self.fact.debug: display_message( self.fact.aid.name, 'Tabela atualizada: ' + str(self.fact.table.keys())) else: pass # alteração do estado de em fase de identificação # para pronto para receber mensagens self.fact.state = 'READY' self.fact.on_start() # self.transport.loseConnection() # caso o agente não esteja na fase 2 de identificação, então estará na fase # de recebimento de mensagens, e assim estará pronto para executar seus # comportamentos else: # este método é executado caso a mensagem recebida tenha sido enviada pelo AMS # para atualização da tabela de agentes disponíveis if 'AMS' in line: message = ACLMessage() message.set_message(line) self.fact.table = loads(message.content) if self.fact.debug: display_message( self.fact.aid.name, 'Tabela atualizada: ' + str(self.fact.table.keys())) else: pass self.transport.loseConnection() # este método é executado caso a mensagem recebida tenha sido enviada pelo Agente Sniffer # que requisita a tabela de mensagens do agente elif 'Sniffer' in line: # se for a primeira mensagem recebida do agente Sniffer, então seu endereço, isto é nome # e porta, é armazenado na variável do tipo dicionário # self.fact.sniffer message = ACLMessage() message.set_message(line) if self.fact.debug: display_message( self.fact.aid.name, 'Solicitação do Sniffer Recebida') else: pass self.sniffer_message(message) self.transport.loseConnection() # recebe uma parte da mensagem enviada else: PeerProtocol.lineReceived(self, line)