summaryrefslogtreecommitdiff
path: root/ACE/tests/Message_Queue_Test_Ex.h
diff options
context:
space:
mode:
authorWilliam R. Otte <wotte@dre.vanderbilt.edu>2008-03-04 14:51:23 +0000
committerWilliam R. Otte <wotte@dre.vanderbilt.edu>2008-03-04 14:51:23 +0000
commit99aa8c60282c7b8072eb35eb9ac815702f5bf586 (patch)
treebda96bf8c3a4c2875a083d7b16720533c8ffeaf4 /ACE/tests/Message_Queue_Test_Ex.h
parentc4078c377d74290ebe4e66da0b4975da91732376 (diff)
downloadATCD-99aa8c60282c7b8072eb35eb9ac815702f5bf586.tar.gz
undoing accidental deletion
Diffstat (limited to 'ACE/tests/Message_Queue_Test_Ex.h')
-rw-r--r--ACE/tests/Message_Queue_Test_Ex.h89
1 files changed, 89 insertions, 0 deletions
diff --git a/ACE/tests/Message_Queue_Test_Ex.h b/ACE/tests/Message_Queue_Test_Ex.h
new file mode 100644
index 00000000000..38d076ac729
--- /dev/null
+++ b/ACE/tests/Message_Queue_Test_Ex.h
@@ -0,0 +1,89 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Message_Queue_Test_Ex.h
+ *
+ * $Id$
+ *
+ * Define class needed for generating templates. IBM C++ requires this
+ * to be in its own file for auto template instantiation.
+ *
+ * @author Michael Vitlo <mvitalo@sprynet.com>
+ * @author Irfan Pyarali <irfan@cs.wustl.edu>
+ * @author David L. Levine <levine@cs.wustl.edu>
+ * @author Guy Peleg <guy.peleg@amdocs.com>
+ */
+//=============================================================================
+
+#ifndef ACE_TESTS_MESSAGE_QUEUE_TEST_EX_H
+#define ACE_TESTS_MESSAGE_QUEUE_TEST_EX_H
+
+#include "ace/OS_NS_string.h"
+
+// User-defined class used for queue data.
+class User_Class
+{
+public:
+ User_Class (const char inputMsg[])
+ : message_ (0),
+ next_(0)
+ {
+ ACE_NEW (this->message_, char[ACE_OS::strlen (inputMsg) + 1]);
+ ACE_OS::strcpy (this->message_, inputMsg);
+ }
+
+ ~User_Class (void) { delete [] this->message_; }
+
+ const char *message (void) const
+ {
+ return this->message_;
+ }
+
+ // This is for checking the ACE_Message_Queue_Ex_N
+ User_Class *next () const
+ {
+ return this->next_;
+ }
+
+ void next (User_Class *uc)
+ {
+ this->next_ = uc;
+ }
+
+private:
+ char *message_;
+ User_Class *next_;
+};
+
+// The main tests for the ACE_Message_Queue_Ex_N
+struct Receive_Messages;
+
+class MQ_Ex_N_Tester
+{
+public:
+ int single_thread_performance_test (void);
+
+#if defined (ACE_HAS_THREADS)
+ int performance_test (void);
+
+ /// Sender runs with an autonomous thread
+ static ACE_THR_FUNC_RETURN sender (void *);
+
+ /// Receiver runs with an autonomous thread
+ static ACE_THR_FUNC_RETURN receiver (void *);
+
+ /// Multi threaded tests use this queue
+ ACE_Message_Queue_Ex_N<User_Class, ACE_MT_SYNCH> mt_queue_;
+#endif /* ACE_HAS_THREADS */
+
+ /// Single threaded tests use this queue
+ ACE_Message_Queue_Ex_N<User_Class, ACE_NULL_SYNCH> st_queue_;
+
+private:
+ /// Helper methods
+ int test_enqueue_head (void);
+ int test_enqueue_tail (void);
+};
+
+#endif /* ACE_TESTS_MESSAGE_QUEUE_TEST_EX_H */