void SubDriver::parse_arg_p(const char* arg, bool& flag) { if (flag) { ACE_ERROR((LM_ERROR, "(%P|%t) Only one -p allowed on command-line.\n")); throw TestException(); } std::string arg_str = arg; std::string::size_type pos; // Find the first ':' character, and make sure it is in a legal spot. if ((pos = arg_str.find_first_of(':')) == std::string::npos) { ACE_ERROR((LM_ERROR, "(%P|%t) Bad -p value (%s). " "Missing ':' chars.\n", arg)); throw TestException(); } if (pos == 0) { ACE_ERROR((LM_ERROR, "(%P|%t) Bad -p value (%s). " "':' char cannot be first char.\n", arg)); throw TestException(); } if (pos == arg_str.length() - 1) { ACE_ERROR((LM_ERROR, "(%P|%t) Bad -p value (%s). " "':' char cannot be last char.\n", arg)); throw TestException(); } // Parse the pub_id from left of ':' char, and remainder to right of ':'. std::string pub_id_str(arg_str,0,pos); std::string pub_addr_str(arg_str,pos+1,std::string::npos); //use 3-arg constructor to build with VC6 TAO::DCPS::RepoId pub_id = ACE_OS::atoi(pub_id_str.c_str()); ACE_INET_Addr pub_addr(pub_addr_str.c_str()); this->subscriber_.add_remote_publisher(pub_id,pub_addr); flag = true; }
int PubDriver::parse_pub_arg(const ACE_TString& arg) { DBG_ENTRY("PubDriver","parse_pub_arg"); size_t pos; // Find the first ':' character, and make sure it is in a legal spot. if ((pos = std::find(arg.c_str(), arg.c_str() + arg.length(), ACE_TEXT(':')) - arg.c_str()) == arg.length()) { ACE_ERROR((LM_ERROR, "(%P|%t) Bad -p command-line value (%s). Missing ':' char.\n", arg.c_str())); return -1; } if (pos == 0) { ACE_ERROR((LM_ERROR, "(%P|%t) Bad -p command-line value (%s). " "':' char cannot be first char.\n", arg.c_str())); return -1; } if (pos == (arg.length() - 1)) { ACE_ERROR((LM_ERROR, "(%P|%t) Bad -p command-line value (%s) - " "':' char cannot be last char.\n", arg.c_str())); return -1; } // Parse the pub_id from left of ':' char, and remainder to right of ':'. ACE_TString pub_id_str(arg.c_str(), pos); this->pub_addr_str_ = arg.c_str() + pos + 1; // RepoIds are conventionally created and managed by the DCPSInfoRepo. Those // generated here are for the sole purpose of verifying internal behavior. OpenDDS::DCPS::RepoIdBuilder builder(pub_id_); builder.participantId(1); builder.entityKey(ACE_OS::atoi(pub_id_str.c_str())); builder.entityKind(OpenDDS::DCPS::ENTITYKIND_USER_WRITER_WITH_KEY); this->pub_addr_ = ACE_INET_Addr(this->pub_addr_str_.c_str()); return 0; }
int PubDriver::parse_pub_arg(const std::string& arg) { std::string::size_type pos; // Find the first ':' character, and make sure it is in a legal spot. if ((pos = arg.find_first_of(':')) == std::string::npos) { ACE_ERROR((LM_ERROR, "(%P|%t) Bad -p command-line value (%s). Missing ':' char.\n", arg.c_str())); return -1; } if (pos == 0) { ACE_ERROR((LM_ERROR, "(%P|%t) Bad -p command-line value (%s). " "':' char cannot be first char.\n", arg.c_str())); return -1; } if (pos == (arg.length() - 1)) { ACE_ERROR((LM_ERROR, "(%P|%t) Bad -p command-line value (%s) - " "':' char cannot be last char.\n", arg.c_str())); return -1; } // Parse the pub_id from left of ':' char, and remainder to right of ':'. std::string pub_id_str(arg,0,pos); std::string pub_addr_str(arg,pos+1,std::string::npos); //use 3-arg constructor to build with VC6 this->pub_id_ = ACE_OS::atoi(pub_id_str.c_str()); this->pub_addr_ = ACE_INET_Addr(pub_addr_str.c_str()); return 0; }
int SubDriver::parse_pub_arg(const ACE_TString& arg) { size_t pos; // Find the first ':' character, and make sure it is in a legal spot. if ((pos = std::find(arg.c_str(), arg.c_str() + arg.length(), ACE_TEXT(':')) - arg.c_str()) == arg.length()) { ACE_ERROR((LM_ERROR, "(%P|%t) Bad -p command-line value (%s). Missing ':' char.\n", arg.c_str())); return -1; } if (pos == 0) { ACE_ERROR((LM_ERROR, "(%P|%t) Bad -p command-line value (%s). " "':' char cannot be first char.\n", arg.c_str())); return -1; } if (pos == (arg.length() - 1)) { ACE_ERROR((LM_ERROR, "(%P|%t) Bad -p command-line value (%s) - " "':' char cannot be last char.\n", arg.c_str())); return -1; } // Parse the pub_id from left of ':' char, and remainder to right of ':'. ACE_TString pub_id_str(arg.c_str(), pos); this->pub_addr_str_ = arg.c_str() + pos + 1; this->pub_id_fname_ = pub_id_str.c_str(); this->pub_addr_ = ACE_INET_Addr(this->pub_addr_str_.c_str()); return 0; }