ATP

ATP é o protocolo de transferência de agentes. É um protocolo de aplicação simples que permite transferir agentes de modo independente do sistema.

Quando um aglet invoca o método dispatch, passa como argumento um URL que utiliza ATP como protocolo:

   this.dispatch(new URL("atp://algum.host/algum.lugar"));
    

Como resultado dessa invocação, o aglet "desaparece" da máquina onde está executando no momento e reaparece na máquina especificada, retomando a execução na máquina virtual Java correspondente ao contexto (ou lugar) especificado.

Por trás dessa transferência está o protocolo ATP. Uma requisição ATP consiste de uma linha de requisição (request), campos de cabeçalho e um conteúdo. A linha request especifica o método de requisição; quatro métodos são definidos em ATP:

dispatch
Solicita que o sistema de agentes destino reconstrua a o agente a partir do conteúdo da requisição e inicie sua execução. Em caso de sucesso, o sistema enviante termina o agente local e libera quaisquer recursos ocupados por ele.
retract
Solicita que o sistema de agentes destino envie o agente especificado de volta para o sistema origem, que será responsável por sua reconstrução e reinício de execução.
fetch
Similar a GET de HTTP, solicita que o sistema endereçado recupere e envie a informação identificada; normalmente, um arquivo .class para permitir o carregamento remoto de classes Java.
message
Usado para passar uma mensagem para um agente identificado por um agent-id e para obter um valor de retorno em resposta.

Na especificação do URL para ATP, a porta assumida como default é a 434, reservada para agentes móveis. Em sistemas que restrigem o acesso a portas notáveis apenas para o sistema operacional e super-usuário, a porta sugerida (que deve ser explicitada na especificação do URL) é a número 10434.


© Ivan L. M. Ricarte
DCA/FEEC/UNICAMP

Last modified: Mon Dec 4 15:07:21 BRST 2000