summaryrefslogtreecommitdiff
path: root/TAO/CIAO/DAnCE/ciao/CCM_Component.idl
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/CIAO/DAnCE/ciao/CCM_Component.idl')
-rw-r--r--TAO/CIAO/DAnCE/ciao/CCM_Component.idl149
1 files changed, 149 insertions, 0 deletions
diff --git a/TAO/CIAO/DAnCE/ciao/CCM_Component.idl b/TAO/CIAO/DAnCE/ciao/CCM_Component.idl
new file mode 100644
index 00000000000..3dcc86e4dd3
--- /dev/null
+++ b/TAO/CIAO/DAnCE/ciao/CCM_Component.idl
@@ -0,0 +1,149 @@
+// $Id$
+
+/**
+ * @@ Compile this file with:
+ *
+ * tao_idl -Gv -I ../.. -I ../../orbsvcs/orbsvcs \
+ * -Wb,export_macro=CIAO_Export \
+ * -Wb,export_include=CIAO_export.h \
+ * -Wb,pre_include="ace/pre.h" \
+ * -Wb,post_include="ace/post.h" \
+ * CCM_Component.idl
+ */
+
+#if !defined (CCM_COMPONENT_IDL)
+#define CCM_COMPONENT_IDL
+
+#include "CCM_Event.idl"
+#include "tao/IFR_Client/IFR_Base.pidl"
+
+module Components
+{
+ typeprefix Components "omg.org";
+
+ abstract valuetype PrimaryKeyBase {};
+
+ interface CCMObject; //forward reference
+
+ interface CCMHome
+ {
+ CORBA::IRObject get_component_def ();
+ CORBA::IRObject get_home_def ();
+ void remove_component ( in CCMObject comp)
+ raises (RemoveFailure);
+ };
+ typedef sequence<CCMHome> CCMHomes;
+
+ interface KeylessCCMHome
+ {
+ CCMObject create_component()
+ raises (CreateFailure);
+ };
+
+ interface HomeFinder
+ {
+ CCMHome find_home_by_component_type (in CORBA::RepositoryId comp_repid)
+ raises (HomeNotFound);
+
+ CCMHome find_home_by_home_type (in CORBA::RepositoryId home_repid)
+ raises (HomeNotFound);
+
+ CCMHome find_home_by_name (in string home_name)
+ raises (HomeNotFound);
+ };
+
+ interface Configurator
+ {
+ void configure (in CCMObject comp)
+ raises (WrongComponentType);
+ };
+
+ valuetype ConfigValue
+ {
+ public FeatureName name;
+ public any value;
+ };
+
+ typedef sequence<ConfigValue> ConfigValues;
+
+ interface StandardConfigurator : Configurator
+ {
+ void set_configuration (in ConfigValues descr);
+ };
+
+ interface HomeConfiguration : CCMHome
+ {
+ void set_configurator (in Configurator cfg);
+ void set_configuration_values (in ConfigValues config);
+ void complete_component_configuration (in boolean b);
+ void disable_home_configuration();
+ };
+
+ valuetype ComponentPortDescription
+ {
+ public FacetDescriptions facets;
+ public ReceptacleDescriptions receptacles;
+ public ConsumerDescriptions consumers;
+ public EmitterDescriptions emitters;
+ public PublisherDescriptions publishers;
+ };
+
+ interface CCMObject : Navigation, Receptacles, Events
+ {
+ CORBA::IRObject get_component_def ( );
+ CCMHome get_ccm_home( );
+ PrimaryKeyBase get_primary_key( )
+ raises (NoKeyAvailable);
+
+ /// CIAO specific operations to have some control on when and how
+ /// to activate components.
+ /**
+ * This is all from our work on ARMS where we needed to know whether
+ * every component has been configured, say for example to use
+ * logging in the assembly which could in turn be provided by a
+ * component. To get around all this we are adding some methods on
+ * this till we think of some standard way to do this. The problem
+ * is that the deployer should be able to call this as opposed to
+ * the home calling it as soon as the component is created.
+ *
+ * All these operations are called in the order mentioned, ie. the
+ * deployer calls ciao_preactivate () on all components, then
+ * ciao_activate and then ciao_postactivate (). The speciality is
+ * that these operations would be invoked on every target object
+ * before the next call is made. It is similar to the way
+ * portable interceptors work, trying to get everything onto the
+ * flow stack, but differ in the intention.
+ */
+ void ciao_preactivate ()
+ raises (InvalidConfiguration);
+
+ void ciao_activate ()
+ raises (InvalidConfiguration);
+
+ void ciao_postactivate ()
+ raises (InvalidConfiguration);
+
+ void configuration_complete ()
+ raises (InvalidConfiguration);
+
+ void remove()
+ raises (RemoveFailure);
+ ComponentPortDescription get_all_ports ();
+ };
+
+ // @@ Enumeration and DefaultEnumeration are only for EJB to CCM
+ // mapping? At any rate, we should be able to skip them for now.
+ abstract valuetype Enumeration
+ {
+ boolean has_more_elements();
+ CCMObject next_element();
+ };
+
+ typedef sequence<CCMObject> CCMObjectSeq;
+
+ valuetype DefaultEnumeration : Enumeration
+ {
+ private CCMObjectSeq objects;
+ };
+};
+#endif /* CCM_COMPONENT_IDL */