void init(const M_string& remappings) { M_string::const_iterator it = remappings.find("__hostname"); if (it != remappings.end()) { g_host = it->second; } else { it = remappings.find("__ip"); if (it != remappings.end()) { g_host = it->second; } } it = remappings.find("__tcpros_server_port"); if (it != remappings.end()) { try { g_tcpros_server_port = boost::lexical_cast<uint16_t>(it->second); } catch (boost::bad_lexical_cast&) { throw ros::InvalidPortException("__tcpros_server_port [" + it->second + "] was not specified as a number within the 0-65535 range"); } } if (g_host.empty()) { g_host = determineHost(); } }
std::string remap(const std::string& name) { std::string resolved = resolve(name, false); M_string::const_iterator it = g_remappings.find(resolved); if (it != g_remappings.end()) { return it->second; } return name; }
void init(const M_string& remappings) { M_string::const_iterator it = remappings.find("__master"); if (it != remappings.end()) { g_uri = it->second; } if (g_uri.empty()) { char *master_uri_env = NULL; #ifdef _MSC_VER _dupenv_s(&master_uri_env, NULL, "ROS_MASTER_URI"); #else master_uri_env = getenv("ROS_MASTER_URI"); #endif if (!master_uri_env) { ROS_FATAL( "ROS_MASTER_URI is not defined in the environment. Either " \ "type the following or (preferrably) add this to your " \ "~/.bashrc file in order set up your " \ "local machine as a ROS master:\n\n" \ "export ROS_MASTER_URI=http://localhost:11311\n\n" \ "then, type 'roscore' in another shell to actually launch " \ "the master program."); ROS_BREAK(); } g_uri = master_uri_env; #ifdef _MSC_VER // http://msdn.microsoft.com/en-us/library/ms175774(v=vs.80).aspx free(master_uri_env); #endif } // Split URI into if (!network::splitURI(g_uri, g_host, g_port)) { ROS_FATAL( "Couldn't parse the master URI [%s] into a host:port pair.", g_uri.c_str()); ROS_BREAK(); } }
void init(const M_string& remappings) { std::string log_file_name; M_string::const_iterator it = remappings.find("__log"); if (it != remappings.end()) { log_file_name = it->second; } { // Log filename can be specified on the command line through __log // If it's been set, don't create our own name if (log_file_name.empty()) { // Setup the logfile appender // Can't do this in rosconsole because the node name is not known pid_t pid = getpid(); std::string ros_log_env; if ( get_environment_variable(ros_log_env, "ROS_LOG_DIR")) { log_file_name = ros_log_env + std::string("/"); } else { if ( get_environment_variable(ros_log_env, "ROS_HOME")) { log_file_name = ros_log_env + std::string("/log/"); } else { // Not cross-platform? if( get_environment_variable(ros_log_env, "HOME") ) { std::string dotros = ros_log_env + std::string("/.ros/"); fs::create_directory(dotros); log_file_name = dotros + "log/"; fs::create_directory(log_file_name); } } } // sanitize the node name and tack it to the filename for (size_t i = 1; i < this_node::getName().length(); i++) { if (!isalnum(this_node::getName()[i])) { log_file_name += '_'; } else { log_file_name += this_node::getName()[i]; } } char pid_str[100]; snprintf(pid_str, sizeof(pid_str), "%d", pid); log_file_name += std::string("_") + std::string(pid_str) + std::string(".log"); } log_file_name = fs::system_complete(log_file_name).string(); g_log_directory = fs::path(log_file_name).parent_path().string(); } }