⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ft_replicationmanager.h

📁 这是广泛使用的通信开源项目,对于大容量,高并发的通讯要求完全能够胜任,他广泛可用于网络游戏医学图像网关的高qos要求.更详细的内容可阅读相应的材料
💻 H
📖 第 1 页 / 共 2 页
字号:
/* -*- 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 + -