diff options
Diffstat (limited to 'ACE/protocols/ace/TMCast/Messaging.hpp')
-rw-r--r-- | ACE/protocols/ace/TMCast/Messaging.hpp | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/ACE/protocols/ace/TMCast/Messaging.hpp b/ACE/protocols/ace/TMCast/Messaging.hpp new file mode 100644 index 00000000000..886745d1120 --- /dev/null +++ b/ACE/protocols/ace/TMCast/Messaging.hpp @@ -0,0 +1,54 @@ +// file : ACE_TMCast/Messaging.hpp +// author : Boris Kolpackov <boris@dre.vanderbilt.edu> +// cvs-id : $Id$ + +#ifndef TMCAST_MESSAGING_HPP +#define TMCAST_MESSAGING_HPP + +#include <ace/Synch.h> +#include <ace/Refcounted_Auto_Ptr.h> + +#include "MTQueue.hpp" + +namespace ACE_TMCast +{ + class Message + { + public: + virtual + ~Message () {} + }; + + typedef + ACE_Refcounted_Auto_Ptr<Message, ACE_Null_Mutex> + MessagePtr; + + typedef + MTQueue<MessagePtr, ACE_Thread_Mutex, ACE_Condition<ACE_Thread_Mutex> > + MessageQueue; + + struct MessageQueueAutoLock + { + MessageQueueAutoLock (MessageQueue& q) + : q_ (q) + { + q_.lock (); + } + + void + unlock () + { + q_.unlock (); + } + + ~MessageQueueAutoLock () + { + q_.unlock (); + } + + private: + MessageQueue& q_; + }; +} + +#endif // TMCAST_MESSAGING_HPP |