active_object_map.h
来自「这是广泛使用的通信开源项目,对于大容量,高并发的通讯要求完全能够胜任,他广泛可用」· C头文件 代码 · 共 652 行 · 第 1/2 页
H
652 行
/// Must be used with UNIQUE_ID policy.
virtual int is_servant_in_map (PortableServer::Servant servant,
int &deactivated);
/// Can be used with any policy. With the SYSTEM_ID policy,
/// <user_id> is actually <system_id>.
virtual int unbind_using_user_id (const PortableServer::ObjectId &user_id);
/// Must be used with UNIQUE_ID policy. With the SYSTEM_ID policy,
/// <user_id> is actually <system_id>.
virtual int find_user_id_using_servant (PortableServer::Servant servant,
PortableServer::ObjectId_out user_id);
/// Must be used with UNIQUE_ID policy. With the SYSTEM_ID policy,
/// <user_id> is actually <system_id>.
virtual int find_system_id_using_servant (PortableServer::Servant servant,
PortableServer::ObjectId_out system_id,
CORBA::Short &priority);
/// Can be used with any policy. With the SYSTEM_ID policy,
/// <user_id> is actually <system_id>.
virtual int bind_using_user_id (PortableServer::Servant servant,
const PortableServer::ObjectId &user_id,
CORBA::Short priority,
TAO_Active_Object_Map::Map_Entry *&entry);
/// Are there any remaining activations of <servant> in the active
/// object map? Can be used with any policy.
virtual CORBA::Boolean remaining_activations (PortableServer::Servant servant);
};
/**
* @class TAO_Multiple_Id_Strategy
*
* @brief Multiple id strategy.
*
* Strategy for the MULTIPLE_ID policy.
*/
class TAO_Multiple_Id_Strategy : public TAO_Id_Uniqueness_Strategy
{
public:
/// Must be used with UNIQUE_ID policy.
virtual int is_servant_in_map (PortableServer::Servant servant,
int &deactivated);
/// Can be used with any policy. With the SYSTEM_ID policy,
/// <user_id> is actually <system_id>.
virtual int unbind_using_user_id (const PortableServer::ObjectId &user_id);
/// Must be used with UNIQUE_ID policy. With the SYSTEM_ID policy,
/// <user_id> is actually <system_id>.
virtual int find_user_id_using_servant (PortableServer::Servant servant,
PortableServer::ObjectId_out user_id);
/// Must be used with UNIQUE_ID policy. With the SYSTEM_ID policy,
/// <user_id> is actually <system_id>.
virtual int find_system_id_using_servant (PortableServer::Servant servant,
PortableServer::ObjectId_out system_id,
CORBA::Short &priority);
/// Can be used with any policy. With the SYSTEM_ID policy,
/// <user_id> is actually <system_id>.
virtual int bind_using_user_id (PortableServer::Servant servant,
const PortableServer::ObjectId &user_id,
CORBA::Short priority,
TAO_Active_Object_Map::Map_Entry *&entry);
/// Are there any remaining activations of <servant> in the active
/// object map? Can be used with any policy.
virtual CORBA::Boolean remaining_activations (PortableServer::Servant servant);
};
/**
* @class TAO_Lifespan_Strategy
*
* @brief Lifespan strategy.
*
* Strategy for implementing points of variation between the
* TRANSIENT and the PERSISTENT policies.
*/
class TAO_Lifespan_Strategy
{
public:
/// Virtual destructor.
virtual ~TAO_Lifespan_Strategy (void);
/// Can be used with any policy.
virtual int find_servant_using_system_id_and_user_id (const PortableServer::ObjectId &system_id,
const PortableServer::ObjectId &user_id,
PortableServer::Servant &servant,
TAO_Active_Object_Map::Map_Entry *&entry) = 0;
/// Set the active map.
void set_active_object_map (TAO_Active_Object_Map *active_object_map);
protected:
/// Pointer to the active map.
TAO_Active_Object_Map *active_object_map_;
};
/**
* @class TAO_Transient_Strategy
*
* @brief Transient strategy.
*
* Strategy for the TRANSIENT policy.
*/
class TAO_Transient_Strategy : public TAO_Lifespan_Strategy
{
public:
/// Can be used with any policy.
virtual int find_servant_using_system_id_and_user_id (const PortableServer::ObjectId &system_id,
const PortableServer::ObjectId &user_id,
PortableServer::Servant &servant,
TAO_Active_Object_Map::Map_Entry *&entry);
};
/**
* @class TAO_Persistent_Strategy
*
* @brief Persistent strategy.
*
* Strategy for the PERSISTENT policy.
*/
class TAO_Persistent_Strategy : public TAO_Lifespan_Strategy
{
public:
/// Can be used with any policy.
virtual int find_servant_using_system_id_and_user_id (const PortableServer::ObjectId &system_id,
const PortableServer::ObjectId &user_id,
PortableServer::Servant &servant,
TAO_Active_Object_Map::Map_Entry *&entry);
};
/**
* @class TAO_Id_Assignment_Strategy
*
* @brief Id uniqueness strategy.
*
* Strategy for implementing points of variation between the
* USER_ID and the SYSTEM_ID policies.
*/
class TAO_Id_Assignment_Strategy
{
public:
/// Virtual destructor.
virtual ~TAO_Id_Assignment_Strategy (void);
/// Must be used with SYSTEM_ID policy.
virtual int bind_using_system_id (PortableServer::Servant servant,
CORBA::Short priority,
TAO_Active_Object_Map::Map_Entry *&entry) = 0;
/// Set the active map.
void set_active_object_map (TAO_Active_Object_Map *active_object_map);
protected:
/// Pointer to the active map.
TAO_Active_Object_Map *active_object_map_;
};
/**
* @class TAO_User_Id_Strategy
*
* @brief User id strategy.
*
* Strategy for the USER_ID policy.
*/
class TAO_User_Id_Strategy : public TAO_Id_Assignment_Strategy
{
public:
/// Must be used with SYSTEM_ID policy.
virtual int bind_using_system_id (PortableServer::Servant servant,
CORBA::Short priority,
TAO_Active_Object_Map::Map_Entry *&entry);
};
/**
* @class TAO_System_Id_With_Unique_Id_Strategy
*
* @brief System id strategy.
*
* Strategy for the SYSTEM_ID policy (with UNIQUE_ID policy).
*/
class TAO_System_Id_With_Unique_Id_Strategy : public TAO_Id_Assignment_Strategy
{
public:
/// Must be used with SYSTEM_ID policy.
virtual int bind_using_system_id (PortableServer::Servant servant,
CORBA::Short priority,
TAO_Active_Object_Map::Map_Entry *&entry);
};
/**
* @class TAO_System_Id_With_Multiple_Id_Strategy
*
* @brief System id strategy.
*
* Strategy for the SYSTEM_ID policy (with MULTIPLE_ID policy).
*/
class TAO_System_Id_With_Multiple_Id_Strategy : public TAO_Id_Assignment_Strategy
{
public:
/// Must be used with SYSTEM_ID policy.
virtual int bind_using_system_id (PortableServer::Servant servant,
CORBA::Short priority,
TAO_Active_Object_Map::Map_Entry *&entry);
};
/**
* @class TAO_Id_Hint_Strategy
*
* @brief Id uniqueness strategy.
*
* Strategy for implementing points of variation between the
* active hint and the no hint policies.
*/
class TAO_Id_Hint_Strategy
{
public:
/// Virtual destructor.
virtual ~TAO_Id_Hint_Strategy (void);
/// Find the user id from the system id.
virtual int recover_key (const PortableServer::ObjectId &system_id,
PortableServer::ObjectId &user_id) = 0;
/// Add to map.
virtual int bind (TAO_Active_Object_Map::Map_Entry &entry) = 0;
/// Remove from map.
virtual int unbind (TAO_Active_Object_Map::Map_Entry &entry) = 0;
/// Find system id.
virtual int find (const PortableServer::ObjectId &system_id,
TAO_Active_Object_Map::Map_Entry *&entry) = 0;
/// How big is the hint generated by this strategy?
virtual size_t hint_size (void) = 0;
/// Get the system id associated with this entry.
virtual int system_id (PortableServer::ObjectId_out system_id,
TAO_Active_Object_Map::Map_Entry &entry) = 0;
};
/**
* @class TAO_Active_Hint_Strategy
*
* @brief Active hint strategy.
*
* Strategy for adding active hints to ids.
*/
class TAO_Active_Hint_Strategy : public TAO_Id_Hint_Strategy
{
public:
TAO_Active_Hint_Strategy (CORBA::ULong map_size);
/// Virtual destructor.
virtual ~TAO_Active_Hint_Strategy (void);
virtual int recover_key (const PortableServer::ObjectId &system_id,
PortableServer::ObjectId &user_id);
virtual int bind (TAO_Active_Object_Map::Map_Entry &entry);
virtual int unbind (TAO_Active_Object_Map::Map_Entry &entry);
virtual int find (const PortableServer::ObjectId &system_id,
TAO_Active_Object_Map::Map_Entry *&entry);
virtual size_t hint_size (void);
virtual int system_id (PortableServer::ObjectId_out system_id,
TAO_Active_Object_Map::Map_Entry &entry);
typedef ACE_Active_Map_Manager_Adapter<
PortableServer::ObjectId,
TAO_Active_Object_Map::Map_Entry *,
TAO_Preserve_Original_Key_Adapter> system_id_map;
system_id_map system_id_map_;
};
/**
* @class TAO_No_Hint_Strategy
*
* @brief No hint strategy.
*
* Strategy for not adding active hints to ids.
*/
class TAO_No_Hint_Strategy : public TAO_Id_Hint_Strategy
{
public:
/// Virtual destructor.
virtual ~TAO_No_Hint_Strategy (void);
virtual int recover_key (const PortableServer::ObjectId &system_id,
PortableServer::ObjectId &user_id);
virtual int bind (TAO_Active_Object_Map::Map_Entry &entry);
virtual int unbind (TAO_Active_Object_Map::Map_Entry &entry);
virtual int find (const PortableServer::ObjectId &system_id,
TAO_Active_Object_Map::Map_Entry *&entry);
virtual size_t hint_size (void);
virtual int system_id (PortableServer::ObjectId_out system_id,
TAO_Active_Object_Map::Map_Entry &entry);
};
#if defined (__ACE_INLINE__)
# include "Active_Object_Map.i"
#endif /* __ACE_INLINE__ */
#include /**/ "ace/post.h"
#endif /* TAO_ACTIVE_OBJECT_MAP_H */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?