//$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/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 Properties; typedef Name Location; typedef sequence Locations; typedef Properties Criteria; /** * @struct FactoryInfo * * @brief <@todo> * */ struct FactoryInfo { GenericFactory _factory; Location the_location; Criteria the_criteria; }; typedef sequence 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_