diff options
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/FT_FaultDetectorFactory.idl')
-rw-r--r-- | TAO/orbsvcs/orbsvcs/FT_FaultDetectorFactory.idl | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/TAO/orbsvcs/orbsvcs/FT_FaultDetectorFactory.idl b/TAO/orbsvcs/orbsvcs/FT_FaultDetectorFactory.idl new file mode 100644 index 00000000000..b783eb46ace --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/FT_FaultDetectorFactory.idl @@ -0,0 +1,119 @@ +// -*- IDL -*- + +//============================================================================= +/** + * @file FT_FaultDetectorFactory.idl + * + * $Id$ + * + * @author: Dale Wilson, OCI <wilson_d@ociweb.com> + */ +//============================================================================= + +#ifndef _FT_DETECTOR_FACTORY_IDL_ +#define _FT_DETECTOR_FACTORY_IDL_ + +// A TAO specific addition to FT_CORBA. +// No interface was specified for the FaultDetector +// in the FT CORBA specification, so we decided to +// define a GenericFactory to create FaultDetectors and +// control the FaultDetectors through the GenericFactory +// interface (with extenstions.) + +#pragma prefix "omg.org" + +#include "orbsvcs/FT_CORBA.idl" +#include "orbsvcs/FT_Replica.idl" +#include "orbsvcs/PortableGroup.idl" + +module FT +{ + /////////////////////////////////////////////////// + // names for properties used in Fault Tolerant CORBA + /// TimeBase::TimeT how often to call is_alive(); + const string FT_FAULT_MONITORING_INTERVAL = "MonitoringInterval"; + + /// FT::FaultNotifier where to send fault reports + const string FT_NOTIFIER = "Notifier"; + + /// FT::PullMonitorable the object to monitor + const string FT_MONITORABLE = "Monitorable"; + + /////////////////////////////////////////// + // Names specified in the FT CORBA specification + + const string FT_EVENT_TYPE_DOMAIN = "FT_CORBA"; + const string FT_EVENT_TYPE_NAME = "ObjectCrashFault"; + + /// FT::FTDomainId domain to report to notifier + const string FT_DOMAIN_ID = "FTDomainId"; + + /// FT::Location location to report to notifier + const string FT_LOCATION = "Location"; + + /// FT::TypeId type to report to notifier + const string FT_TYPE_ID = "TypeId"; + + /// FT::ObjectGroupId group to report to notifier + const string FT_GROUP_ID = "GroupId"; + + // end of names from FT CORBA specification + /////////////////////////////////////////// + + ///////////////////////////// + // RoleName FaultDetectorFactory uses to register + // with Factory Registery + const string FAULT_DETECTOR_ROLE_NAME = "FT_FaultDetector"; + + /** + * A FaultDetectorFactory creates and manages a set of FaultDetectors. + * + * A FaultDetectorFactory acts as an agent for a ReplicationManager + * which needs to create one or more FaultDetectors at a particular + * location. + * + * At present, FaultDetectors monitor via the is_alive() method of + * the PullMonitorable interface which must be implemented by the + * object-to-be-monitored. Other monitoring techniques may be + * supported in the future. In particular heartbeat/watchdog + * monitoring is anticipated. + * + * Notifications of failing objects are sent to a FaultNotifier + * which is responsible for distributing them to interested parties. + * + * The implementation of the GenericFactory::create_object method + * creates a FaultDetector object to monitor a single monitorable. + * The FaultDetector is *not* a first-class CORBA object. The + * Object reference returned by create_object will be nil. You + * cannot interact directly with a FaultDetector. + * The only interaction that a FaultDetector needs after it is + * started is to tell it to change it's monitoring parameters, + * or to shut down. The change_properties () and shutdown () + * methods on the Factory provide the needed capabilities. + * + * The create_object requires the following criteria: + * FT::Notifier Notifier + * FT::PullMonitorable Monitorable + * PortableGroup::DomainId domain_id, + * PortableGroup::ObjectGroupId group_id, + * PortableGroup::Location object_location, + * PortableGroup::_TypeId object_type + */ + interface FaultDetectorFactory : ::PortableGroup::GenericFactory, PullMonitorable + { + /** + * Adjust properties on-the-fly. + * Applies to all FaultDetectors created by this factory. + * @param property_set is a set of properties that (may) have new values. + */ + void change_properties(in ::PortableGroup::Properties property_set) + raises (::PortableGroup::InvalidProperty); + + /** + * Ask the Fault Detector Factory to come to an orderly end. + */ + oneway void shutdown(); + }; +}; + +#endif // for #ifndef _FT_DETECTOR_FACTORY_IDL_ |