summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/FT_CORBA.idl
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/FT_CORBA.idl')
-rw-r--r--TAO/orbsvcs/orbsvcs/FT_CORBA.idl352
1 files changed, 352 insertions, 0 deletions
diff --git a/TAO/orbsvcs/orbsvcs/FT_CORBA.idl b/TAO/orbsvcs/orbsvcs/FT_CORBA.idl
new file mode 100644
index 00000000000..144c2290bbe
--- /dev/null
+++ b/TAO/orbsvcs/orbsvcs/FT_CORBA.idl
@@ -0,0 +1,352 @@
+//$Id$
+// FT.idl
+#ifndef _FT_IDL_
+#define _FT_IDL_
+
+// The OMG file has been devided into several portions:
+// FT_CORBA.idl
+// FT_CORBA_ORB.idl
+// FT_Detector.idl
+// FT_Notifier.idl
+// FT_Replica.idl
+
+// The next include is TAO specific.
+#include "orbsvcs/FT_CORBA_ORB.idl"
+
+#define FT_USES_PORTABLE_GROUP
+
+#ifdef FT_USES_PORTABLE_GROUP
+# include "orbsvcs/PortableGroup.idl"
+#else // FT_USES_PORTABLE_GROUP
+#include "orbsvcs/CosNaming.idl" // 98-10-19.idl
+#endif // FT_USES_PORTABLE_GROUP
+
+#include "orbsvcs/CosNotification.idl" // from telecom/98-11-03.idl
+#include "orbsvcs/CosNotifyFilter.idl"
+
+#pragma prefix "omg.org"
+
+module FT
+{
+ /// Forward declarations
+ interface FaultNotifier;
+
+ typedef long ReplicationStyleValue;
+ const ReplicationStyleValue STATELESS = 0;
+ const ReplicationStyleValue COLD_PASSIVE = 1;
+ const ReplicationStyleValue WARM_PASSIVE = 2;
+ const ReplicationStyleValue ACTIVE = 3;
+ const ReplicationStyleValue ACTIVE_WITH_VOTING = 4;
+ const ReplicationStyleValue SEMI_ACTIVE = 5;
+
+ typedef long ConsistencyStyleValue;
+ const ConsistencyStyleValue CONS_APP_CTRL = 0;
+ const ConsistencyStyleValue CONS_INF_CTRL = 1;
+
+ typedef long FaultMonitoringStyleValue;
+ const FaultMonitoringStyleValue PULL = 0;
+ const FaultMonitoringStyleValue PUSH = 1;
+ const FaultMonitoringStyleValue NOT_MONITORED = 2;
+
+ typedef long FaultMonitoringGranularityValue;
+ const FaultMonitoringGranularityValue MEMB = 0;
+ const FaultMonitoringGranularityValue LOC = 1;
+ const FaultMonitoringGranularityValue LOC_AND_TYPE = 2;
+
+ struct FaultMonitoringIntervalAndTimeoutValue {
+ TimeBase::TimeT monitoring_interval;
+ TimeBase::TimeT timeout;
+ };
+
+ exception BadReplicationStyle {};
+ exception PrimaryNotSet {};
+
+#ifdef FT_USES_PORTABLE_GROUP
+ /////////////////////////////////////////
+ // The following typedefs "import"
+ // definitions from the PortableGroup module
+ // definitions into the FT module.
+ // This is an interim step during the process
+ // of having FT depend on the commmon
+ // of PortableGroup module rather than defining
+ // everything itself.
+
+ // this typedef trick doesn't work for exceptions, so they must
+ // use the PortableGroup:: prefix
+ typedef PortableGroup::_TypeId _TypeId;
+ typedef PortableGroup::ObjectGroup ObjectGroup;
+ typedef PortableGroup::Name Name;
+ typedef PortableGroup::Value Value;
+ typedef PortableGroup::Property Property;
+ typedef PortableGroup::Properties Properties;
+ typedef PortableGroup::Location Location;
+ typedef PortableGroup::Locations Locations;
+ typedef PortableGroup::Criteria Criteria;
+
+ typedef PortableGroup::FactoryInfo FactoryInfo;
+ typedef PortableGroup::FactoryInfos FactoryInfos;
+ typedef PortableGroup::MembershipStyleValue MembershipStyleValue;
+
+ typedef PortableGroup::FactoriesValue FactoriesValue;
+ typedef PortableGroup::InitialNumberMembersValue InitialNumberMembersValue;
+ typedef PortableGroup::MinimumNumberMembersValue MinimumNumberMembersValue;
+ typedef PortableGroup::PropertyManager PropertyManager;
+ typedef PortableGroup::ObjectGroupManager ObjectGroupManager;
+ typedef PortableGroup::GenericFactory GenericFactory;
+
+ // Specification of FTObjectGroupManager Interface
+ // which ReplicationManager Inherits
+ interface FTObjectGroupManager : PortableGroup::ObjectGroupManager {
+
+ ::PortableGroup::ObjectGroup set_primary_member(in ::PortableGroup::ObjectGroup object_group,
+ in ::PortableGroup::Location the_location)
+ raises(PortableGroup::ObjectGroupNotFound,
+ PortableGroup::MemberNotFound,
+ PrimaryNotSet,
+ BadReplicationStyle);
+ };
+
+
+ ///////////////////////////////////////////////////
+ // names for properties used in Fault Tolerant CORBA
+
+ /// FT::ReplicationStyle
+ const string FT_REPLICATION_STYLE = "org.omg.ft.ReplicationStyle";
+
+ /// FT::ConsistencyStyle
+ const string FT_CONSISTENCY_STYLE = "org.omg.ft.ConsistencyStyle";
+
+ /// FT::MembershipStyle
+ const string FT_MEMBERSHIP_STYLE = PortableGroup::PG_MEMBERSHIP_STYLE;
+ const PortableGroup::MembershipStyleValue MEMB_APP_CTRL = PortableGroup::MEMB_APP_CTRL;
+ const PortableGroup::MembershipStyleValue MEMB_INF_CTRL = PortableGroup::MEMB_INF_CTRL;
+
+ /// FT::FaultMonitoringStyle
+ const string FT_FAULT_MONITORING_STYLE = "org.omg.ft.FaultMonitoringStyle";
+
+ /// FT::FaultMonitoringGranularity
+ const string FT_FAULT_MONITORING_GRANULARITY = "org.omg.ft.FaultMonitoringGranularity";
+
+ /// FT::InitialNumberMembers
+ const string FT_INITIAL_NUMBER_MEMBERS = PortableGroup::PG_INITIAL_NUMBER_MEMBERS;
+
+ /// FT::MinimumNumberMembers
+ const string FT_MINIMUM_NUMBER_MEMBERS = PortableGroup::PG_MINIMUM_NUMBER_MEMBERS;
+
+ /// Factories
+ const string FT_FACTORIES = PortableGroup::PG_FACTORIES;
+
+ /// FT::FaultMonitoringIntervalAndTimeou
+ const string FT_FAULT_MONITORING_INTERVAL_AND_TIMEOUT = "org.omg.ft.FaultMonitoringIntervalAndTimeout";
+
+ /// FT::CheckpointInterval
+ const string FT_CHECKPOINT_INTERVAL = "org.omg.ft.CheckpointInterval";
+
+ // end of property names from FT CORBA specification
+ ///////////////////////////////////////////////////
+
+
+#else // (not) FT_USES_PORTABLE_GROUP
+ interface GenericFactory;
+
+ /// Useful typedefs.
+ typedef CORBA::RepositoryId _TypeId;
+ typedef Object ObjectGroup;
+
+ typedef CosNaming::Name Name;
+ typedef any Value;
+
+ /**
+ * @struct Property
+ *
+ * @brief A property name and a value association.
+ */
+ struct Property {
+ Name nam;
+ Value val;
+ };
+
+ /// Some mor euseful typedefs.
+ typedef sequence<Property> Properties;
+ typedef Name Location;
+ typedef sequence<Location> Locations;
+ typedef Properties Criteria;
+
+
+ /**
+ * @struct FactoryInfo
+ *
+ * @brief <@todo>
+ *
+ */
+ struct FactoryInfo {
+ GenericFactory _factory;
+ Location the_location;
+ Criteria the_criteria;
+ };
+
+ typedef sequence<FactoryInfo> FactoryInfos;
+
+ typedef long ReplicationStyleValue;
+ const ReplicationStyleValue STATELESS = 0;
+ const ReplicationStyleValue COLD_PASSIVE = 1;
+ const ReplicationStyleValue WARM_PASSIVE = 2;
+ const ReplicationStyleValue ACTIVE = 3;
+ const ReplicationStyleValue ACTIVE_WITH_VOTING = 4;
+ typedef long MembershipStyleValue;
+ const MembershipStyleValue MEMB_APP_CTRL = 0;
+ const MembershipStyleValue MEMB_INF_CTRL = 1;
+ typedef long ConsistencyStyleValue;
+ const ConsistencyStyleValue CONS_APP_CTRL = 0;
+ const ConsistencyStyleValue CONS_INF_CTRL = 1;
+ typedef long FaultMonitoringStyleValue;
+ const FaultMonitoringStyleValue PULL = 0;
+ const FaultMonitoringStyleValue PUSH = 1;
+ const FaultMonitoringStyleValue NOT_MONITORED = 2;
+ typedef long FaultMonitoringGranularityValue;
+ const FaultMonitoringGranularityValue MEMB = 0;
+ const FaultMonitoringGranularityValue LOC = 1;
+ const FaultMonitoringGranularityValue LOC_AND_TYPE = 2;
+ typedef FactoryInfos FactoriesValue;
+ typedef unsigned short InitialNumberMembersValue;
+ typedef unsigned short MinimumNumberMembersValue;
+
+ struct FaultMonitoringIntervalAndTimeoutValue {
+ TimeBase::TimeT monitoring_interval;
+ TimeBase::TimeT timeout;
+ };
+
+ typedef TimeBase::TimeT CheckpointIntervalValue;
+ exception InterfaceNotFound {};
+ exception ObjectGroupNotFound {};
+ exception MemberNotFound {};
+ exception ObjectNotFound {};
+ exception MemberAlreadyPresent {};
+ exception BadReplicationStyle {};
+ exception ObjectNotCreated {};
+ exception ObjectNotAdded {};
+ exception PrimaryNotSet {};
+ exception UnsupportedProperty {
+ Name nam;
+ Value val;
+ };
+
+ exception InvalidProperty {
+ Name nam;
+ Value val; };
+
+ exception NoFactory {
+ Location the_location;
+ _TypeId type_id; };
+
+ exception InvalidCriteria {
+ Criteria invalid_criteria; };
+
+ exception CannotMeetCriteria {
+ Criteria unmet_criteria; };
+
+ // Specification of PropertyManager Interface
+ // which ReplicationManager Inherits
+
+ interface PropertyManager {
+
+ void set_default_properties(in Properties props)
+ raises (InvalidProperty, UnsupportedProperty);
+ Properties get_default_properties();
+
+ void remove_default_properties(in Properties props)
+ raises (InvalidProperty, UnsupportedProperty);
+
+ void set_type_properties(in _TypeId type_id,
+ in Properties overrides)
+ raises (InvalidProperty, UnsupportedProperty);
+
+ Properties get_type_properties(in _TypeId type_id);
+
+ void remove_type_properties(in _TypeId type_id,
+ in Properties props)
+ raises (InvalidProperty, UnsupportedProperty);
+
+ void set_properties_dynamically(in ObjectGroup object_group,
+ in Properties overrides)
+ raises(ObjectGroupNotFound, InvalidProperty, UnsupportedProperty);
+
+ Properties get_properties(in ObjectGroup object_group)
+ raises(ObjectGroupNotFound);
+ };
+
+ // Specification of ObjectGroupManager Interface
+ // which ReplicationManager Inherits
+ interface ObjectGroupManager {
+ ObjectGroup create_member(in ObjectGroup object_group,
+ in Location the_location,
+ in _TypeId type_id,
+ in Criteria the_criteria)
+ raises(ObjectGroupNotFound,
+ MemberAlreadyPresent,
+ NoFactory,
+ ObjectNotCreated,
+ InvalidCriteria,
+ CannotMeetCriteria);
+
+ ObjectGroup add_member(in ObjectGroup object_group,
+ in Location the_location,
+ in Object member)
+ raises(ObjectGroupNotFound,
+ MemberAlreadyPresent,
+ ObjectNotAdded);
+
+ ObjectGroup remove_member(in ObjectGroup object_group,
+ in Location the_location)
+ raises(ObjectGroupNotFound,
+ MemberNotFound);
+
+ ObjectGroup set_primary_member(in ObjectGroup object_group,
+ in Location the_location)
+ raises(ObjectGroupNotFound,
+ MemberNotFound,
+ PrimaryNotSet,
+ BadReplicationStyle);
+
+ Locations locations_of_members(in ObjectGroup object_group)
+ raises(ObjectGroupNotFound);
+
+ ObjectGroupId get_object_group_id(in ObjectGroup object_group)
+ raises(ObjectGroupNotFound);
+
+ ObjectGroup get_object_group_ref(in ObjectGroup object_group)
+ raises(ObjectGroupNotFound);
+
+ Object get_member_ref(in ObjectGroup object_group,
+ in Location loc)
+ raises(ObjectGroupNotFound, MemberNotFound);
+ };
+
+
+ // Specification of GenericFactory Interface
+ // which ReplicationManager Inherits and Application Objects Implement
+ interface GenericFactory {
+ typedef any FactoryCreationId;
+ Object create_object(in _TypeId type_id,
+ in Criteria the_criteria,
+ out FactoryCreationId factory_creation_id)
+ raises (NoFactory,
+ ObjectNotCreated,
+ InvalidCriteria,
+ InvalidProperty,
+ CannotMeetCriteria);
+
+ void delete_object(in FactoryCreationId factory_creation_id)
+ raises (ObjectNotFound);
+ };
+
+#endif // FT_USES_PORTABLE_GROUP
+
+ // Specifications for Fault Management moved to FT_Replica.idl
+ // Specification of FaultNotifier Interface: moved to FT_Notifier.idl
+ // Specifications for Logging and Recovery: moved to FT_Replica.idl
+ // Specifications for Replication Manager moved to FT_ReplicationManager.idl
+};
+
+
+#endif // for #ifndef _FT_IDL_