91
O Modelo Aglet O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Embed Size (px)

Citation preview

Page 1: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

O Modelo AgletO Modelo Aglet

Elementos Básicos

Modelo de Eventos

Modelo de Comunicação

Page 2: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

IntroduçãoIntrodução

O Modelo de Objeto Aglet

Projetado para se beneficiar das características de agentes em Java, enquanto sobrepujando algumas das deficiências no sistema de linguagem.

Um agente móvel é um objeto móvel que tem sua própria thread de controle, é dirigido a evento e se comunica por passagem de mensagem.

Page 3: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Elementos BásicosElementos Básicos

O modelo aglet define um conjunto de abstrações e o comportamento necessário para influenciar a tecnologia de agentes móveis em redes de longa distância, como a Internet, ou em redes locais que sigam a mesma tecnologia.

Page 4: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Abstrações ChavesAbstrações Chaves

Aglet

Proxy

Contexto

Identificador

Page 5: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

AgletAglet

Um aglet é um objeto Java móvel que visita hosts habilitados à aglets, em uma rede de computadores

Page 6: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

ProxyProxy

Um proxy é um objeto representante de um aglet, que serve como protetor do aglet, quanto ao acesso direto a seus métodos públicos.

Provê transparência de localização para o aglet, isto é, oculta o aglet de sua localização real. Isto significa que um aglet e seu proxy podem estar separados, de modo que um proxy local oculta o afastamento do aglet.

Page 7: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

ContextoContexto

Um contexto é um lugar de trabalho do aglet.

Corresponde aproximadamente ao conceito de “place”.

O ambiente no qual os aglets operam.O sistema operacional para o aglet.Lugar no qual um aglet pode executar.

Page 8: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

ContextoContexto

É um objeto estacionário que provê o meio para manter e gerenciar aglets rodando em um ambiente de execução uniforme, onde o host é seguro contra aglets maliciosos.

Page 9: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

ContextoContexto

É um nodo em uma rede que pode rodar múltiplas “engines” e cada “engine” pode ter múltiplos contextos.

Page 10: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Relação entre Host, “Engine” e ContextoRelação entre Host, “Engine” e Contexto

ContextoA

ContextoA

ContextoC

ContextoC

Contexto

“Engine”Processo Servidor

“Engine”Processo Servidor

Host

Rede

B

Page 11: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

ContextosContextos

Contextos são nomeados e assim podem ser localizados pela combinação do endereço da sua “engine” ( processo servidor) e de seu nome.

Page 12: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

IdentificadorIdentificador

Um identificador é ligado a cada aglet.

É globalmente único e imutável durante o tempo de vida do aglet.

Page 13: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Comportamento suportado pelo Comportamento suportado pelo Modelo AgletModelo Aglet

Conjunto mínimo de operações para criar e gerenciar um ambiente de agentes móveis distribuído:

Existem dois modos para a proporcionar vida a um aglet:

(a) instanciada a partir de sua criação (creation); (b) copiado de um aglet existente (cloning).

Page 14: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Comportamento suportado pelo Comportamento suportado pelo Modelo AgletModelo Aglet

Para controlar a população de aglets, pode-se destruí-los (disposal).

Aglets são móveis em dois diferentes modos: ativamente e passivamente.

Page 15: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Abordagem Ativa da Abordagem Ativa da Mobilidade Mobilidade

É caracterizada por um aglet migrando ele próprio a partir de seu host corrente para um host remoto.

( “dispatching” = despachando, expedindo)

Page 16: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Abordagem Passiva da Abordagem Passiva da MobilidadeMobilidade

Um host remoto puxa um aglet, longe de seu host corrente.

( “retracting” = retirar, recolher )

Page 17: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

RecursosRecursos

Quando aglets estão rodando, eles ocupam recursos.

Para reduzir o consumo de recurso, aglets podem dormir temporariamente, liberando o recurso

( “deactivation” ), e mais tarde pode ser trazido de volta ao modo rodando ( “activation”).

Page 18: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Troca de InformaçãoTroca de Informação

Múltiplos aglets podem trocar informação para realizar uma determinada tarefa.

( “messaging” )

Page 19: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Aglet APIAglet API

Fácil para aprender a usar e suficientemente abrangente e robusta para aplicações reais.

A lista seguinte resume as operações fundamentais de um aglet:

“creation”, “cloning”, “dispatching”, “retraction”, “activation”, “deactivation” “disposal”.

Page 20: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Operações FundamentaisOperações Fundamentais

