From 7b5035c2ffab78d38bd6ef85466b32b6dad9781f Mon Sep 17 00:00:00 2001 From: wilson_d Date: Mon, 1 Dec 2003 15:18:34 +0000 Subject: ChangeLogTag: Mon Dec 1 09:16:28 2003 Dale Wilson --- TAO/ChangeLog | 14 +++ .../FT_ReplicationManager.cpp | 131 ++++++++++++++++++--- .../orbsvcs/PortableGroup/PG_Group_Factory.cpp | 4 +- .../PortableGroup/PG_ObjectGroupManager.cpp | 2 - .../orbsvcs/PortableGroup/PG_Object_Group.cpp | 40 +++++++ .../orbsvcs/PortableGroup/PG_Object_Group.h | 23 ++++ 6 files changed, 190 insertions(+), 24 deletions(-) diff --git a/TAO/ChangeLog b/TAO/ChangeLog index 30ddf16d77b..a4943485d1c 100644 --- a/TAO/ChangeLog +++ b/TAO/ChangeLog @@ -1,3 +1,17 @@ +Mon Dec 1 09:16:28 2003 Dale Wilson + + * orbsvcs/FT_ReplicationManager/FT_ReplicationManager.cpp: + Move implementation details to PG_Object_Group + + * orbsvcs/orbsvcs/PortableGroup/PG_Object_Group.h: + * orbsvcs/orbsvcs/PortableGroup/PG_Object_Group.cpp: + Declare remaining functions to support ReplicationManager. + Stubbed out for now. + + * orbsvcs/orbsvcs/PortableGroup/PG_Group_Factory.cpp: + * orbsvcs/orbsvcs/PortableGroup/PG_ObjectGroupManager.cpp: + Resolve linux build warnings. + Sun Nov 30 11:53:38 2003 Dale Wilson * orbsvcs/orbsvcs/PortableGroup/PG_Group_Factory.h: diff --git a/TAO/orbsvcs/FT_ReplicationManager/FT_ReplicationManager.cpp b/TAO/orbsvcs/FT_ReplicationManager/FT_ReplicationManager.cpp index 710d13b638b..cdc8741efd0 100644 --- a/TAO/orbsvcs/FT_ReplicationManager/FT_ReplicationManager.cpp +++ b/TAO/orbsvcs/FT_ReplicationManager/FT_ReplicationManager.cpp @@ -688,8 +688,23 @@ TAO::FT_ReplicationManager::create_member ( PortableGroup::CannotMeetCriteria)) { PortableGroup::ObjectGroup_var result = PortableGroup::ObjectGroup::_nil(); -TODO -//@@ TODO + TAO::PG_Object_Group * group = 0; + if (this->group_factory_.find_group (object_group, group)) + { + group->create_member (the_location, type_id, the_criteria ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN (PortableGroup::ObjectGroup::_nil ()); + result = group->reference (); + } + else + { + if (TAO_debug_level > 0) + { + ACE_ERROR ( (LM_ERROR, + ACE_TEXT ("%T %n (%P|%t) - FT_ReplicationManager::create_member in unknown group\n") + )); + } + ACE_THROW_RETURN (PortableGroup::ObjectGroupNotFound (), result._retn ()); + } return result._retn(); } @@ -712,12 +727,6 @@ TAO::FT_ReplicationManager::add_member ( TAO::PG_Object_Group * group = 0; if (this->group_factory_.find_group (object_group, group)) { - - /////////////////////// - // Now we do it again using - // our own object group collection - // @@ TODO: if this fails, we're out of synch with the OGM - // @@ unified object group management will fix this someday. group->add_member ( the_location, member @@ -738,7 +747,6 @@ TAO::FT_ReplicationManager::add_member ( ACE_THROW_RETURN (PortableGroup::ObjectGroupNotFound (), result._retn ()); } METHOD_RETURN (TAO::FT_ReplicationManager::add_member) result._retn (); - } PortableGroup::ObjectGroup_ptr @@ -774,9 +782,27 @@ TAO::FT_ReplicationManager::locations_of_members ( ACE_THROW_SPEC ( (CORBA::SystemException, PortableGroup::ObjectGroupNotFound)) { - TODO - return 0; + PortableGroup::Locations * result = 0; + // Find the object group corresponding to this IOGR + TAO::PG_Object_Group * group = 0; + if (this->group_factory_.find_group (object_group, group)) + { + result = group->locations_of_members ( + ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK_RETURN (0); + } + else + { + if (TAO_debug_level > 0) + { + ACE_ERROR ( (LM_ERROR, + ACE_TEXT ("%T %n (%P|%t) - FT_ReplicationManager::locations_of_members: unknown group\n") + )); + } + ACE_THROW_RETURN (PortableGroup::ObjectGroupNotFound (), 0); + } + return result; } PortableGroup::ObjectGroups * @@ -786,7 +812,8 @@ TAO::FT_ReplicationManager::groups_at_location ( ACE_THROW_SPEC ( (CORBA::SystemException)) { TODO - return 0; + ACE_UNUSED_ARG (the_location); + ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), 0); } PortableGroup::ObjectGroupId @@ -796,8 +823,25 @@ TAO::FT_ReplicationManager::get_object_group_id ( ACE_THROW_SPEC ( (CORBA::SystemException, PortableGroup::ObjectGroupNotFound)) { - TODO - return 0; + PortableGroup::ObjectGroupId result = 0; + TAO::PG_Object_Group * group = 0; + if (this->group_factory_.find_group (object_group, group)) + { + group->get_object_group_id (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK_RETURN (result); + result = group->get_object_group_id (); + } + else + { + if (TAO_debug_level > 0) + { + ACE_ERROR ( (LM_ERROR, + ACE_TEXT ("%T %n (%P|%t) - FT_ReplicationManager::get_object_group_id: unknown group\n") + )); + } + ACE_THROW_RETURN (PortableGroup::ObjectGroupNotFound (), result); + } + return result; } PortableGroup::ObjectGroup_ptr @@ -807,8 +851,24 @@ TAO::FT_ReplicationManager::get_object_group_ref ( ACE_THROW_SPEC ( (CORBA::SystemException, PortableGroup::ObjectGroupNotFound)) { - PortableGroup::ObjectGroup_var result = PortableGroup::ObjectGroup::_nil(); - TODO + PortableGroup::ObjectGroup_var result = PortableGroup::ObjectGroup::_nil (); + + // Find the object group corresponding to this IOGR + TAO::PG_Object_Group * group = 0; + if (this->group_factory_.find_group (object_group, group)) + { + result = group->reference (); + } + else + { + if (TAO_debug_level > 0) + { + ACE_ERROR ( (LM_ERROR, + ACE_TEXT ("%T %n (%P|%t) - FT_ReplicationManager::get_object_group_ref: unknown group\n") + )); + } + ACE_THROW_RETURN (PortableGroup::ObjectGroupNotFound (), result._retn ()); + } return result._retn(); } @@ -821,8 +881,24 @@ TAO::FT_ReplicationManager::get_object_group_ref_from_id ( , PortableGroup::ObjectGroupNotFound )) { - PortableGroup::ObjectGroup_var result = PortableGroup::ObjectGroup::_nil(); - TODO + PortableGroup::ObjectGroup_var result = PortableGroup::ObjectGroup::_nil (); + + // Find the object group corresponding to this IOGR + TAO::PG_Object_Group * group = 0; + if (this->group_factory_.find_group (group_id, group)) + { + result = group->reference (); + } + else + { + if (TAO_debug_level > 0) + { + ACE_ERROR ( (LM_ERROR, + ACE_TEXT ("%T %n (%P|%t) - FT_ReplicationManager::get_object_group_ref_from_id: unknown group\n") + )); + } + ACE_THROW_RETURN (PortableGroup::ObjectGroupNotFound (), result._retn ()); + } return result._retn(); } @@ -836,7 +912,24 @@ TAO::FT_ReplicationManager::get_member_ref ( PortableGroup::MemberNotFound)) { CORBA::Object_var result = CORBA::Object::_nil(); - TODO + + // Find the object group corresponding to this IOGR + TAO::PG_Object_Group * group = 0; + if (this->group_factory_.find_group (object_group, group)) + { + result = group->get_member_reference (the_location ACE_ENV_ARG_PARAMETER); + ACE_CHECK_RETURN (CORBA::Object::_nil()); + } + else + { + if (TAO_debug_level > 0) + { + ACE_ERROR ( (LM_ERROR, + ACE_TEXT ("%T %n (%P|%t) - FT_ReplicationManager::get_member_ref: unknown group\n") + )); + } + ACE_THROW_RETURN (PortableGroup::ObjectGroupNotFound (), result._retn ()); + } return result._retn(); } diff --git a/TAO/orbsvcs/orbsvcs/PortableGroup/PG_Group_Factory.cpp b/TAO/orbsvcs/orbsvcs/PortableGroup/PG_Group_Factory.cpp index 5e4861d3684..1832ddee8f7 100644 --- a/TAO/orbsvcs/orbsvcs/PortableGroup/PG_Group_Factory.cpp +++ b/TAO/orbsvcs/orbsvcs/PortableGroup/PG_Group_Factory.cpp @@ -22,7 +22,7 @@ ACE_RCSID (PortableGroup, - PG_Group_Factory::, + PG_Group_Factory, "$Id$") @@ -89,7 +89,6 @@ TAO::PG_Object_Group * TAO::PG_Group_Factory::create_group ( PortableGroup::TagGroupTaggedComponent tagged_component; if (! TAO::PG_Utils::get_tagged_component (empty_group, tagged_component)) { - delete empty_group; ACE_THROW_RETURN (PortableGroup::ObjectNotCreated(), 0); } @@ -111,7 +110,6 @@ TAO::PG_Object_Group * TAO::PG_Group_Factory::create_group ( if (this->group_map_.bind (group_id, objectGroup) != 0) { - delete empty_group; delete objectGroup; ACE_THROW_RETURN (PortableGroup::ObjectNotCreated(), 0); } diff --git a/TAO/orbsvcs/orbsvcs/PortableGroup/PG_ObjectGroupManager.cpp b/TAO/orbsvcs/orbsvcs/PortableGroup/PG_ObjectGroupManager.cpp index bab30deaa82..ae52bc4fc92 100644 --- a/TAO/orbsvcs/orbsvcs/PortableGroup/PG_ObjectGroupManager.cpp +++ b/TAO/orbsvcs/orbsvcs/PortableGroup/PG_ObjectGroupManager.cpp @@ -631,8 +631,6 @@ TAO_PG_ObjectGroupManager::member_count ( int TAO_PG_ObjectGroupManager::init (CORBA::ORB_ptr orb, PortableServer::POA_ptr poa) { - int result = 0; - ACE_ASSERT (CORBA::is_nil (this->orb_.in ())); ACE_ASSERT (CORBA::is_nil (this->poa_.in ())); this->orb_ = CORBA::ORB::_duplicate (orb); diff --git a/TAO/orbsvcs/orbsvcs/PortableGroup/PG_Object_Group.cpp b/TAO/orbsvcs/orbsvcs/PortableGroup/PG_Object_Group.cpp index f8a3e2edd14..5be39951948 100644 --- a/TAO/orbsvcs/orbsvcs/PortableGroup/PG_Object_Group.cpp +++ b/TAO/orbsvcs/orbsvcs/PortableGroup/PG_Object_Group.cpp @@ -10,6 +10,10 @@ #include // Borrow operator == on CosNaming::Name #include +#define TODO int todo; +//#define TODO + + TAO::PG_Object_Group::MemberInfo::MemberInfo ( CORBA::Object_ptr member, const PortableGroup::Location & location) @@ -556,6 +560,42 @@ void TAO::PG_Object_Group::distribute_iogr (ACE_ENV_ARG_DECL) } } +void TAO::PG_Object_Group::create_member ( + const PortableGroup::Location & the_location, + const char * type_id, + const PortableGroup::Criteria & the_criteria + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ( (CORBA::SystemException, + PortableGroup::MemberAlreadyPresent, + PortableGroup::NoFactory, + PortableGroup::ObjectNotCreated, + PortableGroup::InvalidCriteria, + PortableGroup::CannotMeetCriteria)) +{ + TODO +} + +PortableGroup::Locations * TAO::PG_Object_Group::locations_of_members (ACE_ENV_SINGLE_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + PortableGroup::Locations * result = 0; + TODO + return result; +} + +CORBA::Object_ptr TAO::PG_Object_Group::get_member_reference ( + const PortableGroup::Location & the_location + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC (( + CORBA::SystemException, + PortableGroup::ObjectGroupNotFound, + PortableGroup::MemberNotFound)) +{ + CORBA::Object_var result = CORBA::Object::_nil (); + TODO + return result._retn (); +} + #if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) template class ACE_Hash_Map_Manager_Ex < diff --git a/TAO/orbsvcs/orbsvcs/PortableGroup/PG_Object_Group.h b/TAO/orbsvcs/orbsvcs/PortableGroup/PG_Object_Group.h index 9442b30e432..910a4694e4f 100644 --- a/TAO/orbsvcs/orbsvcs/PortableGroup/PG_Object_Group.h +++ b/TAO/orbsvcs/orbsvcs/PortableGroup/PG_Object_Group.h @@ -216,6 +216,29 @@ namespace TAO PortableGroup::MemberNotFound)); + void create_member ( + const PortableGroup::Location & the_location, + const char * type_id, + const PortableGroup::Criteria & the_criteria + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ( (CORBA::SystemException, + PortableGroup::MemberAlreadyPresent, + PortableGroup::NoFactory, + PortableGroup::ObjectNotCreated, + PortableGroup::InvalidCriteria, + PortableGroup::CannotMeetCriteria)); + + PortableGroup::Locations * locations_of_members (ACE_ENV_SINGLE_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)); + + CORBA::Object_ptr get_member_reference ( + const PortableGroup::Location & the_location + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC (( + CORBA::SystemException, + PortableGroup::ObjectGroupNotFound, + PortableGroup::MemberNotFound)); + ///////////////////////// // Implementation methods private: -- cgit v1.2.1