int
run_main (int argc, ACE_TCHAR *argv[])
{
  ACE_START_TEST (ACE_TEXT ("Thread_Pool_Reactor_Test"));
  parse_arg (argc, argv);

  // Changed the default
  ACE_TP_Reactor sr;
  ACE_Reactor new_reactor (&sr);
  ACE_Reactor::instance (&new_reactor);

  ACCEPTOR acceptor;
  ACE_INET_Addr accept_addr (rendezvous);

  if (acceptor.open (accept_addr) == -1)
    ACE_ERROR_RETURN ((LM_ERROR,
                       ACE_TEXT ("%p\n"),
                       ACE_TEXT ("open")),
                      1);

  ACE_DEBUG((LM_DEBUG,
             ACE_TEXT ("(%t) Spawning %d server threads...\n"),
             svr_thrno));
  ACE_Thread_Manager::instance ()->spawn_n (svr_thrno,
                                            svr_worker);
  ACE_Thread_Manager::instance ()->spawn (worker);

  ACE_Thread_Manager::instance ()->wait ();

  ACE_END_TEST;
  return 0;
}
示例#2
0
// Listing 1 code/ch16
int ACE_TMAIN (int, ACE_TCHAR *[])
{
  ACE_TP_Reactor sr;
  ACE_Reactor new_reactor (&sr);
  ACE_Reactor::instance (&new_reactor);

  ACCEPTOR acceptor;
  ACE_INET_Addr accept_addr (rendezvous);

  if (acceptor.open (accept_addr) == -1)
    ACE_ERROR_RETURN ((LM_ERROR,
                       ACE_TEXT ("%p\n"),
                       ACE_TEXT ("open")),
                      1);

  ACE_DEBUG ((LM_DEBUG,
              ACE_TEXT ("(%t) Spawning %d server threads...\n"),
              svr_thrno));

  ServerTP serverTP;
  serverTP.activate (THR_NEW_LWP | THR_JOINABLE,
                     ACE_Utils::truncate_cast<int> (svr_thrno));

  Client client;
  client.activate ();

  ACE_Thread_Manager::instance ()->wait ();

  return 0;
}
示例#3
0
int
run_main (int argc, ACE_TCHAR *argv[])
{
  ACE_START_TEST (ACE_TEXT ("Thread_Pool_Reactor_SSL_Test"));

  ACE_SSL_Context *context = ACE_SSL_Context::instance ();
  // Note - the next two strings are naked on purpose... the arguments to
  // the ACE_SSL_Context methods are const char *, not ACE_TCHAR *.
  context->certificate ("dummy.pem", SSL_FILETYPE_PEM);
  context->private_key ("key.pem", SSL_FILETYPE_PEM);

  parse_arg (argc, argv);

  // Changed the default
  ACE_TP_Reactor sr;
  ACE_Reactor new_reactor (&sr);
  ACE_Reactor::instance (&new_reactor);

  ACCEPTOR acceptor;
  ACE_INET_Addr accept_addr (rendezvous);

  if (acceptor.open (accept_addr) == -1)
    ACE_ERROR_RETURN ((LM_ERROR,
                       ACE_TEXT ("%p\n"),
                       ACE_TEXT ("open")),
                      1);

  ACE_DEBUG((LM_DEBUG,
             ACE_TEXT ("(%t) Spawning %d server threads...\n"),
             svr_thrno));
  ACE_Thread_Manager::instance ()->spawn_n (svr_thrno,
                                            svr_worker);
  ACE_Thread_Manager::instance ()->spawn (worker);

  ACE_Thread_Manager::instance ()->wait ();

  ACE_END_TEST;
  return 0;
}
示例#4
0
int main (int argc, char *argv[])
{
  // user may provide a host@port string and a hosts_file
  std::string key = argc > 1 ? argv[1] : DEFAULT_KEY;
  std::string hosts_file = argc > 2 ? argv[2] : "";

  std::string server_host;
  std::string port_str;

  // split the host@port
  Madara::split_key (key, server_host, port_str);

  // create a u_short port for the acceptor
  u_short server_port = argc > 1 ? 
    ACE_OS::atoi (port_str.c_str ()) : DEFAULT_PORT;

  Madara::BrokerContext context;

  // create a reactor with a thread pool
  ACE_TP_Reactor reactor;
  ACE_Reactor new_reactor (&reactor);
  ACE_Reactor::instance (&new_reactor);

  // create the handlers
  ClientAcceptor peer_acceptor (context);
  BrokerTimeoutHandler timeouts (context);
  ActiveTimer timer;

  // for the scheduled timer
  ACE_Time_Value initial (0);
  ACE_Time_Value interval (2,0);
  int arg1 = 0;


  ACE_Reactor::instance ()->schedule_timer (&timeouts, &arg1, 
    ACE_Time_Value::zero, interval);

  // if no port is provided, then bind to the first available
  if (port_str == "")
    Madara::bindToFirstAvailableBrokerPort (peer_acceptor, context);
  else if (peer_acceptor.open (ACE_INET_Addr (server_port), ACE_Reactor::instance ()) == -1)
    ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "open"), -1);

  server_port = atoi (context.getPort ().c_str ());

  // signal handler for clean exit
  ACE_Sig_Action sa ((ACE_SignalHandler) handler, SIGINT);

  std::cerr << "Dumping context\n\n";

  context.write (std::cerr);

  ACE_DEBUG ((LM_DEBUG, "(%P|%t) starting up broker agent (port %d)\n", server_port));

  while (!Madara::finished_)
        reactor.handle_events ();

  ACE_DEBUG ((LM_DEBUG, "(%P|%t) shutting down swarm agent\n"));
 
  std::cerr << "Dumping context\n\n";

  context.write (std::cerr);


/*  std::ofstream output ("test_results.txt");
  Madara::BrokerContext context;
  Madara::Deployment::Candidate deployment;
  ACE_hrtime_t start, end;
  unsigned int total;
  int i = 20;
  int count = 20;

  srand (time (NULL));
  
  for (i = 20; i <= 200; i += count)
    {
      std::cout << "Testing deployment of size " << i << std::endl;
      testDeploymentSize (i, std::cerr);
    }
*/
  return 0;
}