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()
 | 
			
		||||
{
 | 
			
		||||
    return copy("");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SrsConfDirective* SrsConfDirective::copy(string except)
 | 
			
		||||
{
 | 
			
		||||
    SrsConfDirective* cp = new SrsConfDirective();
 | 
			
		||||
    
 | 
			
		||||
| 
						 | 
				
			
			@ -637,7 +642,10 @@ SrsConfDirective* SrsConfDirective::copy()
 | 
			
		|||
    
 | 
			
		||||
    for (int i = 0; i < (int)directives.size(); 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;
 | 
			
		||||
| 
						 | 
				
			
			@ -1982,8 +1990,8 @@ int SrsConfig::persistence()
 | 
			
		|||
        return ret;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    // persistence root directive to writer.
 | 
			
		||||
    if ((ret = root->persistence(&fw, 0)) != ERROR_SUCCESS) {
 | 
			
		||||
    // do persistence to writer.
 | 
			
		||||
    if ((ret = do_persistence(&fw)) != ERROR_SUCCESS) {
 | 
			
		||||
        ::unlink(path.c_str());
 | 
			
		||||
        return ret;
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -2000,6 +2008,18 @@ int SrsConfig::persistence()
 | 
			
		|||
    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 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.
 | 
			
		||||
     */
 | 
			
		||||
    virtual SrsConfDirective* copy();
 | 
			
		||||
    // @param except the name of sub directive.
 | 
			
		||||
    virtual SrsConfDirective* copy(std::string except);
 | 
			
		||||
// args
 | 
			
		||||
public:
 | 
			
		||||
    /**
 | 
			
		||||
| 
						 | 
				
			
			@ -414,6 +416,9 @@ public:
 | 
			
		|||
     * persistence current config to file.
 | 
			
		||||
     */
 | 
			
		||||
    virtual int persistence();
 | 
			
		||||
private:
 | 
			
		||||
    virtual int do_persistence(SrsFileWriter* fw);
 | 
			
		||||
public:
 | 
			
		||||
    /**
 | 
			
		||||
     * dumps the global sections to json.
 | 
			
		||||
     */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue