diff options
author | irfan <irfan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1997-03-18 19:22:32 +0000 |
---|---|---|
committer | irfan <irfan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1997-03-18 19:22:32 +0000 |
commit | 4d702a10ac3531b8b8f2afbd84acb2093ce64b7a (patch) | |
tree | 6a81e057f7d5d0505ef396d1586d7a5865b3fe77 /examples | |
parent | 80247f7acc8383cec91372aa3c9159b06bc08fde (diff) | |
download | ATCD-4d702a10ac3531b8b8f2afbd84acb2093ce64b7a.tar.gz |
*** empty log message ***
Diffstat (limited to 'examples')
-rw-r--r-- | examples/Reactor/Ntalker/ntalker.cpp | 59 |
1 files changed, 9 insertions, 50 deletions
diff --git a/examples/Reactor/Ntalker/ntalker.cpp b/examples/Reactor/Ntalker/ntalker.cpp index 491ff094140..ad0daf3879f 100644 --- a/examples/Reactor/Ntalker/ntalker.cpp +++ b/examples/Reactor/Ntalker/ntalker.cpp @@ -10,6 +10,7 @@ #include "ace/Reactor.h" #include "ace/Get_Opt.h" #include "ace/Thread_Manager.h" +#include "ace/Service_Config.h" #if defined (ACE_HAS_IP_MULTICAST) // network interface to subscribe to @@ -35,9 +36,8 @@ public: virtual int handle_input (ACE_HANDLE); virtual int handle_close (ACE_HANDLE, ACE_Reactor_Mask); - //private: +private: ACE_SOCK_Dgram_Mcast mcast_; - ACE_Handle_Set handle_set_; }; int @@ -119,11 +119,8 @@ Handler::Handler (u_short udp_port, // if (this->mcast_.set_option (IP_MULTICAST_LOOP, 0) == -1 ) // ACE_OS::perror (" can't disable loopbacks " ), ACE_OS::exit (1); - this->handle_set_.set_bit (ACE_STDIN); - this->handle_set_.set_bit (this->mcast_.get_handle ()); - // Register callbacks with the ACE_Reactor. - if (reactor.register_handler (this->handle_set_, + if (reactor.register_handler (this->mcast_.get_handle (), this, ACE_Event_Handler::READ_MASK) == -1) ACE_OS::perror ("can't register events"), ACE_OS::exit (1); @@ -150,57 +147,19 @@ parse_args (int argc, char *argv[]) } } -static sig_atomic_t done = 0; -static ACE_Thread_Manager manager; - -// Signal handler. - -extern "C" void -signal_handler (int) -{ - done = 1; -} - -void * -handle_stdin (void *data) -{ - ACE_Thread_Control tc (&manager); - Handler *handler = (Handler *) data; - while (1) - handler->handle_input (ACE_STDIN); - return 0; -} - -void * -handle_mcast (void *data) -{ - ACE_Thread_Control tc (&manager); - Handler *handler = (Handler *) data; - while (1) - handler->handle_input (handler->mcast_.get_handle ()); - return 0; -} - int main (int argc, char *argv[]) { parse_args (argc, argv); - ACE_Reactor reactor; - Handler handler (UDP_PORT, MCAST_ADDR, INTERFACE, reactor); + Handler handler (UDP_PORT, MCAST_ADDR, INTERFACE, *ACE_Service_Config::reactor ()); - // main loop -#if !defined (MULTI_THREADED) && !defined (ACE_WIN32) - ACE_Sig_Action sa ((ACE_SignalHandler) signal_handler, SIGINT); - ACE_UNUSED_ARG (sa); + ACE::register_stdin_handler (&handler, + ACE_Service_Config::reactor (), + ACE_Service_Config::thr_mgr ()); + + ACE_Service_Config::run_reactor_event_loop (); - while (!done) - reactor.handle_events (); -#else - manager.spawn (handle_stdin, &handler); - manager.spawn (handle_mcast, &handler); - manager.wait (); -#endif cout << "\ntalker Done.\n"; return 0; } |