int Reactive_Logging_Server::handle_connections() { if (active_handlers_.is_set(acceptor().get_handle())) { while (acceptor().accept(logging_handler().peer()) == 0) { master_handle_set_.set_bit(logging_handler().peer().get_handle()); active_handlers_.clr_bit(acceptor().get_handle()); } } return 0; }
int Reactive_Logging_Server::handle_data(ACE_SOCK_Stream*) { for (ACE_HANDLE handle = acceptor().get_handle() + 1; handle < active_handlers_.max_set() + 1; handle++) { if (active_handlers_.is_set(handle)) { logging_handler().peer().set_handle(handle); if (logging_handler().log_record() == -1) { master_handle_set_.clr_bit(handle); logging_handler().close(); } } } return 0; }
int TP_Logging_Task::svc () { for (ACE_Message_Block *log_blk; getq (log_blk) != -1; ) { TP_Logging_Handler *tp_handler = reinterpret_cast<TP_Logging_Handler *> (log_blk->rd_ptr ()); Logging_Handler logging_handler (tp_handler->log_file ()); logging_handler.write_log_record (log_blk->cont ()); log_blk->release (); tp_handler->handle_close (ACE_INVALID_HANDLE, 0); } return 0; }
int Thread_Per_Connection_Logging_Server::handle_data(ACE_SOCK_Stream *client) { ACE_FILE_IO log_file; make_log_file(log_file, client); client->disable(ACE_NONBLOCK); Logging_Handler logging_handler(log_file, *client); ACE_Thread_Manager *tm = ACE_Thread_Manager::instance(); ACE_thread_t me = ACE_OS::thr_self(); while (!tm->testcancel(me) && logging_handler.log_record() != -1) continue; log_file.close(); return 0; }
int AC_Input_Handler::handle_input (ACE_HANDLE handle) { ACE_Message_Block *mblk = 0; Logging_Handler logging_handler (handle); if (logging_handler.recv_log_record (mblk) != -1) { if (output_handler_->put (mblk->cont ()) != -1) { mblk->cont (0); mblk->release (); return 0; // Success return. } else { mblk->release (); } } return -1; // Error return. }
int Thread_Per_Connection_Logging_Server::handle_data (ACE_SOCK_Stream *client) { ACE_FILE_IO log_file; // Client's hostname is logfile name. make_log_file (log_file, client); // Place the connection into blocking mode since this // thread isn't doing anything except handling this client. client->disable (ACE_NONBLOCK); Logging_Handler logging_handler (log_file, *client); // Keep handling log records until client closes connection // or this thread is asked to cancel itself. ACE_Thread_Manager *mgr = ACE_Thread_Manager::instance (); ACE_thread_t me = ACE_Thread::self (); while (!mgr->testcancel (me) && logging_handler.log_record () != -1) continue; log_file.close (); return 0; }