diff options
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/FT_CORBA.idl')
-rw-r--r-- | TAO/orbsvcs/orbsvcs/FT_CORBA.idl | 352 |
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_ |