“Creation” ( NOVO AGLET CRIADO )Toma lugar em um contexto.É atribuído um identificador ao novo aglet.É inserido dentro do contexto e inicializado.O aglet inicia a execução logo que ele tem

inicializado bem sucedidamente.

Page 21: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Operações FundamentaisOperações Fundamentais

“Cloning”Produz uma cópia quase idêntica do aglet

original, no mesmo contexto.A única diferença é o identificador

atribuído e o fato que a execução reinicia no novo aglet.

Threads de execução não são clonadas.

Page 22: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Operações FundamentaisOperações Fundamentais

“Dispatching”Expedindo um aglet de um contexto a

outro, ele será removido do contexto corrente e inserido no contexto destino, onde ele reiniciará a execução (thread de execução não migra).

O aglet é “puched” a seu novo contexto.

Page 23: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Operações FundamentaisOperações Fundamentais

“Retraction”

A retração de um aglet “pull” (puxa) ele a partir do seu contexto corrente e o insere dentro do contexto, no qual a retração foi solicitada.

Page 24: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Operações FundamentaisOperações Fundamentais

“Activation” and “Deactivation”

A desativação de um aglet corresponde a, temporariamente, a parar sua execução e armazenar seu estado em memória secundária.

A ativação de um aglet restaurará ele no mesmo contexto.

Page 25: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Operações FundamentaisOperações Fundamentais

“Disposal”

O “disposal de um aglet parará sus execução e removerá ele de seu contexto corrente.

Page 26: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

O Ciclo de Vida de um AgletO Ciclo de Vida de um Aglet

Aglet Aglet

ClassFile

Disk Storage

Dispatch

Retract

Clone

Create Deactivate Activate

DisposeContext A Context B

Page 27: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

O Modelo de Eventos para AgletsO Modelo de Eventos para Aglets

O modelo de programação aglet é baseado em evento.

O modelo permite ao programador “plug in” listerners customizados (especializados) dentro de um aglet.

Listeners detém eventos particulares no ciclo de vida de um aglet e permite ao programador tomar uma ação, por exemplo, quando um aglet está sendo despachado.

Page 28: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

O Modelo de EventosO Modelo de Eventos

Existem três tipos de listeners :

Clone ListenerMobility ListenerPersistence Listener

Page 29: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

O Modelo de EventosO Modelo de Eventos

Clone ListenerOuve eventos de clonagem.Customizar este listener para tomar ações

específicas quando: (a) um aglet é para ser clonado, (b) quando o clone é realmente criado, ou(c) após a clonagem ter tomado lugar.

Page 30: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

O Modelo de EventosO Modelo de Eventos

Mobility Listener

Ouve eventos de mobilidade. Usa-se este listener para tomar ação quando: (a) um aglet é despachado para outro contexto; (b) um aglet é “retracted” de um outro contexto; (c) o aglet, realmente, chega em um novo

contexto.

Page 31: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

O Modelo de EventosO Modelo de Eventos

Persistence ListenerOuve para eventos persistentes.Permite ao programador tomar ação

quando:(a) um aglet é para ser desativado, ou(b) após ele ter sido ativado.

Page 32: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Relacionamento entre um Aglet e Relacionamento entre um Aglet e seus Listenersseus Listeners

AgletAglet MobilityListenerMobilityListener

CloneListenerCloneListener

PersistenceListenerPersistenceListener

Clone EventsClone Events

Mobility EventsMobility Events

Persistence EventsPersistence Events

Page 33: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

O Modelo de Comunicação AgletO Modelo de Comunicação Aglet

Aglets se comunicam por passagem de messagem.

A facilidade de passar mensagem permite aglets a criar e trocar mensagens em modos flexíveis.

Por default, um aglet não manipula mensagens concorrentemente.

Page 34: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

O Modelo de Comunicação AgletO Modelo de Comunicação Aglet

Isto significa que todas as mensagens são manipuladas uma-a-uma.

São componentes do modelo de comunicação:

- Aglet , AgletProxy - Message - Future Reply - Reply Set

Page 35: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

O Modelo de Comunicação do AgletO Modelo de Comunicação do Aglet

Aglet/AplicationAglet/Aplication ProxyProxy AgletAgletMessage

Reply

Message

Reply

Page 36: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

O Modelo de Comunicação AgletO Modelo de Comunicação Aglet

Message. Uma mensagem é um objeto trocado entre aglets. É permitido a passagem de mensagem assícrona,

bem como, a passagem de mensagem síncrona entre aglets.

Passagem de mensagem pode ser usado por aglets para colaborar e trocar informação em um modo acoplado fracamente.

Page 37: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

