diff options
author | William R. Otte <wotte@dre.vanderbilt.edu> | 2008-03-04 14:51:23 +0000 |
---|---|---|
committer | William R. Otte <wotte@dre.vanderbilt.edu> | 2008-03-04 14:51:23 +0000 |
commit | 99aa8c60282c7b8072eb35eb9ac815702f5bf586 (patch) | |
tree | bda96bf8c3a4c2875a083d7b16720533c8ffeaf4 /ACE/tests/Bound_Ptr_Test.h | |
parent | c4078c377d74290ebe4e66da0b4975da91732376 (diff) | |
download | ATCD-99aa8c60282c7b8072eb35eb9ac815702f5bf586.tar.gz |
undoing accidental deletion
Diffstat (limited to 'ACE/tests/Bound_Ptr_Test.h')
-rw-r--r-- | ACE/tests/Bound_Ptr_Test.h | 87 |
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 */ |