00001 // -*- C++ -*- 00002 00003 //======================================================================= 00004 /** 00005 * @file PG_ObjectGroup_Map.h 00006 * 00007 * PG_ObjectGroup_Map.h,v 1.8 2006/03/14 06:14:34 jtc Exp 00008 * 00009 * @author Ossama Othman <ossama@uci.edu> 00010 */ 00011 //======================================================================= 00012 00013 00014 #ifndef TAO_PG_OBJECTGROUP_MAP_H 00015 #define TAO_PG_OBJECTGROUP_MAP_H 00016 00017 #include /**/ "ace/pre.h" 00018 00019 #include "ace/config-all.h" 00020 00021 #if !defined (ACE_LACKS_PRAGMA_ONCE) 00022 # pragma once 00023 #endif /* ACE_LACKS_PRAGMA_ONCE */ 00024 00025 #include "orbsvcs/PortableGroup/PG_MemberInfo.h" 00026 00027 #include "orbsvcs/PortableGroupC.h" 00028 00029 #include "tao/PortableServer/Key_Adapters.h" 00030 #include "tao/PortableServer/PortableServerC.h" 00031 00032 #include "ace/Hash_Map_Manager_T.h" 00033 #include "ace/Null_Mutex.h" 00034 00035 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00036 00037 /** 00038 * @class TAO_PG_ObjectGroup_Map_Entry 00039 * 00040 * @brief Value field of the ObjectGroup map. 00041 */ 00042 struct TAO_PG_ObjectGroup_Map_Entry 00043 { 00044 public: 00045 00046 /// The RepositoryId corresponding to all Members in the 00047 /// ObjectGroup. 00048 CORBA::String_var type_id; 00049 00050 /// This is the PortableGroup::ObjectGroupId. 00051 /** 00052 * The spec states that PortableGroup::ObjectGroupId is a 00053 * CORBA::ULongLong. However, the over 4 billion group IDs that can 00054 * be represented by a CORBA::ULong should be plenty for any 00055 * application. 00056 */ 00057 CORBA::ULong group_id; 00058 00059 /// Reference to the ObjectGroup. 00060 PortableGroup::ObjectGroup_var object_group; 00061 00062 /// Unbounded set containing member references and all related 00063 /// information for each member. 00064 TAO_PG_MemberInfo_Set member_infos; 00065 00066 /// Properties used when creating this object group, in addition to 00067 /// those set dynamically after the creation. 00068 PortableGroup::Properties properties; 00069 00070 }; 00071 00072 /// ObjectId hash map typedef. 00073 typedef ACE_Hash_Map_Manager_Ex< 00074 PortableServer::ObjectId, 00075 TAO_PG_ObjectGroup_Map_Entry *, 00076 TAO_ObjectId_Hash, 00077 ACE_Equal_To<PortableServer::ObjectId>, 00078 ACE_Null_Mutex> TAO_PG_ObjectGroup_Map; 00079 00080 TAO_END_VERSIONED_NAMESPACE_DECL 00081 00082 #include /**/ "ace/post.h" 00083 00084 #endif /* TAO_PG_OBJECTGROUP_MAP_H */