Implementing a CCM Component
This document explains how to implement a single component. At this
moment, CIAO lacks a CIDL compiler, and we depends on manually
generating the servant glue code for containers and local executor
interface. Check out this page to
find how all files are generate4d in CIAO.
The following figure shows how this is done:
And when we have a working CIDL (or, CCIDL "CIAO's Component
Implementation Definition Language") compiler, the file will be
generated using a CIDL file (which is rather simple.) This figure
depicts the "Right Way" [TM] this should be done:
Checkout a list of things to do for implementing CIDL compiler.
I think it is debatable whether we should merge the "Servant DLL" and
"Component Implementation DLL" into one DLL. Me think not. My
approach, however, creates some complication on requireing a mechanism
to locate the servant code (and DLL) from component implementation.
Libraries Dependencies
Implementing a component creates 3
DLL's as shown in the above figure. Both "Servant DLL" and "Component
Implementation DLL" depend on the "Client DLL". "Servant DLL" and
"Component Implementation DLL" are not mutually dependent, however.
All the generated DLLs depends on other TAO and CIAO common
libraries. Here's a break down of which libraries depends on which
other libraries:
- Client DLL: ace.lib tao.lib TAO_IFR_Client.lib
CIAO_Clientd.lib
- Servant DLL: ace.lib tao.lib Client DLL
TAO_IFR_Client.lib TAO_PortableServer.lib TAO_Security.lib
CIAO_Container.lib CIAO_Client.lib
- Component Implementation DLL: ace.lib tao.lib
Client DLL TAO_IFR_Client.lib TAO_Security.lib
CIAO_Container.lib