00001 // -*- C++ -*- 00002 // 00003 // $Id: CSD_TP_Servant_State_Map.inl 76874 2007-02-02 14:12:41Z johnnyw $ 00004 00005 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00006 00007 ACE_INLINE 00008 TAO::CSD::TP_Servant_State_Map::TP_Servant_State_Map() 00009 { 00010 } 00011 00012 00013 ACE_INLINE 00014 TAO::CSD::TP_Servant_State_Map::~TP_Servant_State_Map() 00015 { 00016 } 00017 00018 00019 ACE_INLINE 00020 TAO::CSD::TP_Servant_State* 00021 TAO::CSD::TP_Servant_State_Map::find(PortableServer::Servant servant) 00022 { 00023 void* key = servant; 00024 00025 TP_Servant_State::HandleType value; 00026 00027 if (this->map_.find(key, value) != 0) 00028 { 00029 throw PortableServer::POA::ServantNotActive (); 00030 } 00031 00032 return value._retn(); 00033 } 00034 00035 00036 ACE_INLINE 00037 void 00038 TAO::CSD::TP_Servant_State_Map::insert(PortableServer::Servant servant) 00039 { 00040 void* key = servant; 00041 00042 TP_Servant_State::HandleType value = new TP_Servant_State (); 00043 00044 int const result = this->map_.bind(key, value); 00045 00046 if (result == 1) 00047 { 00048 throw PortableServer::POA::ServantAlreadyActive (); 00049 } 00050 00051 ACE_ASSERT (result == 0); 00052 } 00053 00054 00055 ACE_INLINE 00056 void 00057 TAO::CSD::TP_Servant_State_Map::remove(PortableServer::Servant servant) 00058 { 00059 void* key = servant; 00060 00061 if (this->map_.unbind(key) == -1) 00062 { 00063 throw PortableServer::POA::ServantNotActive (); 00064 } 00065 } 00066 00067 TAO_END_VERSIONED_NAMESPACE_DECL