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 connectionLost(self, reason): if self.message is not None: try: message = ACLMessage() message.set_message(self.message) except: print('Message not understood') print(self.message) return return message
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 tabele de agentes ativos """ message = ACLMessage() # carrega a mesagem recebida no objeto message message.set_message(line) # como o agente AMS só recebe mensagens self.handle_identif(loads(message.content))
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 lineReceived(self, line): """ Este método é executado sempre que uma mesagem é recebida pelo agente Sniffer """ message = ACLMessage() message.set_message(line) display_message(self.factory.aid.name, 'Mensagem recebida de: ' + str(message.sender.name)) # 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 message.sender.name: self.factory.ui.listWidget.clear() # loop for verifica se os agentes enviados na lista do AMS já estão # cadastrados na tabela do agente self.factory.table = loads(message.content) for agent in self.factory.table: serifFont = QtGui.QFont(None, 10, QtGui.QFont.Bold) item = QtGui.QListWidgetItem(str(agent) + '\n') item.setFont(serifFont) self.factory.ui.listWidget.addItem(item) # caso a mensagem recebida seja de um agente a lista de mensagens deste # agente é atualizada elif message.performative == ACLMessage.INFORM: display_message( self.factory.aid.name, 'Lista de Mensagens Recebida') agent = message.sender.name for i in self.factory.agents_messages: if agent == i: messages = self.factory.agents_messages[i] messages.extend(loads(message.content)) self.factory.agents_messages[i] = messages break else: self.factory.agents_messages[agent] = loads(message.content) print self.factory.agents_messages[agent] self.show_messages(self.factory.agents_messages[agent])
def connectionLost(self, reason): if self.message is not None: message = ACLMessage() message.set_message(self.message) return 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)