• No results found

Fagbevegelsens organisering i Europa

In document forhold til Europa. (sider 142-148)

DEL 3 • ARBEID, VELFERD OG MILJØ

10.6 Fagbevegelsens organisering i Europa

A comunicação directa refere-se ao estabelecimento de uma comunicação explícita en- tre duas entidades, em que a entidade emissora envia explicitamente para um dado destinatário, uma mensagem, através da invocação da primitiva send(). O destinatá- rio, por sua vez, recebe e processa a mensagem que lhe foi enviada de acordo com o método invocado por esta, que é explicitado na mensagem. As entidades têm dispo- níveis dois mecanismos distintos para o estabelecimento da comunicação directa que são apresentados de seguida.

Método explícito do receptor

Através deste mecanismo, o emissor invoca explicitamente um método da interface do receptor (entidade), responsável pela recepção e tratamento da mensagem.

send(in : entidade_emissora_id,entidade_receptora_id,metodo_recepcao,mensagem)

Nesta situação o destinatário (entidade_receptora), por cada método invocado, de- sencadeia a execução do método de recepção indicado (metodo_recepção) que é o res- ponsável por efectuar o processamento da mensagem enviada pela entidade emissora.

UM MODELO DE COMPUTAÇÃO BASEADO EM GRUPOS

A definição e implementação de cada método é da responsabilidade de quem desen- volve a aplicação, sendo estes associados à entidade quando da sua criação/definição, e fazem parte da sua interface. O conjunto de métodos que a entidade disponibiliza para a interacção é uma das características que definem a interface oferecida por cada entidade e deve ser do conhecimento do elemento emissor.

Este mecanismo permite a comunicação directa entre quaisquer duas entidades do sistema. É uma forma de interacção não bloqueante, não existindo confirmação de recepção por parte da entidade destinatária. Como no caso em que a entidade emis- sora pretende efectuar uma comunicação directa com uma entidade que se encontra OFFLINE, nesta situação a acção de send não fica a aguardar pela recepção.

Fila de mensagens no receptor

Com este mecanismo, é activado no destinatário, um método genérico que trata da recepção da mensagem colocando-a numa estrutura interna ao receptor (fila de men- sagens), que pode ser acedida através da invocação, por parte do receptor, da primitiva de leitura explícita receive. No caso do destinatário ser um grupo a mensagem é colo- cada na fila global do grupo.

A acção de envio directo de uma mensagem é desencadeada na sequência de uma acção de send por parte do emissor.

send(in : entidade_emissora_id,entidade_receptora_id,tipo_noti f icacao,mensagem)

Quando o destinatário é um grupo, a mensagem é processada por este através do representante de grupo. A forma como são "avisados" os membros do grupo depende do tipo de notificação especificado pelo emissor, através do parâmetro tipo_noti f icacao. A divulgação da chegada de mensagem pelos membros de um grupo pode ter diferen- tes comportamentos, de acordo como o tipo indicado na invocação da primitiva send(). São consideradas as seguintes políticas de divulgação:

PASSIVE: neste caso a mensagem é dirigida somente ao representante do grupo, que

a processa e coloca na fila de mensagens global do grupo, não sendo esta infor- mação difundida aos membros do grupo;

NOTIFY: publica um evento de aviso16 de chegada de mensagem ao grupo sendo,

neste caso, da responsabilidade de cada membro desencadear o processo de lei- tura da mensagem;

SPREAD: publica um evento17, que desencadeia um processo de notificação aos mem-

bros do grupo, através do qual a mensagem é difundida pelo grupo.

16Este evento de chegada de mensagem é um dos eventos de sistema (MESSAGE_EV). Este tipo de

eventos é por convenção subscrito por todas as entidades do sistema.

UM MODELO DE COMPUTAÇÃO BASEADO EM GRUPOS

Na situação em que o destinatário é uma entidade elementar, a colocação de uma mensagem na sua fila local de mensagens desencadeia um evento de aviso de chegada de mensagem, não sendo processado, neste caso, o argumento tipo_noti f icacao.

Para efectuar a leitura de mensagens, o receptor tem à sua disposição a primitiva receive(), que permite a qualquer fluxo de execução de membros do grupo, ir "buscar" explicitamente uma mensagem à sua fila local de mensagens ou à fila global do grupo. No caso da leitura da mensagem da sua própria fila de mensagens a primitiva de receive()toma a forma:

receive(in : tipo; out : mensagem)

Esta primitiva desencadeia a remoção de uma mensagem da fila utilizando uma estratégia FIFO.

No caso de leitura efectuada no contexto do grupo a primitiva receive() pode ser in- vocada por qualquer membro do grupo tratando-se de uma leitura não destrutiva, per- manecendo as mensagens na fila global do grupo até expirar um certo timeout. Neste caso a primitiva receive, necessita dos seguintes parâmetros:

receive(in : tipo, grupo_id,identi f icador_mensagem, f iltro;out : mensagem)

• tipo: de acordo com este parâmetro a primitiva receive() pode ter um comporta- mento bloqueante ou não:

BLOCK: bloqueante, fica a aguardar a disponibilidade de mensagem;

NO_BLOCK: não bloqueante, se não existir mensagem para ler, retorna de ime-

diato com mensagem vazia;

• mensagem: conteúdo de dados a ser entregue;

• f iltro: permite efectuar uma leitura de mensagens, que obedeçam às definições do filtro, ou seja pode ser efectuado um processamento das mensagens de modo a aceder somente a determinado tipo de mensagens18. Indicando este filtro um valor que identifica o tipo de mensagem que se pretende ler. Este parâmetro assume significado no contexto de grupo, dado que, no caso das entidades ele- mentares todas as mensagens que lhe são explicitamente dirigidas têm que ser sempre processadas por esta;

• identi f icador_mensagem: este parâmetro permite identificar inequivocamente uma dada mensagem. Este valor é conhecido pelos membros do grupo após ter sido enviada uma mensagem (send()) com NOTIFY, sendo necessário para que os membros consigam ter acesso à mensagem sobre a qual foram notificados;

18As mensagem podem obedecer a um determinado formato no qual podem ser indicados, por exem-

UM MODELO DE COMPUTAÇÃO BASEADO EM GRUPOS

• grupo_id: identificação do grupo, necessária quando a leitura é efectuada da fila global do grupo, dado que as entidades podem efectuar leituras da fila de men- sagens ou dos grupos a que pertencem. No caso do grupo, a leitura é efectuada da sua fila global, onde o representante do grupo colocou a mensagem. Note-se que a fila global do grupo só pode ser acedida por membros do próprio grupo, não sendo visível do exterior.

In document forhold til Europa. (sider 142-148)