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.