summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornanbor <nanbor@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2002-04-16 02:36:56 +0000
committernanbor <nanbor@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2002-04-16 02:36:56 +0000
commit3367cd79e49446c2fc9b2b3782549ccb78ad3559 (patch)
tree5c67c6ff5306881742b0f0cdb0d5cdbb6a9e080d
parent457747842ca0da11457411ed8805b4dd81ce16e2 (diff)
downloadATCD-CIAO-0.tar.gz
*** empty log message ***CIAO-0
-rw-r--r--TAO/tao/ccm_core/Component_Base.idl808
-rw-r--r--TAO/tao/ccm_core/CosPersistentState.idl16
2 files changed, 824 insertions, 0 deletions
diff --git a/TAO/tao/ccm_core/Component_Base.idl b/TAO/tao/ccm_core/Component_Base.idl
new file mode 100644
index 00000000000..312471572a1
--- /dev/null
+++ b/TAO/tao/ccm_core/Component_Base.idl
@@ -0,0 +1,808 @@
+// $Id$
+
+/**
+ * @@ Compile this file with:
+ *
+ * tao_idl -Gv -I W:/ACE_wrappers/TAO -I W:/ACE_wrappers/TAO/orbsvcs/orbsvcs Component_Base.idl
+ *
+ * @@ CosPersistentState related stuff are removed completely.
+ *
+ */
+
+// import ::CORBA
+// import ::SecurityLevel2
+// import ::CosPersistentState
+// import ::PortableServer
+// import ::CosNotification
+// import ::CosNotifyChannelAdmin
+
+#include <CORBA.pidl>
+#include <SecurityLevel2.idl>
+#include <CosPersistentState.idl>
+#include <PortableServer/PortableServer.pidl>
+#include <IFR_Client/Interface.pidl>
+#include <CosNotification.idl>
+#include <CosNotifyChannelAdmin.idl>
+
+/**
+ * Temporarily fix for lacking of typePrefix keyword.
+ * Search for the word "typePrefix" when tao_idl starts
+ * supporting the keyword.
+ */
+#pragma prefix "omg.org"
+
+module Components {
+
+ /**
+ * @@ Commented out temporarily for lack of typePrefix support.
+ */
+ // typePrefix Components "omg.org"
+ typedef string FeatureName;
+ typedef sequence<FeatureName> NameList;
+
+ valuetype Cookie
+ {
+ private CORBA::OctetSeq cookieValue;
+ };
+
+ valuetype PortDescription
+ {
+ public FeatureName Name;
+ public CORBA::RepositoryId type_id;
+ };
+
+ valuetype FacetDescription : PortDescription
+ {
+ public Object facet_ref;
+ };
+
+ typedef sequence<FacetDescription> FacetDescriptions;
+
+ typedef unsigned long FailureReason;
+
+ exception InvalidName {};
+ exception InvalidConnection {};
+ exception ExceededConnectionLimit {};
+ exception AlreadyConnected {};
+ exception NoConnection {};
+ exception CookieRequired {};
+ exception CreateFailure {
+ FailureReason reason;
+ };
+ exception FinderFailure
+ {
+ FailureReason reason;
+ };
+ exception RemoveFailure
+ {
+ FailureReason reason;
+ };
+ exception DuplicateKeyValue {};
+ exception InvalidKey {};
+ exception UnknownKeyValue {};
+ exception NoKeyAvailable {};
+ exception BadEventType
+ {
+ CORBA::RepositoryId expected_event_type;
+ };
+ exception HomeNotFound {};
+ exception WrongComponentType {};
+
+ typedef FailureReason InvalidConfigurationReason;
+ const InvalidConfigurationReason UnknownConfigValueName = 0;
+ const InvalidConfigurationReason InvalidConfigValueType = 1;
+ const InvalidConfigurationReason ConfigValueRequired = 2;
+ const InvalidConfigurationReason ConfigValueNotExpected = 3;
+ exception InvalidConfiguration
+ {
+ InvalidConfigurationReason reason;
+ FeatureName name;
+ };
+ exception IllegalState {};
+
+ interface Navigation
+ {
+ Object provide_facet (in FeatureName name)
+ raises (InvalidName);
+ FacetDescriptions get_all_facets();
+ FacetDescriptions get_named_facets (in NameList names)
+ raises (InvalidName);
+ boolean same_component (in Object object_ref);
+ };
+
+ valuetype ConnectionDescription
+ {
+ public Cookie ck;
+ public Object objref;
+ };
+ typedef sequence<ConnectionDescription> ConnectionDescriptions;
+
+ valuetype ReceptacleDescription : PortDescription
+ {
+ public boolean is_multiple;
+ public ConnectionDescriptions connections;
+ };
+ typedef sequence<ReceptacleDescription> ReceptacleDescriptions;
+
+ interface Receptacles
+ {
+ Cookie connect (in FeatureName name, in Object connection )
+ raises (InvalidName,
+ InvalidConnection,
+ AlreadyConnected,
+ ExceededConnectionLimit);
+
+ void disconnect (in FeatureName name, in Cookie ck)
+ raises (InvalidName,
+ InvalidConnection,
+ CookieRequired,
+ NoConnection);
+
+ ConnectionDescriptions get_connections (in FeatureName name)
+ raises (InvalidName);
+
+ ReceptacleDescriptions get_all_receptacles ();
+
+ ReceptacleDescriptions get_named_receptacles (in NameList names)
+ raises (InvalidName);
+ };
+
+ abstract valuetype EventBase {};
+
+ interface EventConsumerBase
+ {
+ void push_event (in EventBase evt) raises (BadEventType);
+ };
+
+ valuetype ConsumerDescription : PortDescription
+ {
+ public EventConsumerBase consumer;
+ };
+ typedef sequence<ConsumerDescription> ConsumerDescriptions;
+
+ valuetype EmitterDescription : PortDescription
+ {
+ public EventConsumerBase consumer;
+ };
+ typedef sequence<EmitterDescription> EmitterDescriptions;
+
+ // @@ I added the parent class "PortDescription" below as it seems
+ // to be missing from the draft.
+ valuetype SubscriberDescription : PortDescription
+ {
+ public Cookie ck;
+ public EventConsumerBase consumer;
+ };
+ typedef sequence<SubscriberDescription> SubscriberDescriptions;
+
+ valuetype PublisherDescription : PortDescription
+ {
+ public SubscriberDescriptions consumer;
+ };
+ typedef sequence<PublisherDescription> PublisherDescriptions;
+
+ interface Events
+ {
+ EventConsumerBase get_consumer (in FeatureName sink_name)
+ raises (InvalidName);
+
+ Cookie subscribe (in FeatureName publisher_name,
+ in EventConsumerBase subscriber)
+ raises (InvalidName,
+ AlreadyConnected,
+ InvalidConnection);
+
+ void unsubscribe (in FeatureName publisher_name,
+ in Cookie ck)
+ raises (InvalidName,
+ InvalidConnection);
+
+ void connect_consumer (in FeatureName emitter_name,
+ in EventConsumerBase consumer)
+ raises (InvalidName,
+ AlreadyConnected,
+ InvalidConnection);
+
+ EventConsumerBase disconnect_consumer (in FeatureName source_name)
+ raises (InvalidName,
+ NoConnection);
+
+ ConsumerDescriptions get_all_consumers ();
+
+ ConsumerDescriptions get_named_consumers (in NameList names)
+ raises (InvalidName);
+
+ EmitterDescriptions get_all_emitters ();
+
+ EmitterDescriptions get_named_emitters (in NameList names)
+ raises (InvalidName);
+
+ PublisherDescriptions get_all_publishers ();
+
+ PublisherDescriptions get_named_publishers (in NameList names)
+ raises (InvalidName);
+ };
+
+ 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);
+ 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;
+ };
+
+ // @@ Components::Transaction is still there.
+ module Transaction
+ {
+
+ typedef sequence<octet> TranToken;
+
+ exception NoTransaction {};
+ exception NotSupported {};
+ exception SystemError {};
+ exception RollbackError {};
+ exception HeuristicMixed {};
+ exception HeuristicRollback {};
+ exception Security {};
+ exception InvalidToken {};
+
+ enum Status
+ {
+ ACTIVE,
+ MARKED_ROLLBACK,
+ PREPARED,
+ COMMITTED,
+ ROLLED_BACK,
+ NO_TRANSACTION,
+ PREPARING,
+ COMMITTING,
+ ROLLING_BACK
+ };
+
+ local interface UserTransaction {
+ void begin ()
+ raises (NotSupported,
+ SystemError);
+
+ void commit ()
+ raises (RollbackError,
+ NoTransaction,
+ HeuristicMixed,
+ HeuristicRollback,
+ Security,
+ SystemError);
+
+ void rollback ()
+ raises (NoTransaction,
+ Security,
+ SystemError);
+
+ void set_rollback_only ()
+ raises (NoTransaction,
+ SystemError);
+
+ Status get_status()
+ raises (SystemError);
+
+ void set_timeout (in long to)
+ raises (SystemError);
+
+ TranToken suspend ()
+ raises (NoTransaction,
+ SystemError);
+
+ void resume (in TranToken txtoken)
+ raises (InvalidToken,
+ SystemError);
+ };
+ };
+
+ // @@ module Notification doesn't seem to exist anymore.
+ module Notification {
+
+ typedef CosNotification::EventHeader EventHeader;
+ /**
+ * @@ Typo with "CosNotifyChannnelAdmin::ChannelId"?
+ */
+ typedef CosNotifyChannelAdmin::ChannelID Channel;
+
+ exception ChannelUnavailable {};
+ exception InvalidSubscription {};
+ exception InvalidName {};
+ exception InvalidChannel {};
+
+ local interface LocalCookie {
+ boolean same_as (in LocalCookie cookie);
+ };
+
+ local interface Event {
+ EventConsumerBase create_channel
+ (out Channel chid)
+ raises (ChannelUnavailable);
+ LocalCookie subscribe (
+ in EventConsumerBase ecb,
+ in Channel chid)
+ raises (ChannelUnavailable);
+ void unsubscribe (in LocalCookie cookie)
+ raises (InvalidSubscription);
+ EventConsumerBase obtain_channel (
+ in string supp_name,
+ in EventHeader hdr)
+ raises (InvalidName);
+ void listen (in EventConsumerBase ecb,
+ in string csmr_name)
+ raises (InvalidName);
+ void push (in EventBase evt);
+ void destroy_channel (in Channel chid)
+ raises (InvalidChannel);
+ };
+ };
+
+ // *************** Basic Container interfaces ***************
+
+ typedef SecurityLevel2::Credentials Principal;
+
+ local interface CCMContext
+ {
+ Principal get_caller_principal();
+
+ CCMHome get_CCM_home();
+
+ boolean get_rollback_only()
+ raises (IllegalState);
+
+ Transaction::UserTransaction get_user_transaction()
+ raises (IllegalState);
+
+ boolean is_caller_in_role (in string role);
+
+ void set_rollback_only()
+ raises (IllegalState);
+ };
+
+ enum CCMExceptionReason
+ {
+ SYSTEM_ERROR,
+ CREATE_ERROR,
+ REMOVE_ERROR,
+ DUPLICATE_KEY,
+ FIND_ERROR,
+ OBJECT_NOT_FOUND,
+ NO_SUCH_ENTITY
+ };
+
+ exception CCMException
+ {
+ CCMExceptionReason reason;
+ };
+
+ local interface EnterpriseComponent {};
+
+ local interface SessionContext : CCMContext
+ {
+ Object get_CCM_object()
+ raises (IllegalState);
+ };
+
+ local interface SessionComponent : EnterpriseComponent
+ {
+ void set_session_context ( in SessionContext ctx)
+ raises (CCMException);
+
+ void ccm_activate()
+ raises (CCMException);
+
+ void ccm_passivate()
+ raises (CCMException);
+
+ void ccm_remove ()
+ raises (CCMException);
+ };
+
+ local interface SessionSynchronization
+ {
+ void after_begin ()
+ raises (CCMException);
+
+ void before_completion ()
+ raises (CCMException);
+
+ void after_completion (in boolean committed)
+ raises (CCMException);
+ };
+
+ local interface EntityContext : CCMContext
+ {
+ Object get_CCM_object ()
+ raises (IllegalState);
+
+ PrimaryKeyBase get_primary_key ()
+ raises (IllegalState);
+ };
+
+ local interface EntityComponent : EnterpriseComponent
+ {
+ void set_entity_context (in EntityContext ctx)
+ raises (CCMException);
+
+ void unset_entity_context ()
+ raises (CCMException);
+
+ void ccm_activate ()
+ raises (CCMException);
+
+ void ccm_load ()
+ raises (CCMException);
+
+ void ccm_store ()
+ raises (CCMException);
+
+ void ccm_passivate ()
+ raises (CCMException);
+
+ void ccm_remove ()
+ raises (CCMException);
+ };
+
+ // *************** Extended Container Interfaces ***************
+
+ enum BadComponentReferenceReason
+ {
+ NON_LOCAL_REFERENCE,
+ NON_COMPONENT_REFERENCE,
+ WRONG_CONTAINER
+ };
+
+ typedef CosPersistentState::CatalogBase CatalogBase;
+ typedef CosPersistentState::TypeId TypeId;
+
+ typedef short SegmentId;
+ const SegmentId COMPONENT_SEGMENT = 0;
+
+ typedef short FacetId;
+ const FacetId COMPONENT_FACET = 0;
+
+ typedef sequence<octet> IdData;
+ typedef CosPersistentState::Pid PersistentId;
+
+ typedef short StateIdType;
+ const StateIdType PERSISTENT_ID = 0;
+
+ exception BadComponentReference
+ {
+ BadComponentReferenceReason reason;
+ };
+ exception PolicyMismatch {};
+ exception PersistenceNotAvailable {};
+ exception UnknownActualHome {};
+ exception ProxyHomeNotSupported {};
+ exception InvalidStateIdData {};
+
+ local interface HomeRegistration
+ {
+ void register_home (in CCMHome home_ref,
+ in string home_name);
+
+ void unregister_home (in CCMHome home_ref);
+ };
+
+ local interface CCM2Context : CCMContext
+ {
+ HomeRegistration get_home_registration ();
+
+ void req_passivate ()
+ raises (PolicyMismatch);
+
+ CatalogBase get_persistence (in TypeId catalog_type_id)
+ raises (PersistenceNotAvailable);
+ };
+
+ local interface ProxyHomeRegistration : HomeRegistration
+ {
+ void register_proxy_home (in CCMHome rhome,
+ in CCMHome ahome)
+ raises (UnknownActualHome,
+ ProxyHomeNotSupported);
+ };
+
+ local interface Session2Context : SessionContext, CCM2Context
+ {
+ Object create_ref (in CORBA::RepositoryId repid);
+
+ Object create_ref_from_oid (in CORBA::OctetSeq oid,
+ in CORBA::RepositoryId repid);
+
+ CORBA::OctetSeq get_oid_from_ref (in Object objref)
+ raises (IllegalState,
+ BadComponentReference);
+ };
+
+ abstract valuetype StateIdValue
+ {
+ StateIdType get_sid_type();
+ IdData get_sid_data();
+ };
+
+ local interface StateIdFactory
+ {
+ StateIdValue create (in IdData data)
+ raises (InvalidStateIdData);
+ };
+
+ valuetype PersistentIdValue : StateIdValue
+ {
+ private PersistentId pid;
+
+ PersistentId get_pid();
+ factory init (in PersistentId pid);
+ };
+
+ valuetype SegmentDescr
+ {
+ private StateIdValue sid;
+ private SegmentId seg;
+
+ StateIdValue get_sid();
+ SegmentId get_seg_id();
+ factory init (in StateIdValue sid,
+ in SegmentId seg);
+ };
+
+ typedef sequence<SegmentDescr> SegmentDescrSeq;
+
+ local interface ComponentId
+ {
+ FacetId get_target_facet();
+
+ SegmentId get_target_segment();
+
+ StateIdValue get_target_state_id (in StateIdFactory sid_factory)
+ raises (InvalidStateIdData);
+
+ StateIdValue get_segment_state_id (in SegmentId seg,
+ in StateIdFactory sid_factory)
+ raises (InvalidStateIdData);
+
+ ComponentId create_with_new_target (in FacetId new_target_facet,
+ in SegmentId new_target_segment);
+
+ SegmentDescrSeq get_segment_descrs (in StateIdFactory sid_factory)
+ raises (InvalidStateIdData);
+ };
+
+ local interface Entity2Context : EntityContext, CCM2Context
+ {
+ ComponentId get_component_id ()
+ raises (IllegalState);
+
+ ComponentId create_component_id (in FacetId target_facet,
+ in SegmentId target_segment,
+ in SegmentDescrSeq seq_descrs);
+
+ ComponentId create_monolithic_component_id (in FacetId target_facet,
+ in StateIdValue sid);
+
+ Object create_ref_from_cid (in CORBA::RepositoryId repid,
+ in ComponentId cid);
+
+ ComponentId get_cid_from_ref (in Object objref)
+ raises (BadComponentReference);
+ };
+
+ // *************** Packaging and Deployment ***************
+
+ module Deployment
+ {
+ typedef string UUID;
+ typedef string Location;
+
+ enum AssemblyState
+ {
+ INACTIVE,
+ INSERVICE
+ };
+
+ exception UnknownImplId {};
+ exception InvalidLocation {};
+ exception InstallationFailure
+ {
+ FailureReason reason;
+ };
+ exception InvalidAssembly {};
+
+ interface ComponentInstallation
+ {
+ void install(in UUID implUUID,
+ in Location component_loc)
+ raises (InvalidLocation,
+ InstallationFailure);
+
+ void replace(in UUID implUUID,
+ in Location component_loc)
+ raises (InvalidLocation,
+ InstallationFailure);
+
+ void remove(in UUID implUUID)
+ raises (UnknownImplId,
+ RemoveFailure);
+
+ Location get_implementation (in UUID implUUID)
+ raises (UnknownImplId,
+ InstallationFailure);
+ };
+
+ interface Assembly
+ {
+ void build();
+
+ void tear_down()
+ raises (RemoveFailure);
+
+ AssemblyState get_state();
+ };
+
+ interface AssemblyFactory
+ {
+ Cookie create(in Location assembly_loc)
+ raises (InvalidLocation,
+ CreateFailure);
+
+ Assembly lookup(in Cookie c)
+ raises (InvalidAssembly);
+
+ void destroy(in Cookie c)
+ raises (InvalidAssembly,
+ RemoveFailure);
+ };
+
+ interface ComponentServer; // Forward decl.
+ typedef sequence<ComponentServer> ComponentServers;
+
+ interface ServerActivator
+ {
+ ComponentServer create_component_server (in ConfigValues config)
+ raises (CreateFailure,
+ InvalidConfiguration);
+
+ void remove_component_server (in ComponentServer server)
+ raises (RemoveFailure);
+
+ ComponentServers get_component_servers ();
+ };
+
+ interface Container; // Forward decl.
+ typedef sequence<Container> Containers;
+
+ interface ComponentServer
+ {
+ readonly attribute ConfigValues configuration;
+
+ ServerActivator get_server_activator ();
+ Container create_container (in ConfigValues config)
+ raises (CreateFailure,
+ InvalidConfiguration);
+
+ void remove_container (in Container cref)
+ raises (RemoveFailure);
+
+ Containers get_containers ();
+
+ void remove ()
+ raises (RemoveFailure);
+ };
+
+ exception ImplEntryPointNotFound {};
+
+ interface Container
+ {
+ readonly attribute ConfigValues configuration;
+
+ ComponentServer get_component_server ();
+
+ CCMHome install_home (in UUID id,
+ in string entrypt,
+ in ConfigValues config)
+ raises (UnknownImplId,
+ ImplEntryPointNotFound,
+ InstallationFailure,
+ InvalidConfiguration);
+
+ void remove_home (in CCMHome href)
+ raises (RemoveFailure);
+
+ CCMHomes get_homes ();
+ void remove ()
+ raises (RemoveFailure);
+
+ };
+
+ };
+};
diff --git a/TAO/tao/ccm_core/CosPersistentState.idl b/TAO/tao/ccm_core/CosPersistentState.idl
new file mode 100644
index 00000000000..65813eb4ed8
--- /dev/null
+++ b/TAO/tao/ccm_core/CosPersistentState.idl
@@ -0,0 +1,16 @@
+// $Id$
+
+/**
+ * @@ This is just a temporary file. Since TAO does not have
+ * CosPersistentState at all, we use this file to define
+ * types necessary to get ComponentBase.idl to compile.
+ */
+
+module CosPersistentState {
+ local interface CatalogBase
+ {
+ };
+
+ typedef sequence<octet> TypeId;
+ typedef string Pid;
+};