O Modelo de Comunicação AgletO Modelo de Comunicação Aglet

Future replay

É usado em envio de mensagem assíncrono, como uma manipulação que permite o sender de uma mensagem receber um reply assincronamente.

Page 38: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

O Modelo de Comunicação AgletO Modelo de Comunicação Aglet

Reply Set

Um reply set pode conter múltiplos reply futuros e é usado para obter resultados quando também torna-se disponíveis.

Com este objeto, o sender pode também escolher para obter o primeiro resultado e ignorar respostas subsequentes.

Page 39: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Aglet Package – The Aglet APIAglet Package – The Aglet API

É um pacote Java consistindo de classes e interfaces. Mais notadamente com as classes:

- Aglet - AgletProxy - AgletContext - Message - FutureReply - AgletID

Page 40: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Aglet Package – The Aglet APIAglet Package – The Aglet API

Usa-se para criar e operar aglets. Contém métodos: - inicializar um aglet - manipular mensagens - despachar ou expedir um aglet - desativar ou ativar - retirar ou recolher (retracting) - clonagem - desfazer-se de um aglet (disposing)

Page 41: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

API AgletAPI Aglet

SimplesFlexívelÉ um pacote Java consistindo de classes e

interfaces.Nome completo do pacote:

com.ibm.aglet

Page 42: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Classe AgletClasse Aglet

É a classe-chave da API.Classe abstrata que o desenvolvedor usa

como classe base para criar agltes customizados.

Métodos para controlar seu próprio ciclo de vida: cloning, dispatching, deactivating, e disposing o próprio aglet

Page 43: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Classe AgletClasse Aglet

Métodos para serem sobrepostos em suas subclasses pelo programador do aglet e provê o programador com os necessários “ganchos” para customizar o comportamento do aglet.

Page 44: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Classe AgletClasse Aglet

Esses métodos são invocados pelo sistema quando certos eventos tomam lugar no ciclo de vida de um aglet.

Page 45: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Classe AgletClasse Aglet

Método dispatch: causa um aglet mover do host local ao host de destino, que é dado como argumento.

Método Deactivate: permite um aglet ser armazenado em memória secundária.

Page 46: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Classe AgletClasse Aglet

Método clone gera uma nova instância do aglet, a qual tem o estado do aglet original.

A classe Aglet é tambme usada para acessar os atributos associados com um aglet.

O objeto AgletInfo, o qual pode ser obtido por getAgletInfo(), contém os atributos embutidos do aglet, tais como seu tempo de criação e o código-base.

Page 47: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Classe AgletClasse Aglet

Como também seus atributos dinâmicos, tais como seu tempo de chegada e o endereço do seu contexto corrente.

Como criar um aglet customizado ?

1. Importar o pacote aglet, que contém todas definições da API Aglet

Page 48: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Classe AgletClasse Aglet

Seja definir uma classe aglet MyFirstAglet, que herda da classe Aglet.

import com.ibm.aglet.*;

public class MyFirstAglet extends Aglet {

// Put os métodos do aglet aqui

}

Page 49: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Classe AgletClasse Aglet

O aglet precisa fazer inicializações específicas quando ele é criado: sobrepor seu método onCreation().

public void onCreation(Object init) {

// Fazer alguma inicialização aqui ...

}

Page 50: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Classe AgletClasse Aglet

Quando um aglet é criado ou quando ele chega em um novo contexto, é dado a ele, sua própria thread de execução através de uma invocação de sistema de seu método run().

Page 51: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Classe AgletClasse Aglet

Esta invocação é um meio de dar ao aglet um grau de autonomia.

O método run() é chmado toda vez que o aglet chega em ou é ativado em um novo contexto.

O método run() torna-se o principal ponto de entrada para a thread de execução do aglet.

Page 52: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Classe AgletClasse Aglet

Sobrepondo-se esse método, podemos customizar o comportamento autônomo do aglet.

public void run( ) {

// Fazer alguma coisa aqui. ...

}

Page 53: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Classe AgletClasse Aglet

Pode-se usar o método run() para deixar o aglet “dispatch” ele próprio para um contexto remoto. O aglet chama seu método dispatch com a URL do host remoto como argumento.

Page 54: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Classe AgletClasse Aglet

A URL deve especificar o host e os nomes de domínio do contexto-destino e o protocolo (ATP) usado para tranferir o aglet na rede.

ATP : Agent Tranfer Protocol, desenvolvido para agentes móveis na Internet.

A URL pode conter o nome do contexto remoto (se mais do que um contexto é suportado no servidor remoto).

