Ejemplo n.º 1
0
ACE_ARGV*
Lorica::Config::get_ifr_options_copy(void)
{
        ACE_ARGV *args;
        ACE_NEW_RETURN(args,
                       ACE_ARGV(),
                       0);
        ssize_t len = this->ifr_args_.size();

        for (ssize_t count = 0; count < len; count++)
                args->add (this->ifr_args_[count].c_str());

        return args;
}
Ejemplo n.º 2
0
int
Service_Config_ORB_DLL::init (int argc, ACE_TCHAR *argv[])
{
  ACE_Arg_Shifter arg_shifter (argc, argv);

  while (arg_shifter.is_anything_left ())
    {
      if (arg_shifter.cur_arg_strncasecmp (ACE_TEXT ("-c")) == 0)
        {
          this->is_server_ = 0;
          arg_shifter.consume_arg();
        }
      else if (arg_shifter.cur_arg_strncasecmp (ACE_TEXT ("-s")) == 0)
        {
          this->is_server_ = 1;
          arg_shifter.consume_arg();
        }
      else
        arg_shifter.ignore_arg();
    }

  if (this->is_server_ < 0)
    ACE_ERROR_RETURN ((LM_ERROR, "(%P|%t) You must specify -c(lient) or -s(erver) argument. Aborting."), -1);

  ACE_TCHAR **temp_argv = new ACE_TCHAR*[argc+1];
  for (int i = 0; i < argc; i++)
    {
      temp_argv[i] = new ACE_TCHAR[ACE_OS::strlen(argv[i])+1];
      ACE_OS::strcpy (temp_argv[i],argv[i]);
    }
  temp_argv[argc] = 0;

  ACE_ARGV* tmp = 0;
  ACE_NEW_RETURN (tmp, ACE_ARGV (temp_argv), -1);
  this->argv_.reset (tmp);
  for (int i = 0; i < argc; i++)
    delete [] temp_argv[i];
  delete [] temp_argv;

  Abstract_Worker* worker = 0;
  if (this->is_server_)
  {
    ACE_NEW_RETURN (worker, Server_Worker, -1);
  }
  else
  {
    ACE_NEW_RETURN (worker, Client_Worker, -1);
  }
  this->worker_.reset (worker);

#if defined (ACE_HAS_THREADS)
  ACE_DEBUG ((LM_DEBUG,
              ACE_TEXT ("(%P|%t) About to activate %s, argv[%d]=\'%s\' ...\n"),
              this->worker_->kind (),
              this->argv_->argc (),
              this->argv_->buf ()));

  // Become an Active Object if more than one argument passed.
  // Two arguments indicate two "test objects" to be dynamically
  // loaded.
  return this->activate ();
#else
  ACE_ERROR_RETURN ((LM_ERROR, ACE_TEXT ("(%P|%t) Threading support is required for this test. Aborting.")), -1);
#endif  /* ACE_HAS_THREADS */
}