next up previous contents index
Next: LineServer.[Ch] Up: O Módulo de Previous: DI_BaseServer

Código Gerado Automaticamente

 

O código gerado automaticamente para o módulo de distribuição é obtido exclusivamente com base na descrição, em CIDL, da hierarquia de classes da aplicação.

O compilador de CORBA IDL toma como entrada, para cada classe da hierarquia original, um ficheiro contendo a descrição da interface, e tem como saídas vários ficheiros contendo classes e funções de interacção com o nível de ligação e com os mecanismos de comunicação. No caso presente, o código pelo gerador de CIDL para o módulo da distribuição usa como suporte à comunicação DCE RPC.

Considere-se o exemplo da classe Line definida, em CORBA IDL, como:

                    interface Line {
                        void Insert(char c);
                        void Remove();
                    };

O compilador de CIDL, cujo andar de geração de código foi construído por forma a acomodar a arquitectura descrita neste texto, produz então os ficheiros, para o lado do servidor, LineServer.[Ch] e LineDceServerAux.C, e para o lado do cliente LineClient.[Ch], LineGenericCP.[Ch], LineDceCP.[Ch] e LineDceClientAux.h. Além destes são ainda gerados LineTypes.h, contendo os tipos utilizados na interface em causa e LineDce.idl, a descrição em DCE IDL, da interface e suas operações.

As classes do módulo de distribuição deixam em aberto a questão do empacotamento de dados em sistemas heterogéneos, tanto na passagem de argumentos em chamadas remotas como no retorno. Este problema é resolvido apenas na camada relacionada com o sistema de RPC particular.

A interface DCE IDL é processada do modo habitual em programação DCE, dando origem aos adaptadores de baixo nível para o sistema de RPC. Desta forma, toda a gestão de empacotamento de parâmetros é resolvida automaticamente pelo código gerado neste estádio, pelo que não se justifica qualquer preocupação adicional com o problema. Os adaptadores, como é habitual, contêm, tanto do lado do servidor como do lado do cliente, uma função por cada método declarado na interface.

A comunicação dos adaptadores DCE com os níveis superiores do módulo, e mesmo com o nível de ligação, passa pelo código definido nos ficheiros LineDceServerAux.C, para o caso do servidor, no sentido < aplicação rede>, e LineDceClientAux.h, para o lado do cliente, no sentido < rede aplicação>. O código nestes ficheiros limita-se a fazer a passagem entre o código dos adaptadores, em C, e o do resto do módulo, em C++.

A figura 6.6 mostra a relação entre o código definido em cada um dos vários ficheiros e mostra também a forma como está envolvido numa invocação remota.

  
Figure: Estrutura do módulo de distribuição.

A descrição de cada elemento da figura pode ser encontrada nos pontos 6.4.1.2.1 a 6.4.1.2.6, que descrevem pormenorizadamente o código gerado em cada ficheiro, para o exemplo dado, que utiliza a interface da classe Line.





next up previous contents index
Next: LineServer.[Ch] Up: O Módulo de Previous: DI_BaseServer



David M. M. de Matos
Thu Jun 29 14:58:09 MET DST 1995