void SubDriver::parse_arg_s(const char* arg, bool& flag) { if (flag) { ACE_ERROR((LM_ERROR, "(%P|%t) Only one -s 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 -s value (%s). " "Missing ':' chars.\n", arg)); throw TestException(); } if (pos == 0) { ACE_ERROR((LM_ERROR, "(%P|%t) Bad -s value (%s). " "':' char cannot be first char.\n", arg)); throw TestException(); } if (pos == arg_str.length() - 1) { ACE_ERROR((LM_ERROR, "(%P|%t) Bad -s value (%s). " "':' char cannot be last char.\n", arg)); throw TestException(); } // Parse the sub_id from left of ':' char, and remainder to right of ':'. std::string sub_id_str(arg_str,0,pos); std::string sub_addr_str(arg_str,pos+1,std::string::npos); //use 3-arg constructor to build with VC6 TAO::DCPS::RepoId sub_id = ACE_OS::atoi(sub_id_str.c_str()); this->local_address_ = ACE_INET_Addr(sub_addr_str.c_str()); this->subscriber_.set_local_subscriber(sub_id); flag = true; }
int SubDriver::parse_sub_arg(const ACE_TString& arg) { DBG_ENTRY("SubDriver","parse_sub_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 sub_id from left of ':' char, and remainder to right of ':'. ACE_TString sub_id_str(arg.c_str(), pos); this->sub_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(sub_id_); builder.participantId(1); builder.entityKey(ACE_OS::atoi(sub_id_str.c_str())); builder.entityKind(OpenDDS::DCPS::ENTITYKIND_USER_WRITER_WITH_KEY); // Use the remainder as the "stringified" ACE_INET_Addr. this->sub_addr_ = ACE_INET_Addr(this->sub_addr_str_.c_str()); return 0; }
void PubDriver::parse_arg_s(const char* arg, bool& flag) { 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 -s value (%s). " "Missing ':' chars.\n", arg)); throw TestException(); } if (pos == 0) { ACE_ERROR((LM_ERROR, "(%P|%t) Bad -s value (%s). " "':' char cannot be first char.\n", arg)); throw TestException(); } if (pos == arg_str.length() - 1) { ACE_ERROR((LM_ERROR, "(%P|%t) Bad -s value (%s). " "':' char cannot be last char.\n", arg)); throw TestException(); } // Parse the sub_id from left of ':' char, and remainder to right of ':'. std::string sub_id_str(arg_str,0,pos); std::string sub_addr_str(arg_str,pos+1,std::string::npos); //use 3-arg constructor to build with VC6 OpenDDS::DCPS::RepoId sub_id = ACE_OS::atoi(sub_id_str.c_str()); ACE_INET_Addr sub_addr(sub_addr_str.c_str()); this->publisher_.add_remote_subscriber(sub_id,sub_addr, sub_addr_str); flag = true; }
int SubDriver::parse_sub_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 sub_id from left of ':' char, and remainder to right of ':'. std::string sub_id_str(arg,0,pos); std::string sub_addr_str(arg,pos+1,std::string::npos); //use 3-arg constructor to build with VC6 this->sub_id_ = ACE_OS::atoi(sub_id_str.c_str()); // Use the remainder as the "stringified" ACE_INET_Addr. this->sub_addr_ = ACE_INET_Addr(sub_addr_str.c_str()); return 0; }