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;
}
Пример #3
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;
}