Page 55: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Classe AgletClasse Aglet

Se nenhum nome de contexto é especificado, o aglet se moverá para o contexto default.

dispatch(new URL(“atp://some.host.com/context”));

Page 56: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Classe AgletClasse Aglet

O que acontece quando dispatch() é executado ?

O aglet desaparece da máquina-fonte e reaparece, com o mesmo estado do objeto, na máquina-destino especificada.

Primeiro, a serialização do objeto é usada para preservar a informasção de estado do aglet.

Page 57: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Classe AgletClasse Aglet

Serialização é a representação sequencial em bytes do aglet.

Depois, o resultado da serialização é passado à camada de transferência, a qual traz o aglet (byte code e informação de estado) sobre a rede.

Finalmente, os bytes transferidos são deserializados, para remontar o estado do aglet.

( ver a figura seguinte )

Page 58: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Transferência de um AgletTransferência de um Aglet

SendingSending

State

Byte Code

Host

Host

ReceivingReceiving

State

Byte Code

Host

Host

1

2

3

Page 59: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Interface AgletProxyInterface AgletProxy

AgletProxy é uma interface componente da API Aglet.

Age como o manuseador de um aglet e provê um modo comum de acessar o aglet.

Page 60: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Interface AgletProxyInterface AgletProxy

Porque um aglet tem diversos métodos públicos que não podem ser acessados diretamente, por outro aglet, por razões de segurança, qualquer aglet que deseje se comunicar with outros aglets, deve primeiro obter o proxy e então interage através desta interface.

Page 61: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

AgletProxyAgletProxy

O AgletProxy age como um objeto-escudo que protege o aglet de aglets maliciosos.

Quando invocado, o objeto AgletProxy consulta o gerenciador de segurança para determinar se o contexto de execução corrente é permitido executar o método requisitado.

Page 62: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

AgletProxyAgletProxy

Um outro papel do AgletProxy é prover o aglet com transparência de localização.

Se o aglet reside em um host remoto, o proxy direciona os requsts ao host remoto e retorna o resultado ao host local.

Page 63: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

AgletProxyAgletProxy

Criando-se um aglet é uma maneira de se obter um proxy.

O método AgletContext.createAglet retornará o proxy do aglet criado recentemente.

Outros métodos que retornam proxy são:

Page 64: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

AgletProxyAgletProxy

AgletContex.retractAglet

AgletProxy.clone

AgletProxy.dispatch

Outras maneiras de obtenção de proxies de aglets existentes:

Page 65: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

AgletProxyAgletProxy

O aglet pode obter seu próprio proxy por usar Aglet.getProxy().

Pode-se recuperar uma enumeração de proxies em um contexto por chamar AgletContext.getAgletProxies.

Page 66: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

AgletProxyAgletProxy

Pode-se obter um proxy para um dado identificador de aglet via o método AgletContext.getAgletProxy().

Pode-se obter um aglet proxy via passagem de mensagem. Um objeto AgletProxy pode ser colocado dentro de um objeto Message como um argumento e enviado ao aglet localmente ou remotamente.

Page 67: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

AgletProxyAgletProxy

Pode-se colocar um objeto AgletProxy dentro dema propriedade de contexto, por usar o AgletContext.setProperty e compartilhar o objeto proxy.

O framework dos Aglets provê uma implementação do AgletProxy interface, assim o programador não necessita implementar esta interface.

Page 68: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Interface AgletContextInterface AgletContext

Um contexto de aglet é o equivalente de um ambiente de execução do aglet.

Um aglet funciona a maior parte de sua vida em um contexto do aglet.

Ele é criado em um contexto. Ele “dorme” lá. Ele “morre” lá.

Page 69: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Interface AgletContextInterface AgletContext

Quando um aglet viaja em uma rede, ele se move de um contexto ao outro.

O contexto é um ambiente de execução uniforme para aglets em um mundo heterogêneo.

Page 70: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Interface AgletContextInterface AgletContext

Um aglet usa a interface AgletContex para obter informação sobre seu ambiente e enviar mensagens ao ambiente, que inclui outros aglets correntemente ativos naquele ambiente.

Page 71: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Interface AgletContextInterface AgletContext

Provê meios para manter e gerenciar aglets rodando em um ambiente, onde o host é seguro contra aglets maliciosos.

A classe Aglet tem um método para ganhar acesso a seu contexto corrente:

contex = getAgletContext();

Page 72: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Interface AgletContextInterface AgletContext

Com acesso ao contexto, o aglet pode criar novos aglets:

context.createAglet( ... );

E pode retract (pull) aglets localizados remotamente, dentro do contexto corrente:

context.retractAglet(remoteContextURL,

agletID);

Page 73: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

AgletContextAgletContext

O aglet pode também recuperar uma lista (enumeração) de proxies de seus aglets membros presentes no mesmo contexto:

proxies = context.getAgletProxies();

Uma implementação da interface AgletContext é provida pelo pacote Aglet.

Page 74: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Classe MessageClasse Message

Aglets se comunicam por trocar objetos da classe Message.

Um campo de string nomeado “kind” distingue mensagens.

O campo é estabelecido quando a mensagem é criada.

Page 75: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Classe MessageClasse Message

O segundo parâmetro do construtor da mensagem é um argumento opcional.

Message myName = new Message(“my name”, “Jacob”);

Message yourName = new Message(“your name ?”);

Page 76: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Simple MessagingSimple Messaging

AgletProxy

Message

HandlerSendMessage()

Page 77: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Diagrama de Colaboração para Diagrama de Colaboração para Criação de AgletCriação de Aglet

Run()Run()

onCreation() onCreation()

Aglet()Aglet()

createAglet() createAglet()

Page 78: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Diagrama de Colaboração para Diagrama de Colaboração para Clonagem de Aglet Clonagem de Aglet

run()run()

onCloning()onCloning()

onCloned() onCloned()

run()run()

onClone()onClone()

run()run()

Original

Clone

Page 79: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Diagrama de Colaboração para Diagrama de Colaboração para Aglet Dispatch Aglet Dispatch

run()run()

dispatch()dispatch()

onDispatching()onDispatching()

onArrival()onArrival()

run()run()

Origem

Destination

Page 80: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Diagrama de Colaboração para Diagrama de Colaboração para Aglet RetractionAglet Retraction

retractAglet()retractAglet()

onArrival()onArrival()

run()run()

run()run()

onReverting()

Local

Remote

Page 81: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

PersistênciaPersistência

Aglet ContextAglet Context

Deactivate Activate

Page 82: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Diagrama de Colaboração para Liberar Diagrama de Colaboração para Liberar um Agletum Aglet

dipose()dipose()

onDispose()onDispose()

run()run()

Page 83: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Classe MessageClasse Message

Tendo criado os objetos-mensagens, pode-se enviá-los para um aglet por invocar um dos seguintes métodos definidos no AgletProxy:

Object sendMessage(Message msg)

FutureReply sendFutureMessage(Message msg)

Void sendOnewayMessage(Message msg)

Page 84: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Classe MessageClasse Message

O objeto mensagem é passado como um argumento ao método handleMessage do aglet..

handleMessage é o método que manipula as mensagens chegando.

Page 85: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Classe MessageClasse Message

Este método deve retornar true se uma dada mensagem é manipulada; de outro modo, deve retornar false.

O transmissor saberá, então, se o aglet realmente manipulou a mensagem.

No exemplo seguinte, o aglet reconhecerá e responderá a mensagens ‘hello’:

Page 86: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Classe MessageClasse Message

Método no aglet: public boolean handleMessage(Message msg) { if (msg.sameKind(“hello”)) { doHello(); // Respond to the ‘hello’ message ... return true; // Yes, I handled this message. } else return false; // No, I did not handle tjis message. }

Page 87: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Classe MessageClasse Message

Somente do yourName, espera-se recebr um valor de retorno:

proxy.sendMessage(myName);String name =

(String)proxy.sendMessage(yourName);

Page 88: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Classe MessageClasse Message

No método handleMessage, distinguimos entre as mensagens myName e yourName, por testar o campo “kind” das mensagens chegando.

Page 89: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Classe MessageClasse Message

De myName extraimos o argumento-name e para yourName é estabelecido o valor de retorno ( sendReply() ).

Lembre que myName e yourName são variáveis do tipo Message.

Page 90: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Classe MessageClasse Message public boolean handleMessage(Message msg) { if (msg.sameKind(“my name”)) { String name = (String)msg.getArg(); // gets the name ... return true; // Yes, I handled this message. } else if (msg.samekind(“your name ?”)) { msg.sendReply(“Yina”); // Return your name ... return true; // Yes, I handled this message. } else return false; // No, I did not handle tjis message. }

Page 91: O Modelo Aglet Elementos Básicos Modelo de Eventos Modelo de Comunicação

Múltiplos Aglets Atualizando Múltiplos Aglets Atualizando Arquivos em ParaleloArquivos em Paralelo

AgletAglet

AgletAglet AgletAglet AgletAglet

Host Host Host

Host (Updating)