📄 ft_replicationmanager.h
字号:
/* -*- C++ -*- */
//=============================================================================
/**
* @file FT_ReplicationManager.h
*
* FT_ReplicationManager.h,v 1.3 2003/12/30 23:53:58 wilson_d Exp
*
* This file is part of Fault Tolerant CORBA.
*
* @author Curt Hibbs <hibbs_c@ociweb.com>
*/
//=============================================================================
#ifndef FT_REPLICATION_MANAGER_H_
#define FT_REPLICATION_MANAGER_H_
#include /**/ "ace/pre.h"
#include <ace/ACE.h>
#if !defined (ACE_LACKS_PRAGMA_ONCE)
#pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */
#include <orbsvcs/FT_ReplicationManagerS.h>
//#include <orbsvcs/PortableGroup/PG_PropertyManager.h>
//#include <orbsvcs/PortableGroup/PG_GenericFactory.h>
//#include <orbsvcs/PortableGroup/PG_ObjectGroupManager.h>
// Note: the new, improved versions...
//#include <orbsvcs/PortableGroup/PG_Object_Group_Map.h>
#include <orbsvcs/PortableGroup/PG_Properties_Support.h>
#include <orbsvcs/PortableGroup/PG_Group_Factory.h>
#include <orbsvcs/PortableGroup/PG_FactoryRegistry.h>
#include <orbsvcs/FT_ReplicationManager/FT_FaultConsumer.h>
namespace TAO
{
/**
* Implement the ReplicationManager interfaces.
*
* The ReplicationManager does most of its work by delegating to
* support objects. These include:
*
* TAO::PG_Group_Factory group_factory_;
* The group factory contains a collection of TAO::PG_Object_Groups
* It provides methods to create new groups, destroy old groups and
* find existing groups.
*
* TAO::PG_Object_Group
* These objects which can be found through the group factory provde
* methods to create and add group members, remove and delete group
* members and set group properties.
*
* TAO::PG_Properties_Support properties_support_;
* This object maintains sets of properties(TAO::PG_Property_Set).
* In particular it has one default property set, and a collection of
* property sets indexed by type_id.
* The default property set acts as a parent to the type_id property
* sets and the type_id property sets act as parents to the property
* sets contained in PG_Object_Group.
*
* FT::FaultNotifier_var fault_notifier_;
* This notification channel is "the" source of fault notifications.
*
* TAO::FT_FaultConsumer fault_consumer_;
* This object subscribes to the fault_notifier_as a fault consumer. It
* analyzes incoming fault notifications and calls appropriate ReplicationManager
* methods to respond to the fault.
*
* TAO::PG_FactoryRegistry factory_registry_;
* This object maintains a collection of factory registrations. When a factory
* is started it registeres itself with the ReplicationManager (delegated to this
* object). When a member needs to be created in an object group this factory
* registry is queried to find factories that can create the member.
*/
class FT_ReplicationManager
: public virtual POA_FT::ReplicationManager,
public virtual PortableServer::RefCountServantBase
{
//////////////////////
// non-CORBA interface
public:
/**
* Default constructor.
* Call init after constructing the object to prepare it for use.
*/
FT_ReplicationManager ();
/**
* Destructor.
* Actual cleanup happens in the fini function.
*/
virtual ~FT_ReplicationManager ();
public:
/**
* Parse command line arguments.
* @param argc traditional C argc
* @param argv traditional C argv
* @return zero for success; nonzero is process return code for failure.
*/
int parse_args (int argc, char * argv[]);
/**
* Initialize this object.
* @param orb Our CORBA::ORB -- we keep var to it.
* @return zero for success; nonzero is process return code for failure.
*/
int init (CORBA::ORB_ptr orb ACE_ENV_ARG_DECL);
/**
* Prepare to exit.
* @return zero for success; nonzero is process return code for failure.
*/
int fini (ACE_ENV_SINGLE_ARG_DECL);
/**
* Idle-time activity.
*
* @param result is set to process return code if return value is non-zero.
* @return zero to continue; nonzero to exit
*/
int idle (int & result ACE_ENV_ARG_DECL);
/**
* Identify this fault detector factory.
* @return a string to identify this object for logging/console message purposes.
*/
const char * identity () const;
/**
* Get the type_id associated with an object group.
* @param object_group The ObjectGroup.
* @return String identifying the type id associated with the ObjectGroup.
*/
char * type_id (PortableGroup::ObjectGroup_ptr object_group
ACE_ENV_ARG_DECL);
//////////////////////
// CORBA interface(s)
public:
/**
* @name POA_FT::ReplicationManager Methods
*
* Methods required by the POA_FT::ReplicationManager interface.
*/
//@{
/// Registers the Fault Notifier with the Replication Manager.
virtual void register_fault_notifier (
FT::FaultNotifier_ptr fault_notifier
ACE_ENV_ARG_DECL
)
ACE_THROW_SPEC ((
CORBA::SystemException
));
/// Returns the reference of the Fault Notifier.
virtual FT::FaultNotifier_ptr get_fault_notifier (
ACE_ENV_SINGLE_ARG_DECL
)
ACE_THROW_SPEC ((
CORBA::SystemException
, FT::InterfaceNotFound
));
/// TAO-specific find factory registry
virtual ::PortableGroup::FactoryRegistry_ptr get_factory_registry (
const PortableGroup::Criteria & selection_criteria
ACE_ENV_ARG_DECL
)
ACE_THROW_SPEC ((
CORBA::SystemException
));
/// TAO-specific shutdown operation.
virtual void shutdown (
ACE_ENV_SINGLE_ARG_DECL
)
ACE_THROW_SPEC ((
CORBA::SystemException
));
//@}
/**
* @name PortableGroup::PropertyManager Methods
*
* Methods required by the PortableGroup::PropertyManager interface.
*/
//@{
/// Set the default properties to be used by all object groups.
virtual void set_default_properties (
const PortableGroup::Properties & props
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
PortableGroup::InvalidProperty,
PortableGroup::UnsupportedProperty));
/// Get the default properties used by all object groups.
virtual PortableGroup::Properties * get_default_properties (
ACE_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
/// Remove default properties.
virtual void remove_default_properties (
const PortableGroup::Properties & props
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
PortableGroup::InvalidProperty,
PortableGroup::UnsupportedProperty));
/**
* Set properties associated with a given Replica type. These
* properties override the default properties on a name-by-name basis.
*/
virtual void set_type_properties (
const char * type_id,
const PortableGroup::Properties & overrides
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
PortableGroup::InvalidProperty,
PortableGroup::UnsupportedProperty));
/**
* Return the properties associated with a given Replica type. These
* properties include the type-specific properties in use, in
* addition to the default properties that were not overridden.
*/
virtual PortableGroup::Properties * get_type_properties (
const char * type_id
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException));
/// Remove the given properties associated with the Replica type ID.
virtual void remove_type_properties (
const char * type_id,
const PortableGroup::Properties & props
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
PortableGroup::InvalidProperty,
PortableGroup::UnsupportedProperty));
/**
* Dynamically set the properties associated with a given object
* group as the replication manager and replicas are being executed.
* These properties override the type-specific and default
* properties.
*/
virtual void set_properties_dynamically (
PortableGroup::ObjectGroup_ptr object_group,
const PortableGroup::Properties & overrides
ACE_ENV_ARG_DECL)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -