summaryrefslogtreecommitdiff
path: root/ace/TMCast/Messaging.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'ace/TMCast/Messaging.hpp')
-rw-r--r--ace/TMCast/Messaging.hpp54
1 files changed, 54 insertions, 0 deletions
diff --git a/ace/TMCast/Messaging.hpp b/ace/TMCast/Messaging.hpp
new file mode 100644
index 00000000000..6a1000c3265
--- /dev/null
+++ b/ace/TMCast/Messaging.hpp
@@ -0,0 +1,54 @@
+// file : 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 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