00001 #include "orbsvcs/PortableGroup/PG_Group_Guard.h"
00002
00003 #include "orbsvcs/PortableGroup/PG_GenericFactory.h"
00004 #include "orbsvcs/PortableGroup/PG_ObjectGroupManager.h"
00005
00006
00007 ACE_RCSID (PortableGroup,
00008 PG_Group_Guard,
00009 "PG_Group_Guard.cpp,v 1.4 2006/03/14 06:14:34 jtc Exp")
00010
00011
00012 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00013
00014 TAO_PG_Group_Guard::TAO_PG_Group_Guard (
00015 TAO_PG_GenericFactory & generic_factory,
00016 TAO_PG_Factory_Set & factory_set,
00017 TAO_PG_ObjectGroupManager & group_manager,
00018 const PortableServer::ObjectId & oid)
00019 : generic_factory_ (generic_factory),
00020 factory_set_ (factory_set),
00021 group_manager_ (group_manager),
00022 oid_ (oid),
00023 released_ (0)
00024 {
00025 }
00026
00027 TAO_PG_Group_Guard::~TAO_PG_Group_Guard (void)
00028 {
00029 if (!this->released_)
00030 {
00031 ACE_DECLARE_NEW_CORBA_ENV;
00032 ACE_TRY
00033 {
00034 this->generic_factory_.delete_object_i (this->factory_set_,
00035 1
00036 ACE_ENV_ARG_PARAMETER);
00037 ACE_TRY_CHECK;
00038
00039
00040
00041 this->group_manager_.destroy_object_group (this->oid_
00042 ACE_ENV_ARG_PARAMETER);
00043 ACE_TRY_CHECK;
00044 }
00045 ACE_CATCHANY
00046 {
00047
00048 }
00049 ACE_ENDTRY;
00050 }
00051 }
00052
00053 void
00054 TAO_PG_Group_Guard::release (void)
00055 {
00056 this->released_ = 1;
00057 }
00058
00059 TAO_END_VERSIONED_NAMESPACE_DECL