示例#1
0
文件: agent.py 项目: tbfreitas/Pade
    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)
示例#2
0
    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)
示例#3
0
 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)
示例#4
0
    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)
示例#5
0
    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)
示例#6
0
    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
示例#7
0
    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
示例#8
0
    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