Assuming we need to create a new component called
Orc
. Below is the list of files you'll need to
deal with. Our goal is to greatly reduce the number of files you need
to deal with manually...
Orc.idl
- This is
the IDL file that contains the component and component home
definitions.As you will eventually create 3 DLLs (or shared objects), you will also need 3 sets of different export macros files as following.
Orc_stub_export.h
- This file is generated
using the following command:
generate_export_file.pl ORC_STUB > Orc_stub_export.h
This file makes macros like ORC_STUB_Export
and friends available. They are usually controlled by
ORC_STUB_BUILD_DLL
Orc_svnt_export.h
- This file is generated
using the following command:
generate_export_file.pl ORC_SVNT > Orc_svnt_export.h
This file makes macros like ORC_SVNT_Export
and friends available. They are usually controlled by
ORC_SVNT_BUILD_DLL
Orc_exec_export.h
- This file is generated
using the following command:
generate_export_file.pl ORC_EXEC > Orc_exec_export.h
This file makes macros like ORC_EXEC_Export
and friends available. They are usually controlled by
ORC_EXEC_BUILD_DLL
OrcE.idl
- Component Executor equivalent
interface definitions. This file should be generated
automatically by the CIDL compiler as illustrated in this
file but we currently are still
working on the implementation of the CIDL compiler. Therefore,
you still need to create this file manually.
OrcEI.idl
-
Optional Component Executor implementation interface
definitions. Often time, when you implement a non-trivial
monolithic component implementation, you are required to define
the monolithic local executor interface which often inherits
from the component monolithic executor interface and all the
provided interfaces. The actually executor implementation will
inherit from this user defined interface instead of the default
executor mapping defined in OrcE.idl
. You
will need to do the same when you wish to support non-vanilla
component interface, such as
Components::SessionComponent
, and/or
Components::SessionSynchronization
.Ideally, it would be perfect if we can auto-generate this optional IDL file using CIDL compiler. However, I'm not sure the plan CIDL language contains enough information that's required to generate this file.
Orc_exec.*
- These
are files containing the actually component implementation that
you have to write manually. It, however, depends on the
equivalent executor IDL definition (that will be) generated by
the CIDL files.
Orb_svnt.*
- These are files containing the
servant glue code that bridge a container to the component
executor that you implement. Like the component executor
mapping IDL file, these files should be generated by the CIDL
compiler but are currently generated manually.
Orc.csd
- Component Softpkg Descriptor. We
need some kind of tool to generate this file automatically. It
is currently being generated manually, however.
Orc.ssd
- Servant Softpkg Descriptor. This
is a CIAO extension descriptor file which uses the same softpkg
DTD as described in CCM spec. CIAO requires this file because
CIAO separates the executors into a completely separate DLL.
Like Orc.csd
, this file should be generated
automatically through some tool, but it is currently manually
crafted.
Orc.ccd
- CORBA Component Descriptor. This
file is currently being generated manually thou a template
should really be generated by CIAO's CIDL compiler.
Orc.mpc
- Makefile
Project Creator definition file. There is a perl script to
generate a minimal MPC definition at
$(CIAO_ROOT)/bin/generate_component_mpc.pl
so
people can use it to implement the simplest component
implementation outlined in this file.