这篇教程C++ ACE_Reactor类代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中ACE_Reactor类的典型用法代码示例。如果您正苦于以下问题:C++ ACE_Reactor类的具体用法?C++ ACE_Reactor怎么用?C++ ACE_Reactor使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。 在下文中一共展示了ACE_Reactor类的25个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: void Sender_exec_i::start (void) { ACE_Reactor* reactor = 0; ::CORBA::Object_var ccm_object = this->ciao_context_->get_CCM_object(); if (!::CORBA::is_nil (ccm_object.in ())) { ::CORBA::ORB_var orb = ccm_object->_get_orb (); if (!::CORBA::is_nil (orb.in ())) { reactor = orb->orb_core ()->reactor (); } } if (reactor) { // calculate the interval time long const usec = 1000000 / this->rate_; if (reactor->schedule_timer ( this->ticker_, 0, ACE_Time_Value (3, usec), ACE_Time_Value (0, usec)) == -1) { ACE_ERROR ((LM_ERROR, ACE_TEXT ("Sender_exec_i::start : ") ACE_TEXT ("Error scheduling timer"))); } } else { throw ::CORBA::INTERNAL (); } }
开发者ID:Yijtx,项目名称:ACE,代码行数:34,
示例2: ACE_TEXTintImR_Activator_i::handle_exit (ACE_Process * process){ if (debug_ > 0) { ORBSVCS_DEBUG ((LM_DEBUG, ACE_TEXT ("Process %d exited with exit code %d, delay = %d/n"), process->getpid (), process->return_value (), this->induce_delay_)); } if (this->induce_delay_ > 0 && this->active_check_pid_ == ACE_INVALID_PID) { ACE_Reactor *r = this->orb_->orb_core()->reactor(); ACE_Time_Value dtv (0, this->induce_delay_ * 1000); pid_t pid = process->getpid(); Act_token_type token = static_cast<Act_token_type>(pid); r->schedule_timer (this, reinterpret_cast<void *>(token), dtv ); } else { this->handle_exit_i (process->getpid()); } return 0;}
开发者ID:bjovke,项目名称:ACE_TAO,代码行数:25,
示例3: doitvoiddevice_averager::deactivate(){ doit( device_state::command_off ); ACE_Reactor * reactor = acewrapper::singleton::ReactorThread::instance()->get_reactor(); reactor->cancel_timer( this );}
开发者ID:HiroyukiSeki,项目名称:qtplatz,代码行数:7,
示例4: run_main// If any command line arg is given, run the test with high res timer// queue. Else run it normally.intrun_main (int argc, ACE_TCHAR *[]){ ACE_START_TEST (ACE_TEXT ("Reactor_Timer_Test")); if (argc > 1) { ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Running with high-res timer queue/n"))); ACE_Reactor *r = ACE_Reactor::instance (); (void) ACE_High_Res_Timer::global_scale_factor (); r->timer_queue ()->gettimeofday (&ACE_High_Res_Timer::gettimeofday_hr); } // Register all different handlers, i.e., one per timer. test_registering_all_handlers (); // Now try multiple timers for ONE event handler (should produce the // same result). test_registering_one_handler (); // Try canceling handlers with odd numbered timer ids. test_canceling_odd_timers (); // Make sure <reset_timer_inverval> works. test_resetting_timer_intervals (); ACE_END_TEST; return 0;}
开发者ID:binghuo365,项目名称:BaseLab,代码行数:32,
示例5: ACE_TMAINintACE_TMAIN (int argc, ACE_TCHAR *argv[]){ ACE_Sig_Action sa ((ACE_SignalHandler) handler, SIGINT); ACE_OS::signal (SIGCLD, SIG_IGN); ACE_UNUSED_ARG (sa); parse_args (argc, argv); OUTPUT_FILE = ACE_OS::open (OUTPUT_FILE_NAME, O_CREAT | O_WRONLY, 0644); if (OUTPUT_FILE == 0) return 1; ACE_Reactor reactor; Handle_Events handle_events (UDP_PORT, MCAST_ADDR, INTERFACE, reactor); // main loop while (!done) reactor.handle_events (); ACE_OS::close (OUTPUT_FILE); cout << "/nbenchd done./n"; return 0;}
开发者ID:azraelly,项目名称:knetwork,代码行数:25,
示例6: addr// This is run at program initializationvoid CommandLineServer::run(void* args){ s_log = log4cxx::Logger::getLogger("interface.commandlineserver"); unsigned short tcpPort = (unsigned short)(unsigned long)args; //unsigned short tcpPort = (unsigned short)*(int*)args; CommandLineAcceptor peer_acceptor; ACE_INET_Addr addr (tcpPort); ACE_Reactor reactor; CStdString tcpPortString = IntToString(tcpPort); if (peer_acceptor.open (addr, &reactor) == -1) { LOG4CXX_ERROR(s_log, CStdString("Failed to start command line server on port:") + tcpPortString + CStdString(" do you have another instance of orkaudio running?")); } else { LOG4CXX_INFO(s_log, CStdString("Started command line server on port:")+tcpPortString); for(;;) { reactor.handle_events(); } }}
开发者ID:HiPiH,项目名称:Oreka,代码行数:26,
示例7: ifDispatch_Count_Handler::Dispatch_Count_Handler (void){ ACE_Reactor *r = ACE_Reactor::instance (); this->input_seen_ = this->notify_seen_ = 0; this->timers_fired_ = 0; // Initialize the pipe. if (this->pipe_.open () == -1) ACE_ERROR ((LM_ERROR, ACE_TEXT ("%p/n"), ACE_TEXT ("ACE_Pipe::open"))); // Register the "read" end of the pipe. else if (r->register_handler (this->pipe_.read_handle (), this, ACE_Event_Handler::READ_MASK) == -1) ACE_ERROR ((LM_ERROR, ACE_TEXT ("%p/n"), ACE_TEXT ("register_handler"))); // Put something in our pipe and smoke it... ;-) else if (ACE::send (this->pipe_.write_handle (), "z", 1) == -1) ACE_ERROR ((LM_ERROR, ACE_TEXT ("%p/n"), ACE_TEXT ("send"))); // Call notify to prime the pump for this, as well. else if (r->notify (this) == -1) ACE_ERROR ((LM_ERROR, ACE_TEXT ("%p/n"), ACE_TEXT ("notify")));}
开发者ID:DOCGroup,项目名称:ACE_TAO,代码行数:33,
示例8: ACE_TRACEintACE_Process_Manager::append_proc (ACE_Process *proc){ ACE_TRACE ("ACE_Process_Manager::append_proc"); // Try to resize the array to twice its existing size if we run out // of space... if (this->current_count_ >= this->max_process_table_size_ && this->resize (this->max_process_table_size_ * 2) == -1) return -1; else { ACE_Process_Descriptor &proc_desc = this->process_table_[this->current_count_]; proc_desc.process_ = proc; proc_desc.exit_notify_ = 0;#if defined (ACE_WIN32) // If we have a Reactor, then we're supposed to reap Processes // automagically. Get a handle to this new Process and tell the // Reactor we're interested in <handling_input> on it. ACE_Reactor *r = this->reactor (); if (r != 0) r->register_handler (this, proc->gethandle ());#endif /* ACE_WIN32 */ this->current_count_++; return 0; }}
开发者ID:BackupTheBerlios,项目名称:pyasynchio-svn,代码行数:33,
示例9: ACE_TEXTintImR_Activator_i::handle_exit (ACE_Process * process){ if (debug_ > 0) { ORBSVCS_DEBUG ((LM_DEBUG, ACE_TEXT ("Process %d exited with exit code %d/n"), process->getpid (), process->return_value ())); } if (this->induce_delay_ > 0) { ACE_Reactor *r = this->orb_->orb_core()->reactor(); ACE_Time_Value dtv (0, this->induce_delay_ * 1000); pid_t pid = process->getpid();#if (ACE_SIZEOF_VOID_P == 8) ACE_INT64 token = static_cast<ACE_INT64>(pid);#else ACE_INT32 token = static_cast<ACE_INT32>(pid);#endif r->schedule_timer (this, reinterpret_cast<void *>(token), dtv ); } else { this->handle_exit_i (process->getpid()); } return 0;}
开发者ID:rushgun,项目名称:ATCD,代码行数:30,
示例10: workerstatic void *worker (void *args){ ACE_Reactor *reactor = reinterpret_cast<ACE_Reactor *> (args); // Make this thread the owner of the Reactor's event loop. reactor->owner (ACE_Thread::self ()); // Use a timeout to inform the Reactor when to shutdown. ACE_Time_Value timeout (4); for (;;) switch (reactor->handle_events (timeout)) { case -1: ACE_ERROR_RETURN ((LM_ERROR, ACE_TEXT ("(%t) %p/n"), ACE_TEXT ("reactor")), 0); /* NOTREACHED */ case 0: ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("(%t) Reactor shutdown/n"))); return 0; } ACE_NOTREACHED (return 0);}
开发者ID:INMarkus,项目名称:ATCD,代码行数:27,
示例11: event_loopstatic ACE_THR_FUNC_RETURN event_loop (void *arg) { ACE_Reactor *reactor = static_cast<ACE_Reactor *> (arg); reactor->owner (ACE_OS::thr_self ()); reactor->run_reactor_event_loop (); return 0;}
开发者ID:asdlei00,项目名称:ACE,代码行数:7,
示例12: ACE_TMAIN// server main function// uses a portable form of the "main" function along with its argumentsint ACE_TMAIN (int argc, ACE_TCHAR *argv[]){ // instantiate an object of the Proto Handler class Proto_Handler proto; // retrieve a reactor. Here we could have retrieved different // implementations of reactor. For now we get the default singletom // reactor. ACE_Reactor *reactor = ACE_Reactor::instance (); // initialize the proto handler object if (proto.open (argc, argv, reactor) == -1) { ACE_ERROR ((LM_ERROR, ACE_TEXT ("(%P|%t) %p/n"), ACE_TEXT ("handler open"))); return -1; } // now let the server handle the events for (;;) { if (reactor->handle_events () == -1) { ACE_ERROR ((LM_ERROR, ACE_TEXT ("(%P|%t) %p/n"), ACE_TEXT ("handle events"))); return -1; } } // return exit status return 0;}
开发者ID:IMCG,项目名称:cpptruths,代码行数:32,
示例13: controllerstatic ACE_THR_FUNC_RETURN controller (void *arg) { ACE_Reactor *reactor = static_cast<ACE_Reactor *> (arg); Quit_Handler *quit_handler = 0; ACE_NEW_RETURN (quit_handler, Quit_Handler (reactor), 0);#if defined (ACE_WIN32) && (!defined (ACE_HAS_STANDARD_CPP_LIBRARY) || / (ACE_HAS_STANDARD_CPP_LIBRARY == 0) || / defined (ACE_USES_OLD_IOSTREAMS)) for (;;) { char user_input[80]; ACE_OS::fgets (user_input, sizeof (user_input), stdin); if (ACE_OS::strcmp (user_input, "quit") == 0) { reactor->notify (quit_handler); break; } }#else for (;;) { std::string user_input; std::getline (cin, user_input, '/n'); if (user_input == "quit") { reactor->notify (quit_handler); break; } }#endif return 0;}
开发者ID:esohns,项目名称:ATCD,代码行数:30,
示例14: test_for_spinstatic voidtest_for_spin (ACE_Reactor &reactor){ Handler handler (reactor, true); // This should trigger a call to <handle_input>. ssize_t result = ACE::send_n (handler.pipe_.write_handle (), message, ACE_OS::strlen (message)); if (result != ssize_t (ACE_OS::strlen (message))) ACE_ERROR ((LM_ERROR, ACE_TEXT ("Handler sent %b bytes; should be %B/n"), result, ACE_OS::strlen (message))); reactor.run_reactor_event_loop (); if (0 != reactor.remove_handler (handler.pipe_.read_handle (), ACE_Event_Handler::ALL_EVENTS_MASK | ACE_Event_Handler::DONT_CALL)) ACE_ERROR ((LM_ERROR, ACE_TEXT ("%p/n"), ACE_TEXT ("test_for_spin, remove pipe"))); if (0 == reactor.remove_handler (handler.other_pipe_.write_handle (), ACE_Event_Handler::ALL_EVENTS_MASK | ACE_Event_Handler::DONT_CALL)) ACE_ERROR ((LM_ERROR, ACE_TEXT ("test_for_spin remove other_pipe succeeded ") ACE_TEXT ("but shouldn't/n")));}
开发者ID:azraelly,项目名称:knetwork,代码行数:30,
示例15: ACE_GUARDvoidTAO_Thread_Lane_Resources::shutdown_reactor (void){ TAO_Leader_Follower &leader_follower = this->leader_follower (); ACE_GUARD (TAO_SYNCH_MUTEX, ace_mon, leader_follower.lock ()); ACE_Reactor *reactor = leader_follower.reactor (); // Wakeup all the threads waiting blocked in the event loop, this // does not guarantee that they will all go away, but reduces the // load on the POA.... // If there are some client threads running we have to wait until // they finish, when the last one does it will shutdown the reactor // for us. Meanwhile no new requests will be accepted because the // POA will not process them. if (!this->orb_core_.resource_factory ()->drop_replies_during_shutdown () && leader_follower.has_clients ()) { reactor->wakeup_all_threads (); } else { // End the reactor if we want shutdown dropping replies along the // way. reactor->end_reactor_event_loop (); }}
开发者ID:asdlei00,项目名称:ACE,代码行数:31,
示例16: intServer_i::enable_multicast (const char *ior){ if (this->parse_args (this->argc_, this->argv_) != 0) return -1; // Get reactor instance from TAO. ACE_Reactor *reactor = this->orb_->orb_core ()->reactor (); // Instantiate a handler which will handle client requests for the // bootstrappable service, received on the multicast port. ACE_NEW_RETURN (this->ior_multicast_, TAO_IOR_Multicast (), -1); if (this->ior_multicast_->init (ior, this->mcast_address_.in (), TAO_SERVICEID_MCASTSERVER) == -1) return -1; // Register event handler for the ior multicast. if (reactor->register_handler (this->ior_multicast_, ACE_Event_Handler::READ_MASK) == -1) { if (TAO_debug_level > 0) ACE_DEBUG ((LM_DEBUG, "MCast_Server: cannot register Event handler/n")); return -1; } return 0;}
开发者ID:CCJY,项目名称:ATCD,代码行数:33,
示例17: run_mainintrun_main (int, ACE_TCHAR *[]){ ACE_START_TEST (ACE_TEXT ("Timer_Cancellation_Test")); ACE_Reactor reactor (new ACE_TP_Reactor, 1); Deadlock deadlock; deadlock.reactor (&reactor); Event_Handler handler (deadlock); // Scheduler a timer to kick things off. reactor.schedule_timer (&handler, 0, ACE_Time_Value (1)); // Run the event loop for a while. ACE_Time_Value timeout (4); reactor.run_reactor_event_loop (timeout); ACE_END_TEST; return 0;}
开发者ID:azraelly,项目名称:knetwork,代码行数:26,
示例18: dispatchstatic void *dispatch (void *arg){ // every thread must register the same stream to write to file if (out_stream) { ACE_LOG_MSG->set_flags (ACE_Log_Msg::OSTREAM); ACE_LOG_MSG->msg_ostream (out_stream); } ACE_DEBUG ((LM_DEBUG, ACE_TEXT (" (%t) Dispatcher Thread started!/n"))); ACE_Reactor *r = reinterpret_cast <ACE_Reactor *> (arg); int result; r->owner (ACE_OS::thr_self ()); while (1) { result = r->handle_events (); if (result <= 0) ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("Dispatch: handle_events (): %d"), result)); } ACE_NOTREACHED (return 0);}
开发者ID:arun11299,项目名称:ACE-Code-Examples-Cpp,代码行数:28,
示例19: threadFunc/** * This is the function run by all threads in the thread pool. * * @param arg is expected to be of type (ACE_Reactor *) */ACE_THR_FUNC_RETURN threadFunc(void *arg) { ACE_TRACE("threadFunc(void *)"); ACE_Reactor *reactor = (ACE_Reactor *) arg; reactor->run_reactor_event_loop(); return 0;}
开发者ID:esohns,项目名称:ATCD,代码行数:13,
示例20: clk_tckvoidClient_Peer::crash(void){ Crasher * crasher = new Crasher; ACE_Time_Value clk_tck (0, Clock_Ticks::get_usecs_per_tick ()); ACE_Reactor * reactor = this->orb_->orb_core()->reactor(); reactor->schedule_timer(crasher, 0, clk_tck);}
开发者ID:OspreyHub,项目名称:ATCD,代码行数:9,
示例21: voidLocator_Repository::teardown_multicast (){ ACE_Reactor* r = ior_multicast_.reactor (); if (r != 0) { r->remove_handler (&ior_multicast_, ACE_Event_Handler::READ_MASK); ior_multicast_.reactor (0); }}
开发者ID:newle,项目名称:ATCD,代码行数:9,
示例22: ORBSVCS_DEBUGCORBA::BooleanImR_Activator_i::kill_server (const char* name, CORBA::Long lastpid, CORBA::Short signum){ if (debug_ > 1) ORBSVCS_DEBUG((LM_DEBUG, "ImR Activator: Killing server <%C>, lastpid = %d/n", name, lastpid)); pid_t lpid = static_cast<pid_t>(lastpid); pid_t pid = 0; bool found = false; int result = -1; for (ProcessMap::iterator iter = process_map_.begin(); !found && iter != process_map_.end (); iter++) { if (iter->item () == name) { pid = iter->key (); found = pid == lpid; } } if (!found && pid == 0) { pid = lpid; }#if defined (ACE_WIN32) found = false; // sigchild apparently doesn't work on windows#endif if (pid != 0) { result =#if !defined (ACE_WIN32) (signum != 9) ? ACE_OS::kill (pid, signum) :#endif ACE::terminate_process (pid); if (this->running_server_list_.remove (name) == 0) { this->dying_server_list_.insert (name); } if (debug_ > 1) ORBSVCS_DEBUG((LM_DEBUG, "ImR Activator: Killing server <%C> " "signal %d to pid %d, found %d, this->notify_imr_ %d, result = %d/n", name, signum, static_cast<int> (pid), found, this->notify_imr_, result)); if (!found && result == 0 && this->notify_imr_) { this->process_map_.bind (pid, name); ACE_Reactor *r = this->orb_->orb_core()->reactor(); Act_token_type token = static_cast<Act_token_type>(pid); r->schedule_timer (this, reinterpret_cast<void *>(token), ACE_Time_Value ()); } } return result == 0;}
开发者ID:bjovke,项目名称:ACE_TAO,代码行数:56,
示例23: ACE_DEBUGint MyTask::svc(){ ACE_DEBUG ((LM_INFO, ACE_TEXT ("(%t) enter MyTask::svc()/n/n"))); //initialization selector = new ACE_Select_Reactor; ACE_Reactor* reactor = new ACE_Reactor(selector); ACE_Reactor::instance(reactor); //then, ACE_Reactor::instance() is reactor this->reactor(reactor); //this reactor_ of ACE_Event_Handler can not be set //register socket handler Handler handler(UDP_PORT); if (reactor->register_handler(&handler, ACE_Event_Handler::READ_MASK) == -1) { ACE_ERROR((LM_ERROR, "%p/n", "cant't register with Reactor in MyTask::svc()/n")); return -1; } //spawn mytask2 mytask2::instance()->open(&handler); //handle_events in forever-loop until receive two data packets from socket, then, it will notify the MY_EXIT_HANDLER while (exit_flag == 0) { int result = reactor->handle_events(); //timeout will not occur at all if (result) { ACE_DEBUG ((LM_INFO, ACE_TEXT ("(%t) handle_events() succeed, result = %d/n/n"), result)); if (RECV_COUNT == handler.get_count()) { ACE_DEBUG ((LM_INFO, ACE_TEXT ("(%t) MyTask::svc() notify the exit handler/n"))); ACE_Reactor::instance()->notify(&handler, ACE_Event_Handler::EXCEPT_MASK); } if (handler.get_flag()) exit_flag = 1; } else { ACE_ERROR((LM_ERROR, "%p/n", "handle_events() failed/n")); return -1; } } if (reactor->remove_handler(&handler, ACE_Event_Handler::READ_MASK | ACE_Event_Handler::DONT_CALL) == -1) { ACE_ERROR((LM_ERROR, "%p/n", "cant't remove handler from Reactor/n")); return -1; } delete reactor; reactor = NULL; ACE_DEBUG ((LM_INFO, ACE_TEXT ("(%t) exit MyTask::svc()/n/n"))); return 0;}
开发者ID:abo321,项目名称:ACE_Server,代码行数:56,
示例24: static void *run_reactor (void *pReactor){ ACE_Reactor *pLogReactor = (ACE_Reactor *)pReactor; pLogReactor->owner(ACE_Thread_Manager::instance ()->thr_self()); pLogReactor->run_reactor_event_loop (); ACE_DEBUG((LM_INFO, ACE_TEXT("(%P|%t) %M run_reactor exit[%N,%l]/n"))); return 0;}
开发者ID:0328shijian,项目名称:PSS,代码行数:10,
示例25: ~ServerInstance() { udpReactor.end_reactor_event_loop(); tcpReactor.end_reactor_event_loop(); if(tcp_thread >= 0) ACE_Thread_Manager::instance ()->wait_grp(tcp_thread); ACE_Thread_Manager::instance ()->wait_grp(udp_thread); }
开发者ID:BearWare,项目名称:TeamTalk5,代码行数:9,
注:本文中的ACE_Reactor类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ ACE_Reactor_Impl类代码示例 C++ ACE_Process_Options类代码示例 |