1 //=============================================================================
3 * @file Suspended_Removals.cpp
5 * Tests the Reactor's ability to handle removal of suspended
8 * @author Irfan Pyarali
10 //=============================================================================
13 #include "ace/OS_main.h"
15 #if defined (ACE_WIN32)
17 #include "ace/Reactor.h"
18 #include "ace/WFMO_Reactor.h"
20 class Event_Handler
: public ACE_Event_Handler
23 ACE_HANDLE
get_handle () const
25 return this->event_
.handle ();
31 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
33 class ACE_WFMO_Reactor_Test
36 static void check_for_valid_state (ACE_WFMO_Reactor
&wfmo_reactor
,
37 size_t handles_to_be_added
,
38 size_t handles_to_be_suspended
,
39 size_t handles_to_be_resumed
,
40 size_t handles_to_be_deleted
)
42 ACE_TEST_ASSERT (wfmo_reactor
.handler_rep_
.handles_to_be_added_
== handles_to_be_added
);
43 ACE_TEST_ASSERT (wfmo_reactor
.handler_rep_
.handles_to_be_suspended_
== handles_to_be_suspended
);
44 ACE_TEST_ASSERT (wfmo_reactor
.handler_rep_
.handles_to_be_resumed_
== handles_to_be_resumed
);
45 ACE_TEST_ASSERT (wfmo_reactor
.handler_rep_
.handles_to_be_deleted_
== handles_to_be_deleted
);
49 ACE_END_VERSIONED_NAMESPACE_DECL
52 ACE_TMAIN (int, ACE_TCHAR
*[])
54 Event_Handler handler
;
55 ACE_WFMO_Reactor reactor
;
56 ACE_Reactor
base_reactor (&reactor
);
58 ACE_Time_Value
sleep_time (1);
61 reactor
.register_handler (&handler
);
62 ACE_TEST_ASSERT (result
== 0);
64 ACE_WFMO_Reactor_Test::check_for_valid_state (reactor
,
68 reactor
.remove_handler (&handler
,
69 ACE_Event_Handler::DONT_CALL
|
70 ACE_Event_Handler::ALL_EVENTS_MASK
);
71 ACE_TEST_ASSERT (result
== 0);
73 ACE_WFMO_Reactor_Test::check_for_valid_state (reactor
,
76 result
= base_reactor
.run_reactor_event_loop (sleep_time
);
77 ACE_TEST_ASSERT (result
!= -1);
79 ACE_WFMO_Reactor_Test::check_for_valid_state (reactor
,
83 reactor
.register_handler (&handler
);
84 ACE_TEST_ASSERT (result
== 0);
86 ACE_WFMO_Reactor_Test::check_for_valid_state (reactor
,
89 result
= base_reactor
.run_reactor_event_loop (sleep_time
);
90 ACE_TEST_ASSERT (result
!= -1);
92 ACE_WFMO_Reactor_Test::check_for_valid_state (reactor
,
96 reactor
.suspend_handler (&handler
);
97 ACE_TEST_ASSERT (result
== 0);
99 ACE_WFMO_Reactor_Test::check_for_valid_state (reactor
,
103 reactor
.remove_handler (&handler
,
104 ACE_Event_Handler::DONT_CALL
|
105 ACE_Event_Handler::ALL_EVENTS_MASK
);
106 ACE_TEST_ASSERT (result
== 0);
108 ACE_WFMO_Reactor_Test::check_for_valid_state (reactor
,
111 result
= base_reactor
.run_reactor_event_loop (sleep_time
);
112 ACE_TEST_ASSERT (result
!= -1);
114 ACE_WFMO_Reactor_Test::check_for_valid_state (reactor
,
118 reactor
.register_handler (&handler
);
119 ACE_TEST_ASSERT (result
== 0);
121 ACE_WFMO_Reactor_Test::check_for_valid_state (reactor
,
125 reactor
.suspend_handler (&handler
);
126 ACE_TEST_ASSERT (result
== 0);
128 ACE_WFMO_Reactor_Test::check_for_valid_state (reactor
,
131 result
= base_reactor
.run_reactor_event_loop (sleep_time
);
132 ACE_TEST_ASSERT (result
!= -1);
134 ACE_WFMO_Reactor_Test::check_for_valid_state (reactor
,
138 reactor
.resume_handler (&handler
);
139 ACE_TEST_ASSERT (result
== 0);
141 ACE_WFMO_Reactor_Test::check_for_valid_state (reactor
,
145 reactor
.remove_handler (&handler
,
146 ACE_Event_Handler::DONT_CALL
|
147 ACE_Event_Handler::ALL_EVENTS_MASK
);
148 ACE_TEST_ASSERT (result
== 0);
150 ACE_WFMO_Reactor_Test::check_for_valid_state (reactor
,
153 result
= base_reactor
.run_reactor_event_loop (sleep_time
);
154 ACE_TEST_ASSERT (result
!= -1);
156 ACE_WFMO_Reactor_Test::check_for_valid_state (reactor
,
161 #else /* !ACE_WIN32 */
163 ACE_TMAIN (int , ACE_TCHAR
*[])
167 #endif /* ACE_WIN32 */