summaryrefslogtreecommitdiff
path: root/trunk/ACE/tests/MT_Reactor_Timer_Test.h
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/ACE/tests/MT_Reactor_Timer_Test.h')
-rw-r--r--trunk/ACE/tests/MT_Reactor_Timer_Test.h108
1 files changed, 108 insertions, 0 deletions
diff --git a/trunk/ACE/tests/MT_Reactor_Timer_Test.h b/trunk/ACE/tests/MT_Reactor_Timer_Test.h
new file mode 100644
index 00000000000..d3dce675ed4
--- /dev/null
+++ b/trunk/ACE/tests/MT_Reactor_Timer_Test.h
@@ -0,0 +1,108 @@
+/* -*- C++ -*- */
+// $Id$
+
+// ============================================================================
+//
+// = LIBRARY
+// tests
+//
+// = FILENAME
+// MT_Reactor_Timer_Test.h
+//
+// = DESCRIPTION
+// This file contains class definitions needed for template
+// instantiation in the MT_Reactor_Timer_Test.cpp file.
+//
+// = AUTHOR
+// Steve Huston <shuston@riverace.com>
+//
+// ============================================================================
+
+#ifndef ACE_TESTS_MT_REACTOR_TIMER_TEST_H
+#define ACE_TESTS_MT_REACTOR_TIMER_TEST_H
+
+#include "ace/Reactor.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "ace/Task.h"
+#include "ace/Pipe.h"
+
+class Time_Handler : public ACE_Task<ACE_SYNCH>
+{
+ // = TITLE
+ // Test out the multi-threading features of the Reactor's timer
+ // mechanism.
+public:
+ Time_Handler (void);
+
+ void setup (void);
+
+ int verify_results(void);
+
+ virtual int svc (void);
+ // Run by a daemon thread to handle deferred processing.
+
+ virtual int handle_timeout (const ACE_Time_Value &tv,
+ const void *arg);
+
+private:
+ enum
+ {
+ TIMER_SLOTS = 10
+ };
+
+ long timer_id_[TIMER_SLOTS];
+ // The timer_id_ array holds timer IDs. They also have some other values
+ // that are specific to this test:
+ // -1 the timer has not been set
+ // -2 the timer was set, but has been cancelled
+ // -3 the timer was set, and it already fired
+ enum { TIMER_NOTSET = -1, TIMER_CANCELLED = -2, TIMER_FIRED = -3 };
+
+ long prev_timer_;
+
+#if defined ACE_HAS_THREADS
+ ACE_Thread_Mutex lock_;
+#endif /* ACE_HAS_THREADS */
+
+};
+
+class Dispatch_Count_Handler : public ACE_Event_Handler
+{
+ // = TITLE
+ // A simple test to ensure that the Reactor counts the number of
+ // dispatches correctly.
+public:
+ Dispatch_Count_Handler (void);
+
+ int handle_close (ACE_HANDLE h,
+ ACE_Reactor_Mask m);
+ // Clean up resources from the Reactor.
+
+ virtual int handle_timeout (const ACE_Time_Value &tv,
+ const void *arg);
+ // Keep track of the number of timeouts.
+
+ virtual int handle_input (ACE_HANDLE);
+ // Keep track of the number of I/O events.
+
+ virtual int handle_exception (ACE_HANDLE);
+ // Keep track of the number of notifies.
+
+ int verify_results (void);
+ // Verify that the expected events did happen.
+
+private:
+ ACE_Pipe pipe_;
+ // Provide something to trigger I/O.
+
+ int input_seen_;
+ int notify_seen_;
+ size_t timers_fired_;
+
+};
+
+#endif /* ACE_TESTS_MT_REACTOR_TIMER_TEST_H */