winlin

extracta parse_buffer for config

@@ -1161,7 +1161,14 @@ int SrsConfig::parse_file(const char* filename) @@ -1161,7 +1161,14 @@ int SrsConfig::parse_file(const char* filename)
1161 return ret; 1161 return ret;
1162 } 1162 }
1163 1163
1164 - if ((ret = root->parse(&buffer)) != ERROR_SUCCESS) { 1164 + return parse_buffer(&buffer);
  1165 +}
  1166 +
  1167 +int SrsConfig::parse_buffer(_srs_internal::SrsConfigBuffer* buffer)
  1168 +{
  1169 + int ret = ERROR_SUCCESS;
  1170 +
  1171 + if ((ret = root->parse(buffer)) != ERROR_SUCCESS) {
1165 return ret; 1172 return ret;
1166 } 1173 }
1167 1174
@@ -210,7 +210,7 @@ private: @@ -210,7 +210,7 @@ private:
210 }; 210 };
211 211
212 /** 212 /**
213 -* the config parser. 213 +* the config service provider.
214 * for the config supports reload, so never keep the reference cross st-thread, 214 * for the config supports reload, so never keep the reference cross st-thread,
215 * that is, never save the SrsConfDirective* get by any api of config, 215 * that is, never save the SrsConfDirective* get by any api of config,
216 * for it maybe free in the reload st-thread cycle. 216 * for it maybe free in the reload st-thread cycle.
@@ -248,6 +248,13 @@ private: @@ -248,6 +248,13 @@ private:
248 virtual int parse_argv(int& i, char** argv); 248 virtual int parse_argv(int& i, char** argv);
249 virtual void print_help(char** argv); 249 virtual void print_help(char** argv);
250 virtual int parse_file(const char* filename); 250 virtual int parse_file(const char* filename);
  251 +protected:
  252 + /**
  253 + * parse config from the buffer.
  254 + * @param buffer, the config buffer, user must delete it.
  255 + * @remark, protected for the utest to override with mock.
  256 + */
  257 + virtual int parse_buffer(_srs_internal::SrsConfigBuffer* buffer);
251 public: 258 public:
252 virtual std::string cwd(); 259 virtual std::string cwd();
253 virtual std::string argv(); 260 virtual std::string argv();