summaryrefslogtreecommitdiff
path: root/ACE/tests/Bound_Ptr_Test.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/Bound_Ptr_Test.h
parentc4078c377d74290ebe4e66da0b4975da91732376 (diff)
downloadATCD-99aa8c60282c7b8072eb35eb9ac815702f5bf586.tar.gz
undoing accidental deletion
Diffstat (limited to 'ACE/tests/Bound_Ptr_Test.h')
-rw-r--r--ACE/tests/Bound_Ptr_Test.h87
1 files changed, 87 insertions, 0 deletions
diff --git a/ACE/tests/Bound_Ptr_Test.h b/ACE/tests/Bound_Ptr_Test.h
new file mode 100644
index 00000000000..9b72c7863d1
--- /dev/null
+++ b/ACE/tests/Bound_Ptr_Test.h
@@ -0,0 +1,87 @@
+// $Id$
+
+// ============================================================================
+//
+// = LIBRARY
+// tests
+//
+// = FILENAME
+// Bound_Ptr_Test.h
+//
+// = DESCRIPTION
+// Define class needed for generating templates. IBM C++ requires this to
+// be in its own file for auto template instantiation.
+//
+// = AUTHOR
+// @author Christopher Kohlhoff <chris@kohlhoff.com>
+//
+// ============================================================================
+
+#ifndef ACE_TESTS_BOUND_PTR_TEST_H
+#define ACE_TESTS_BOUND_PTR_TEST_H
+
+#include "ace/Activation_Queue.h"
+#include "ace/Bound_Ptr.h"
+#include "ace/Task.h"
+#include "ace/Thread_Mutex.h"
+
+struct Printer
+{
+ Printer (const char *message);
+ ~Printer (void) ;
+
+ void print (void);
+
+ const char *message_;
+ static size_t instance_count_;
+};
+
+#if defined (ACE_HAS_THREADS)
+
+typedef ACE_Strong_Bound_Ptr<Printer, ACE_Thread_Mutex> Printer_var;
+
+/**
+ * @class Scheduler
+ *
+ * @brief The scheduler for the Active Object.
+ *
+ * This class also plays the role of the Proxy and the Servant
+ * in the Active Object pattern. Naturally, these roles could
+ * be split apart from the Scheduler.
+ */
+class Scheduler : public ACE_Task<ACE_SYNCH>
+{
+
+ friend class Method_Request_print;
+ friend class Method_Request_end;
+public:
+ // = Initialization and termination methods.
+ /// Constructor.
+ Scheduler (Scheduler * = 0);
+
+ /// Initializer.
+ virtual int open (void *args = 0);
+
+ /// Terminator.
+ virtual int close (u_long flags = 0);
+
+ /// Destructor.
+ virtual ~Scheduler (void);
+
+ // = These methods are part of the Active Object Proxy interface.
+ void print (Printer_var &printer);
+ void end (void);
+
+protected:
+ /// Runs the Scheduler's event loop, which dequeues <Method_Requests>
+ /// and dispatches them.
+ virtual int svc (void);
+
+private:
+ // = These are the <Scheduler> implementation details.
+ ACE_Activation_Queue activation_queue_;
+ Scheduler *scheduler_;
+};
+
+#endif /* ACE_HAS_THREADS */
+#endif /* ACE_TESTS_BOUND_PTR_TEST_H */