refine code, persistence use isolate method.

pull/556/head^2
winlin 9 years ago
parent b486f6fe6b
commit f6ff116505

@ -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…
Cancel
Save