const TAO_Control_Registry::NameList& TAO_Control_Registry::names (void) { if (this->name_cache_.length () == 0) { ACE_WRITE_GUARD_RETURN (TAO_SYNCH_RW_MUTEX, guard, this->mutex_, this->name_cache_); if (this->name_cache_.length () == 0) { CORBA::ULong length = 0; Map::iterator itr (this->map_); Map::value_type* entry = 0; while (itr.next (entry)) { this->name_cache_.length (length + 1); this->name_cache_[length++] = CORBA::string_dup (entry->key ().c_str ()); itr.advance (); } } } return this->name_cache_; }
TAO_Control_Registry::~TAO_Control_Registry (void) { ACE_WRITE_GUARD (TAO_SYNCH_RW_MUTEX, guard, this->mutex_); Map::iterator itr (this->map_); Map::value_type* entry = 0; while (itr.next (entry)) { delete entry->item (); itr.advance (); } }