Moved string replace function from stream library to util library
Change-Id: Icea1eed11b241063af39d0c7cf23f1733f96012c
This commit is contained in:
parent
877216efd0
commit
62b14d958d
3 changed files with 30 additions and 29 deletions
|
@ -33,16 +33,6 @@ static std::string strftime_now(const std::string &format){
|
||||||
return buffer;
|
return buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Replaces any occurrences of 'from' with 'to' in 'str'.
|
|
||||||
static void replace(std::string &str, const std::string &from, const std::string &to){
|
|
||||||
if (from.empty()){return;}
|
|
||||||
size_t start_pos = 0;
|
|
||||||
while ((start_pos = str.find(from, start_pos)) != std::string::npos){
|
|
||||||
str.replace(start_pos, from.length(), to);
|
|
||||||
start_pos += to.length();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string Util::codecString(const std::string &codec, const std::string &initData){
|
std::string Util::codecString(const std::string &codec, const std::string &initData){
|
||||||
if (codec == "H264"){
|
if (codec == "H264"){
|
||||||
std::stringstream r;
|
std::stringstream r;
|
||||||
|
@ -119,32 +109,32 @@ std::string Util::codecString(const std::string &codec, const std::string &initD
|
||||||
|
|
||||||
/// Replaces all stream-related variables in the given 'str' with their values.
|
/// Replaces all stream-related variables in the given 'str' with their values.
|
||||||
void Util::streamVariables(std::string &str, const std::string &streamname, const std::string &source){
|
void Util::streamVariables(std::string &str, const std::string &streamname, const std::string &source){
|
||||||
replace(str, "$source", source);
|
Util::replace(str, "$source", source);
|
||||||
replace(str, "$datetime", "$year.$month.$day.$hour.$minute.$second");
|
Util::replace(str, "$datetime", "$year.$month.$day.$hour.$minute.$second");
|
||||||
replace(str, "$day", strftime_now("%d"));
|
Util::replace(str, "$day", strftime_now("%d"));
|
||||||
replace(str, "$month", strftime_now("%m"));
|
Util::replace(str, "$month", strftime_now("%m"));
|
||||||
replace(str, "$year", strftime_now("%Y"));
|
Util::replace(str, "$year", strftime_now("%Y"));
|
||||||
replace(str, "$hour", strftime_now("%H"));
|
Util::replace(str, "$hour", strftime_now("%H"));
|
||||||
replace(str, "$minute", strftime_now("%M"));
|
Util::replace(str, "$minute", strftime_now("%M"));
|
||||||
replace(str, "$second", strftime_now("%S"));
|
Util::replace(str, "$second", strftime_now("%S"));
|
||||||
replace(str, "$wday", strftime_now("%u")); // weekday, 1-7, monday=1
|
Util::replace(str, "$wday", strftime_now("%u")); // weekday, 1-7, monday=1
|
||||||
replace(str, "$yday", strftime_now("%j")); // yearday, 001-366
|
Util::replace(str, "$yday", strftime_now("%j")); // yearday, 001-366
|
||||||
replace(str, "$week", strftime_now("%V")); // week number, 01-53
|
Util::replace(str, "$week", strftime_now("%V")); // week number, 01-53
|
||||||
replace(str, "$stream", streamname);
|
Util::replace(str, "$stream", streamname);
|
||||||
if (streamname.find('+') != std::string::npos){
|
if (streamname.find('+') != std::string::npos){
|
||||||
std::string strbase = streamname.substr(0, streamname.find('+'));
|
std::string strbase = streamname.substr(0, streamname.find('+'));
|
||||||
std::string strext = streamname.substr(streamname.find('+') + 1);
|
std::string strext = streamname.substr(streamname.find('+') + 1);
|
||||||
replace(str, "$basename", strbase);
|
Util::replace(str, "$basename", strbase);
|
||||||
replace(str, "$wildcard", strext);
|
Util::replace(str, "$wildcard", strext);
|
||||||
if (strext.size()){
|
if (strext.size()){
|
||||||
replace(str, "$pluswildcard", "+" + strext);
|
Util::replace(str, "$pluswildcard", "+" + strext);
|
||||||
}else{
|
}else{
|
||||||
replace(str, "$pluswildcard", "");
|
Util::replace(str, "$pluswildcard", "");
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
replace(str, "$basename", streamname);
|
Util::replace(str, "$basename", streamname);
|
||||||
replace(str, "$wildcard", "");
|
Util::replace(str, "$wildcard", "");
|
||||||
replace(str, "$pluswildcard", "");
|
Util::replace(str, "$pluswildcard", "");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
10
lib/util.cpp
10
lib/util.cpp
|
@ -150,6 +150,16 @@ namespace Util{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Replaces any occurrences of 'from' with 'to' in 'str'.
|
||||||
|
void replace(std::string &str, const std::string &from, const std::string &to){
|
||||||
|
if (from.empty()){return;}
|
||||||
|
size_t start_pos = 0;
|
||||||
|
while ((start_pos = str.find(from, start_pos)) != std::string::npos){
|
||||||
|
str.replace(start_pos, from.length(), to);
|
||||||
|
start_pos += to.length();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//Returns the time to wait in milliseconds for exponential back-off waiting.
|
//Returns the time to wait in milliseconds for exponential back-off waiting.
|
||||||
//If currIter > maxIter, always returns 5ms to prevent tight eternal loops when mistakes are made
|
//If currIter > maxIter, always returns 5ms to prevent tight eternal loops when mistakes are made
|
||||||
//Otherwise, exponentially increases wait time for a total of maxWait milliseconds after maxIter calls.
|
//Otherwise, exponentially increases wait time for a total of maxWait milliseconds after maxIter calls.
|
||||||
|
|
|
@ -13,6 +13,7 @@ namespace Util{
|
||||||
bool createPath(const std::string &path);
|
bool createPath(const std::string &path);
|
||||||
bool stringScan(const std::string &src, const std::string &pattern, std::deque<std::string> &result);
|
bool stringScan(const std::string &src, const std::string &pattern, std::deque<std::string> &result);
|
||||||
void stringToLower(std::string &val);
|
void stringToLower(std::string &val);
|
||||||
|
void replace(std::string &str, const std::string &from, const std::string &to);
|
||||||
|
|
||||||
int64_t expBackoffMs(const size_t currIter, const size_t maxIter, const int64_t maxWait);
|
int64_t expBackoffMs(const size_t currIter, const size_t maxIter, const int64_t maxWait);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue