mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
refine code, persistence use isolate method.
This commit is contained in:
parent
b486f6fe6b
commit
f6ff116505
2 changed files with 28 additions and 3 deletions
|
@ -628,6 +628,11 @@ SrsConfDirective::~SrsConfDirective()
|
||||||
}
|
}
|
||||||
|
|
||||||
SrsConfDirective* SrsConfDirective::copy()
|
SrsConfDirective* SrsConfDirective::copy()
|
||||||
|
{
|
||||||
|
return copy("");
|
||||||
|
}
|
||||||
|
|
||||||
|
SrsConfDirective* SrsConfDirective::copy(string except)
|
||||||
{
|
{
|
||||||
SrsConfDirective* cp = new SrsConfDirective();
|
SrsConfDirective* cp = new SrsConfDirective();
|
||||||
|
|
||||||
|
@ -637,7 +642,10 @@ SrsConfDirective* SrsConfDirective::copy()
|
||||||
|
|
||||||
for (int i = 0; i < (int)directives.size(); i++) {
|
for (int i = 0; i < (int)directives.size(); i++) {
|
||||||
SrsConfDirective* directive = directives.at(i);
|
SrsConfDirective* directive = directives.at(i);
|
||||||
cp->directives.push_back(directive->copy());
|
if (!except.empty() && directive->name == except) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
cp->directives.push_back(directive->copy(except));
|
||||||
}
|
}
|
||||||
|
|
||||||
return cp;
|
return cp;
|
||||||
|
@ -1982,8 +1990,8 @@ int SrsConfig::persistence()
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
// persistence root directive to writer.
|
// do persistence to writer.
|
||||||
if ((ret = root->persistence(&fw, 0)) != ERROR_SUCCESS) {
|
if ((ret = do_persistence(&fw)) != ERROR_SUCCESS) {
|
||||||
::unlink(path.c_str());
|
::unlink(path.c_str());
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -2000,6 +2008,18 @@ int SrsConfig::persistence()
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int SrsConfig::do_persistence(SrsFileWriter* fw)
|
||||||
|
{
|
||||||
|
int ret = ERROR_SUCCESS;
|
||||||
|
|
||||||
|
// persistence root directive to writer.
|
||||||
|
if ((ret = root->persistence(fw, 0)) != ERROR_SUCCESS) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
int SrsConfig::minimal_to_json(SrsJsonObject* obj)
|
int SrsConfig::minimal_to_json(SrsJsonObject* obj)
|
||||||
{
|
{
|
||||||
int ret = ERROR_SUCCESS;
|
int ret = ERROR_SUCCESS;
|
||||||
|
|
|
@ -192,6 +192,8 @@ public:
|
||||||
* so need to copy it to an old root directive, and use the copy result to do reload.
|
* so need to copy it to an old root directive, and use the copy result to do reload.
|
||||||
*/
|
*/
|
||||||
virtual SrsConfDirective* copy();
|
virtual SrsConfDirective* copy();
|
||||||
|
// @param except the name of sub directive.
|
||||||
|
virtual SrsConfDirective* copy(std::string except);
|
||||||
// args
|
// args
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
|
@ -414,6 +416,9 @@ public:
|
||||||
* persistence current config to file.
|
* persistence current config to file.
|
||||||
*/
|
*/
|
||||||
virtual int persistence();
|
virtual int persistence();
|
||||||
|
private:
|
||||||
|
virtual int do_persistence(SrsFileWriter* fw);
|
||||||
|
public:
|
||||||
/**
|
/**
|
||||||
* dumps the global sections to json.
|
* dumps the global sections to json.
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue