00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051 #ifndef _IFR_COMPONENTS_IDL_
00052 #define _IFR_COMPONENTS_IDL_
00053
00054 #include "tao/IFR_Client/IFR_Extended.pidl"
00055
00056 module CORBA
00057 {
00058 typeprefix CORBA "omg.org";
00059
00060 module ComponentIR
00061 {
00062 interface ComponentDef;
00063 interface HomeDef;
00064
00065 interface EventDef : ExtValueDef
00066 {
00067 };
00068
00069 interface Container : CORBA::Container
00070 {
00071 ComponentDef create_component ( in RepositoryId id,
00072 in Identifier name,
00073 in VersionSpec version,
00074 in ComponentDef base_component,
00075 in InterfaceDefSeq supports_interfaces );
00076
00077 HomeDef create_home ( in RepositoryId id,
00078 in Identifier name,
00079 in VersionSpec version,
00080 in HomeDef base_home,
00081 in ComponentDef managed_component,
00082 in InterfaceDefSeq supports_interfaces,
00083 in ValueDef primary_key );
00084
00085 EventDef create_event ( in RepositoryId id,
00086 in Identifier name,
00087 in VersionSpec version,
00088 in boolean is_custom,
00089 in boolean is_abstract,
00090 in ValueDef base_value,
00091 in boolean is_truncatable,
00092 in ValueDefSeq abstract_base_values,
00093 in InterfaceDefSeq supported_interfaces,
00094 in ExtInitializerSeq initializers );
00095 };
00096
00097 interface ModuleDef : CORBA::ModuleDef, Container
00098 {
00099 };
00100
00101 interface Repository : CORBA::Repository, Container
00102 {
00103 };
00104
00105 interface ProvidesDef : Contained
00106 {
00107 attribute InterfaceDef interface_type;
00108 };
00109
00110 struct ProvidesDescription
00111 {
00112 Identifier name;
00113 RepositoryId id;
00114 RepositoryId defined_in;
00115 VersionSpec version;
00116 RepositoryId interface_type;
00117 };
00118
00119 interface UsesDef : Contained
00120 {
00121 attribute InterfaceDef interface_type;
00122 attribute boolean is_multiple;
00123 };
00124
00125 struct UsesDescription
00126 {
00127 Identifier name;
00128 RepositoryId id;
00129 RepositoryId defined_in;
00130 VersionSpec version;
00131 RepositoryId interface_type;
00132 boolean is_multiple;
00133 };
00134
00135 interface EventPortDef : Contained
00136 {
00137
00138 attribute EventDef event;
00139
00140 boolean is_a (in RepositoryId event_id);
00141 };
00142
00143 struct EventPortDescription
00144 {
00145 Identifier name;
00146 RepositoryId id;
00147 RepositoryId defined_in;
00148 VersionSpec version;
00149 RepositoryId event;
00150 };
00151
00152 interface EmitsDef : EventPortDef
00153 {
00154 };
00155
00156 interface PublishesDef : EventPortDef
00157 {
00158 };
00159
00160 interface ConsumesDef : EventPortDef
00161 {
00162 };
00163
00164 interface ComponentDef : ExtInterfaceDef
00165 {
00166
00167 attribute ComponentDef base_component;
00168 attribute InterfaceDefSeq supported_interfaces;
00169
00170
00171 ProvidesDef create_provides ( in RepositoryId id,
00172 in Identifier name,
00173 in VersionSpec version,
00174 in InterfaceDef interface_type );
00175
00176 UsesDef create_uses ( in RepositoryId id,
00177 in Identifier name,
00178 in VersionSpec version,
00179 in InterfaceDef interface_type,
00180 in boolean is_multiple );
00181
00182 EmitsDef create_emits ( in RepositoryId id,
00183 in Identifier name,
00184 in VersionSpec version,
00185 in EventDef event );
00186
00187 PublishesDef create_publishes ( in RepositoryId id,
00188 in Identifier name,
00189 in VersionSpec version,
00190 in EventDef event );
00191
00192 ConsumesDef create_consumes ( in RepositoryId id,
00193 in Identifier name,
00194 in VersionSpec version,
00195 in EventDef event );
00196 };
00197
00198 typedef sequence<ProvidesDescription> ProvidesDescriptionSeq;
00199 typedef sequence<UsesDescription> UsesDescriptionSeq;
00200 typedef sequence<EventPortDescription> EventPortDescriptionSeq;
00201
00202 struct ComponentDescription
00203 {
00204 Identifier name;
00205 RepositoryId id;
00206 RepositoryId defined_in;
00207 VersionSpec version;
00208 RepositoryId base_component;
00209 RepositoryIdSeq supported_interfaces;
00210 ProvidesDescriptionSeq provided_interfaces;
00211 UsesDescriptionSeq used_interfaces;
00212 EventPortDescriptionSeq emits_events;
00213 EventPortDescriptionSeq publishes_events;
00214 EventPortDescriptionSeq consumes_events;
00215 ExtAttrDescriptionSeq attributes;
00216 TypeCode type;
00217 };
00218
00219 interface FactoryDef : OperationDef
00220 {
00221 };
00222
00223 interface FinderDef : OperationDef
00224 {
00225 };
00226
00227 interface HomeDef : ExtInterfaceDef
00228 {
00229
00230 attribute HomeDef base_home;
00231 attribute InterfaceDefSeq supported_interfaces;
00232 attribute ComponentDef managed_component;
00233 attribute ValueDef primary_key;
00234
00235
00236 FactoryDef create_factory ( in RepositoryId id,
00237 in Identifier name,
00238 in VersionSpec version,
00239 in ParDescriptionSeq params,
00240 in ExceptionDefSeq exceptions );
00241
00242 FinderDef create_finder ( in RepositoryId id,
00243 in Identifier name,
00244 in VersionSpec version,
00245 in ParDescriptionSeq params,
00246 in ExceptionDefSeq exceptions );
00247 };
00248
00249 struct HomeDescription
00250 {
00251 Identifier name;
00252 RepositoryId id;
00253 RepositoryId defined_in;
00254 VersionSpec version;
00255 RepositoryId base_home;
00256 RepositoryId managed_component;
00257 ValueDescription primary_key;
00258 OpDescriptionSeq factories;
00259 OpDescriptionSeq finders;
00260 OpDescriptionSeq operations;
00261 ExtAttrDescriptionSeq attributes;
00262 TypeCode type;
00263 };
00264 };
00265 };
00266
00267 #endif