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; }
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 */ }