Manages the names of named and unnamed RT Mutexes. More...
#include <RT_ORB.h>
Public Member Functions | |
| TAO_Named_RT_Mutex_Manager (void) | |
| Constructor. | |
| ~TAO_Named_RT_Mutex_Manager (void) | |
| Destructor. | |
| RTCORBA::Mutex_ptr | create_mutex (void) |
| void | destroy_mutex (RTCORBA::Mutex_ptr the_mutex) |
| RTCORBA::Mutex_ptr | create_named_mutex (const char *name, CORBA::Boolean_out created_flag) |
| RTCORBA::Mutex_ptr | open_named_mutex (const char *name) |
Manages the names of named and unnamed RT Mutexes.
Definition at line 50 of file RT_ORB.h.
| TAO_Named_RT_Mutex_Manager::TAO_Named_RT_Mutex_Manager | ( | void | ) |
| TAO_Named_RT_Mutex_Manager::~TAO_Named_RT_Mutex_Manager | ( | void | ) |
| RTCORBA::Mutex_ptr TAO_Named_RT_Mutex_Manager::create_mutex | ( | void | ) |
Definition at line 86 of file RT_ORB.cpp.
{
TAO_RT_Mutex *mutex = 0;
ACE_NEW_THROW_EX (mutex,
TAO_RT_Mutex (),
CORBA::NO_MEMORY (
CORBA::SystemException::_tao_minor_code (
TAO::VMCID,
ENOMEM),
CORBA::COMPLETED_NO));
return mutex;
}
| RTCORBA::Mutex_ptr TAO_Named_RT_Mutex_Manager::create_named_mutex | ( | const char * | name, | |
| CORBA::Boolean_out | created_flag | |||
| ) |
Definition at line 135 of file RT_ORB.cpp.
{
#if (TAO_HAS_NAMED_RT_MUTEXES == 1)
// The following should be atomic.
ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX,
monitor,
this->lock_,
CORBA::INTERNAL ());
// Optimistic that we'll find it.
created_flag = false;
// If we find the mutex, simply return it.
RTCORBA::Mutex_var mutex;
if (this->map_.find (name, mutex) != 0)
{
// Oops, we didn't find it.
created_flag = true;
RTCORBA::Mutex_ptr tmp_mutex;
// Create a new one.
ACE_NEW_THROW_EX (tmp_mutex,
TAO_Named_RT_Mutex (name),
CORBA::NO_MEMORY (
CORBA::SystemException::_tao_minor_code (
TAO::VMCID,
ENOMEM),
CORBA::COMPLETED_NO));
mutex = tmp_mutex;
// Add it to the map.
int const result = this->map_.bind (name, mutex);
if (result != 0)
throw ::CORBA::INTERNAL ();
}
// Return the one we found or created.
return mutex._retn ();
#else /* TAO_HAS_NAMED_RT_MUTEXES */
ACE_UNUSED_ARG (name);
ACE_UNUSED_ARG (created_flag);
throw ::CORBA::NO_IMPLEMENT ();
#endif /* TAO_HAS_NAMED_RT_MUTEXES */
}
| void TAO_Named_RT_Mutex_Manager::destroy_mutex | ( | RTCORBA::Mutex_ptr | the_mutex | ) |
Definition at line 129 of file RT_ORB.cpp.
{
}
| RTCORBA::Mutex_ptr TAO_Named_RT_Mutex_Manager::open_named_mutex | ( | const char * | name | ) |
Definition at line 185 of file RT_ORB.cpp.
{
#if (TAO_HAS_NAMED_RT_MUTEXES == 1)
// The following should be atomic.
ACE_GUARD_THROW_EX (TAO_SYNCH_MUTEX,
monitor,
this->lock_,
CORBA::INTERNAL ());
// If we find the mutex, simply return it.
RTCORBA::Mutex_var mutex;
if (this->map_.find (name, mutex) != 0)
throw RTCORBA::RTORB::MutexNotFound ();
// Return the one we found.
return mutex._retn ();
#else /* TAO_HAS_NAMED_RT_MUTEXES */
ACE_UNUSED_ARG (name);
throw ::CORBA::NO_IMPLEMENT ();
#endif /* TAO_HAS_NAMED_RT_MUTEXES */
}
1.7.0