1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<!-- $Id$ -->
<html> <head>
<title>Procedures to prepare a new component implementation</title>
</head>
<body>
<h1>Preparing a new component implementation</h1>
I am documenting the steps required to prepare a component implementation.
Personally, I prefer to set up a directory to contain only <b>one</b>
component implementation. I believe the procedures outlined below
will work if you have multiple component implementation in the same
IDL files. The purpose of this document is to record the procedures
and steps on how these files relate to each others and how they come
about during the development process.<p>
Assuming we need to create a new component called
<code><b>Orc</b></code>. 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...
<ol>
<li><font color="red"><code><b>Orc</b>.idl</code></font> - This is
the IDL file that contains the component and component home
definitions.<p>
As you will eventually create 3 DLLs (or shared objects), you
will also need 3 sets of different export macros files as
following.<p>
<li><code><b>Orc</b>_stub_export.h</code> - This file is generated
using the following command:<p>
<code>generate_export_file.pl <b>ORC</b>_STUB > <b>Orc</b>_stub_export.h</code><p>
This file makes macros like <code><b>ORC</b>_STUB_Export</code>
and friends available. They are usually controlled by
<code><b>ORC</b>_STUB_BUILD_DLL</code><p>
<li><code><b>Orc</b>_svnt_export.h</code> - This file is generated
using the following command:<p>
<code>generate_export_file.pl <b>ORC</b>_SVNT > <b>Orc</b>_svnt_export.h</code><p>
This file makes macros like <code><b>ORC</b>_SVNT_Export</code>
and friends available. They are usually controlled by
<code><b>ORC</b>_SVNT_BUILD_DLL</code><p>
<li><code><b>Orc</b>_exec_export.h</code> - This file is generated
using the following command:<p>
<code>generate_export_file.pl <b>ORC</b>_EXEC > <b>Orc</b>_exec_export.h</code><p>
This file makes macros like <code><b>ORC</b>_EXEC_Export</code>
and friends available. They are usually controlled by
<code><b>ORC</b>_EXEC_BUILD_DLL</code><p>
<li><code><b>Orc</b>E.idl</code> - Component Executor equivalent
interface definitions. This file should be generated
automatically by the CIDL compiler as illustrated in this
<a href="com-impl.html">file</a> but we currently are still
working on the implementation of the CIDL compiler. Therefore,
you still need to create this file manually.<p>
<li><font color="red"><code><b>Orc</b>EI.idl</code></font> -
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 <code><b>Orc</b>E.idl</code>. You
will need to do the same when you wish to support non-vanilla
component interface, such as
<code>Components::SessionComponent</code>, and/or
<code>Components::SessionSynchronization</code>.<p>
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.<p>
<li><font color="red"><code><b>Orc</b>_exec.*</code></font> - 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.<p>
<li><code><b>Orb</b>_svnt.*</code> - 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.<p>
<li><code><b>Orc</b>.csd</code> - Component Softpkg Descriptor. We
need some kind of tool to generate this file automatically. It
is currently being generated manually, however.<p>
<li><code><b>Orc</b>.ssd</code> - 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 <code><b>Orc</b>.csd</code>, this file should be generated
automatically through some tool, but it is currently manually
crafted.<p>
<li><code><b>Orc</b>.ccd</code> - CORBA Component Descriptor. This
file is currently being generated manually thou a template
should really be generated by CIAO's CIDL compiler.<p>
<li><font color="red"><code><b>Orc</b>.mpc</code></font> - Makefile
Project Creator definition file. There is a perl script to
generate a minimal MPC definition at
<code>$(CIAO_ROOT)/bin/generate_component_mpc.pl</code> so
people can use it to implement the simplest component
implementation outlined in this file.<p>
</ol>
<hr>
<address></address>
<!-- hhmts start -->
Last modified: Fri Mar 21 16:06:48 Central Standard Time 2003
<!-- hhmts end -->
</body> </html>
|