Go to the documentation of this file.
4 #ifndef ROSMON_LAUNCH_LAUNCH_CONFIG_H
5 #define ROSMON_LAUNCH_LAUNCH_CONFIG_H
17 #include <yaml-cpp/yaml.h>
19 #include <fmt/format.h>
42 virtual const char*
what() const noexcept
43 {
return m_msg.c_str(); }
45 template<
typename... Args>
89 bool parseBool(
const std::string& value,
int line);
96 inline const std::map<std::string, std::string>&
arguments()
const
99 void setArg(
const std::string& name,
const std::string& value,
bool override);
101 void setEnvironment(
const std::string& name,
const std::string& value);
103 inline const std::map<std::string, std::string>
environment()
const
111 void setRemap(
const std::string& from,
const std::string& to);
115 std::string
anonName(
const std::string& base);
117 template<
typename... Args>
120 std::string msg = fmt::format(fmt, args...);
134 template<
typename... Args>
135 void warning(
const char* fmt,
const Args& ... args)
const;
164 std::map<std::string, std::string>
m_args;
178 typedef std::shared_ptr<LaunchConfig>
Ptr;
179 typedef std::shared_ptr<const LaunchConfig>
ConstPtr;
193 void setArgument(
const std::string& name,
const std::string& value);
205 void parse(
const std::string& filename,
bool onlyArguments =
false);
206 void parseString(
const std::string& input,
bool onlyArguments =
false);
212 inline const std::map<std::string, XmlRpc::XmlRpcValue>&
parameters()
const
215 inline const std::vector<Node::Ptr>&
nodes()
const
218 inline const std::map<std::string, std::string>&
arguments()
const
221 std::string
anonName(
const std::string& base);
242 void parse(TiXmlElement* element,
ParseContext* ctx,
bool onlyArguments =
false);
287 template<
typename... Args>
290 std::string msg = fmt::format(fmt, args...);
uint64_t memoryLimit() const
std::map< std::string, std::string > m_anonNames
bool shouldSkip(TiXmlElement *e)
void parseParam(TiXmlElement *element, ParseContext &ctx, ParamContext paramContext=PARAM_GENERAL)
@ PARAM_GENERAL
tag inside <node>
ParseContext(LaunchConfig *config)
void parseTopLevelAttributes(TiXmlElement *element)
void parseRemap(TiXmlElement *element, ParseContext &ctx)
@ PARAM_IN_NODE
tag everywhere else
std::vector< std::future< YAMLResult > > m_yamlParamJobs
void parseString(const std::string &input, bool onlyArguments=false)
std::string anonName(const std::string &base)
void setDefaultMemoryLimit(uint64_t memoryLimit)
void setEnvironment(const std::string &name, const std::string &value)
std::string m_windowTitle
void parseROSParam(TiXmlElement *element, ParseContext &ctx)
void setFilename(const std::string &filename)
void setArg(const std::string &name, const std::string &value, bool override)
void setArgument(const std::string &name, const std::string &value)
ParseContext enterScope(const std::string &prefix)
const std::vector< Node::Ptr > & nodes() const
void applyAutoIncrementSpawnDelayToAll(const ros::WallDuration &autoIncrementSpawnDelay)
std::vector< Node::Ptr > m_nodes
void parseScopeAttributes(TiXmlElement *e, ParseContext &attr_ctx)
virtual ~ParseException()
ParseException error(const char *fmt, const Args &... args) const
std::string m_rosmonNodeName
std::mt19937_64 m_anonGen
virtual const char * what() const noexcept
const std::string & filename() const
OutputAttr m_outputAttrMode
std::map< std::string, std::string > m_environment
void setNodeLogDir(const std::string &logDir)
void parseNode(TiXmlElement *element, ParseContext &ctx)
void setDefaultStopTimeout(double timeout)
std::ostream * m_warningOutput
XmlRpc::XmlRpcValue paramToXmlRpc(const ParseContext &ctx, const std::string &value, const std::string &type="")
std::map< std::string, std::string > m_args
void setOutputAttrMode(OutputAttr mode)
void parse(const std::string &filename, bool onlyArguments=false)
std::string nodeLogDir() const
std::shared_ptr< const LaunchConfig > ConstPtr
void loadYAMLParams(const ParseContext &ctx, const YAML::Node &n, const std::string &prefix)
ParseException format(const char *format, const Args &... args)
const std::map< std::string, std::string > & arguments() const
void setCPULimit(double limit)
ParseContext m_rootContext
bool coredumpsEnabled() const
const char * UNSET_MARKER
std::string simplifyWhitespace(const std::string &input)
Compress any sequence of whitespace to single spaces.
std::map< std::string, ParameterFuture > m_paramJobs
ParseException(const std::string &msg)
void parseInclude(TiXmlElement *element, ParseContext &ctx)
std::string windowTitle() const
double stopTimeout() const
std::string evaluate(const std::string &tpl, bool simplifyWhitespace=true)
std::future< XmlRpc::XmlRpcValue > ParameterFuture
const std::string & prefix() const
std::map< std::string, XmlRpc::XmlRpcValue > ParameterList
void setDefaultCPULimit(double CPULimit)
void setCurrentElement(TiXmlElement *e)
constexpr double DEFAULT_CPU_LIMIT
std::string generateAnonHash()
void setMemoryLimit(uint64_t limit)
const std::map< std::string, std::string > & remappings()
void setStopTimeout(double timeout)
constexpr double DEFAULT_STOP_TIMEOUT
const std::map< std::string, std::string > environment() const
void setRemap(const std::string &from, const std::string &to)
std::map< std::string, std::string > m_remappings
std::ostream & warningOutput()
void warning(const char *fmt, const Args &... args) const
void evaluateParameters()
void setWarningOutput(std::ostream *warningStream)
std::shared_ptr< LaunchConfig > Ptr
const std::map< std::string, XmlRpc::XmlRpcValue > & parameters() const
std::string anonName(const std::string &base)
bool parseBool(const std::string &value, int line)
void parseArgument(TiXmlElement *element, ParseContext &ctx)
const std::map< std::string, std::string > & arguments() const
void setCoredumpsEnabled(bool enabled)
void parseEnv(TiXmlElement *element, ParseContext &ctx)
std::string rosmonNodeName() const
constexpr uint64_t DEFAULT_MEMORY_LIMIT
rosmon_core
Author(s): Max Schwarz
autogenerated on Wed Feb 21 2024 04:01:14