mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
refine codes.
This commit is contained in:
parent
b2ae1acaa4
commit
fabcc91a0e
5 changed files with 71 additions and 1 deletions
|
@ -357,7 +357,57 @@ vector<string> srs_string_split(string str, string flag)
|
||||||
|
|
||||||
while ((pos = s.find(flag)) != string::npos) {
|
while ((pos = s.find(flag)) != string::npos) {
|
||||||
arr.push_back(s.substr(0, pos));
|
arr.push_back(s.substr(0, pos));
|
||||||
s = s.substr(pos + 1);
|
s = s.substr(pos + flag.length());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!s.empty()) {
|
||||||
|
arr.push_back(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
return arr;
|
||||||
|
}
|
||||||
|
|
||||||
|
string srs_string_min_match(string str, vector<string> flags)
|
||||||
|
{
|
||||||
|
string match;
|
||||||
|
|
||||||
|
size_t min_pos = string::npos;
|
||||||
|
for (vector<string>::iterator it = flags.begin(); it != flags.end(); ++it) {
|
||||||
|
string flag = *it;
|
||||||
|
|
||||||
|
size_t pos = str.find(flag);
|
||||||
|
if (pos == string::npos) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (min_pos == string::npos || pos < min_pos) {
|
||||||
|
min_pos = pos;
|
||||||
|
match = flag;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return match;
|
||||||
|
}
|
||||||
|
|
||||||
|
vector<string> srs_string_split(string str, vector<string> flags)
|
||||||
|
{
|
||||||
|
vector<string> arr;
|
||||||
|
|
||||||
|
size_t pos = string::npos;
|
||||||
|
string s = str;
|
||||||
|
|
||||||
|
while (true) {
|
||||||
|
string flag = srs_string_min_match(s, flags);
|
||||||
|
if (flag.empty()) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((pos = s.find(flag)) == string::npos) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
arr.push_back(s.substr(0, pos));
|
||||||
|
s = s.substr(pos + flag.length());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!s.empty()) {
|
if (!s.empty()) {
|
||||||
|
|
|
@ -90,6 +90,7 @@ extern bool srs_string_starts_with(std::string str, std::string flag0, std::stri
|
||||||
extern bool srs_string_contains(std::string str, std::string flag);
|
extern bool srs_string_contains(std::string str, std::string flag);
|
||||||
// split the string by flag to array.
|
// split the string by flag to array.
|
||||||
extern std::vector<std::string> srs_string_split(std::string str, std::string flag);
|
extern std::vector<std::string> srs_string_split(std::string str, std::string flag);
|
||||||
|
extern std::vector<std::string> srs_string_split(std::string str, std::vector<std::string> flags);
|
||||||
|
|
||||||
// create dir recursively
|
// create dir recursively
|
||||||
extern int srs_create_dir_recursively(std::string dir);
|
extern int srs_create_dir_recursively(std::string dir);
|
||||||
|
|
3
trunk/src/protocol/srs_http_stack.cpp
Executable file → Normal file
3
trunk/src/protocol/srs_http_stack.cpp
Executable file → Normal file
|
@ -2989,6 +2989,9 @@ int SrsHttpUri::initialize(string _url)
|
||||||
{
|
{
|
||||||
int ret = ERROR_SUCCESS;
|
int ret = ERROR_SUCCESS;
|
||||||
|
|
||||||
|
port = 0;
|
||||||
|
schema = host = path = query = "";
|
||||||
|
|
||||||
url = _url;
|
url = _url;
|
||||||
const char* purl = url.c_str();
|
const char* purl = url.c_str();
|
||||||
|
|
||||||
|
|
|
@ -630,6 +630,21 @@ SrsJsonAny* SrsJsonObject::ensure_property_integer(string name)
|
||||||
return prop;
|
return prop;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SrsJsonAny* SrsJsonObject::ensure_property_number(string name)
|
||||||
|
{
|
||||||
|
SrsJsonAny* prop = get_property(name);
|
||||||
|
|
||||||
|
if (!prop) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!prop->is_number()) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return prop;
|
||||||
|
}
|
||||||
|
|
||||||
SrsJsonAny* SrsJsonObject::ensure_property_boolean(string name)
|
SrsJsonAny* SrsJsonObject::ensure_property_boolean(string name)
|
||||||
{
|
{
|
||||||
SrsJsonAny* prop = get_property(name);
|
SrsJsonAny* prop = get_property(name);
|
||||||
|
|
|
@ -157,6 +157,7 @@ public:
|
||||||
virtual SrsJsonAny* get_property(std::string name);
|
virtual SrsJsonAny* get_property(std::string name);
|
||||||
virtual SrsJsonAny* ensure_property_string(std::string name);
|
virtual SrsJsonAny* ensure_property_string(std::string name);
|
||||||
virtual SrsJsonAny* ensure_property_integer(std::string name);
|
virtual SrsJsonAny* ensure_property_integer(std::string name);
|
||||||
|
virtual SrsJsonAny* ensure_property_number(std::string name);
|
||||||
virtual SrsJsonAny* ensure_property_boolean(std::string name);
|
virtual SrsJsonAny* ensure_property_boolean(std::string name);
|
||||||
virtual SrsJsonAny* ensure_property_object(std::string name);
|
virtual SrsJsonAny* ensure_property_object(std::string name);
|
||||||
virtual SrsJsonAny* ensure_property_array(std::string name);
|
virtual SrsJsonAny* ensure_property_array(std::string name);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue