int ACE_TMAIN (int argc, ACE_TCHAR *argv[]) { int result = 0; //FUZZ: disable check_for_lack_ACE_OS // Parse args ACE_Get_Opt getopt (argc, argv, ACE_TEXT ("swmc"), 1); for (int c; (c = getopt ()) != -1; ) //FUZZ: enable check_for_lack_ACE_OS switch (c) { case 's': opt_select_reactor = 1; break; case 'w': opt_wfmo_reactor = 1; break; case 'm': write_to_pipe_in_main = 1; break; case 'c': cancel_reads = 1; break; } // Create pipes ACE_Pipe pipe1, pipe2; result = pipe1.open (); ACE_ASSERT (result == 0); result = pipe2.open (); ACE_ASSERT (result == 0); // Create handlers Handler handler (pipe1); Different_Handler different_handler (pipe2); // Manage memory automagically. auto_ptr<ACE_Reactor> reactor (create_reactor ()); // Register handlers ACE_Reactor_Mask handler_mask = ACE_Event_Handler::READ_MASK | ACE_Event_Handler::WRITE_MASK | ACE_Event_Handler::EXCEPT_MASK; ACE_Reactor_Mask different_handler_mask = ACE_Event_Handler::WRITE_MASK | ACE_Event_Handler::EXCEPT_MASK; result = reactor->register_handler (&handler, handler_mask); ACE_ASSERT (result == 0); result = reactor->register_handler (&different_handler, different_handler_mask); ACE_ASSERT (result == 0); // Write to the pipe; this causes handle_input to get called. if (write_to_pipe_in_main) { write_to_pipe (pipe1); write_to_pipe (pipe2); } // Note that handle_output will get called automatically since the // pipe is writable! //FUZZ: disable check_for_lack_ACE_OS // Run for three seconds ACE_Time_Value time (3); //FUZZ: enable check_for_lack_ACE_OS reactor->run_reactor_event_loop (time); ACE_DEBUG ((LM_DEBUG, "\nClosing down the application\n\n")); return 0; }
int main (int argc, char *argv[]) { int result = 0; // Parse args ACE_Get_Opt getopt (argc, argv, ACE_TEXT ("swmc"), 1); for (int c; (c = getopt ()) != -1; ) switch (c) { case 's': opt_select_reactor = 1; break; case 'w': opt_wfmo_reactor = 1; break; case 'm': write_to_pipe_in_main = 1; break; case 'c': cancel_reads = 1; break; } // Create pipes ACE_Pipe pipe1, pipe2; result = pipe1.open (); ACE_ASSERT (result == 0); result = pipe2.open (); ACE_ASSERT (result == 0); // Create handlers Handler handler (pipe1); Different_Handler different_handler (pipe2); // Create reactor create_reactor (); // Manage memory automagically. auto_ptr<ACE_Reactor> reactor (ACE_Reactor::instance ()); auto_ptr<ACE_Reactor_Impl> impl; // If we are using other that the default implementation, we must // clean up. if (opt_select_reactor || opt_wfmo_reactor) impl = auto_ptr<ACE_Reactor_Impl> (ACE_Reactor::instance ()->implementation ()); // Register handlers ACE_Reactor_Mask handler_mask = ACE_Event_Handler::READ_MASK | ACE_Event_Handler::WRITE_MASK | ACE_Event_Handler::EXCEPT_MASK; ACE_Reactor_Mask different_handler_mask = ACE_Event_Handler::WRITE_MASK | ACE_Event_Handler::EXCEPT_MASK; result = ACE_Reactor::instance ()->register_handler (&handler, handler_mask); ACE_ASSERT (result == 0); result = ACE_Reactor::instance ()->register_handler (&different_handler, different_handler_mask); ACE_ASSERT (result == 0); // Write to the pipe; this causes handle_input to get called. if (write_to_pipe_in_main) { write_to_pipe (pipe1); write_to_pipe (pipe2); } // Note that handle_output will get called automatically since the // pipe is writable! // Run for three seconds ACE_Time_Value time (3); ACE_Reactor::instance ()->run_event_loop (time); ACE_DEBUG ((LM_DEBUG, "\nClosing down the application\n\n")); return 0; }