winlin

refine the order.

@@ -31,9 +31,12 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @@ -31,9 +31,12 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31 31
32 #include <vector> 32 #include <vector>
33 #include <string> 33 #include <string>
  34 +#include <map>
34 #include <sstream> 35 #include <sstream>
35 36
36 #include <srs_app_reload.hpp> 37 #include <srs_app_reload.hpp>
  38 +#include <srs_app_async_call.hpp>
  39 +#include <srs_app_thread.hpp>
37 40
38 class SrsRequest; 41 class SrsRequest;
39 class SrsFileWriter; 42 class SrsFileWriter;
@@ -41,10 +44,89 @@ class SrsAmf0Object; @@ -41,10 +44,89 @@ class SrsAmf0Object;
41 class SrsAmf0StrictArray; 44 class SrsAmf0StrictArray;
42 class SrsAmf0Any; 45 class SrsAmf0Any;
43 46
  47 +class SrsConfig;
  48 +class SrsRequest;
  49 +class SrsJsonArray;
  50 +class SrsConfDirective;
  51 +
  52 +
44 namespace _srs_internal 53 namespace _srs_internal
45 { 54 {
46 - class SrsConfigBuffer;  
47 -} 55 + /**
  56 + * the buffer of config content.
  57 + */
  58 + class SrsConfigBuffer
  59 + {
  60 + protected:
  61 + // last available position.
  62 + char* last;
  63 + // end of buffer.
  64 + char* end;
  65 + // start of buffer.
  66 + char* start;
  67 + public:
  68 + // current consumed position.
  69 + char* pos;
  70 + // current parsed line.
  71 + int line;
  72 + public:
  73 + SrsConfigBuffer();
  74 + virtual ~SrsConfigBuffer();
  75 + public:
  76 + /**
  77 + * fullfill the buffer with content of file specified by filename.
  78 + */
  79 + virtual int fullfill(const char* filename);
  80 + /**
  81 + * whether buffer is empty.
  82 + */
  83 + virtual bool empty();
  84 + };
  85 +};
  86 +
  87 +/**
  88 + * deep compare directive.
  89 + */
  90 +extern bool srs_directive_equals(SrsConfDirective* a, SrsConfDirective* b);
  91 +extern bool srs_directive_equals(SrsConfDirective* a, SrsConfDirective* b, std::string except);
  92 +
  93 +/**
  94 + * helper utilities, used for compare the consts values.
  95 + */
  96 +extern bool srs_config_hls_is_on_error_ignore(std::string strategy);
  97 +extern bool srs_config_hls_is_on_error_continue(std::string strategy);
  98 +extern bool srs_config_ingest_is_file(std::string type);
  99 +extern bool srs_config_ingest_is_stream(std::string type);
  100 +extern bool srs_config_dvr_is_plan_segment(std::string plan);
  101 +extern bool srs_config_dvr_is_plan_session(std::string plan);
  102 +extern bool srs_config_dvr_is_plan_append(std::string plan);
  103 +extern bool srs_stream_caster_is_udp(std::string caster);
  104 +extern bool srs_stream_caster_is_rtsp(std::string caster);
  105 +extern bool srs_stream_caster_is_flv(std::string caster);
  106 +// whether the dvr_apply active the stream specified by req.
  107 +extern bool srs_config_apply_filter(SrsConfDirective* dvr_apply, SrsRequest* req);
  108 +
  109 +/**
  110 + * convert bool in str to on/off
  111 + */
  112 +extern std::string srs_config_bool2switch(const std::string& sbool);
  113 +
  114 +/**
  115 + * parse loaded vhost directives to compatible mode.
  116 + * for exmaple, SRS1/2 use the follow refer style:
  117 + * refer a.domain.com b.domain.com;
  118 + * while SRS3 use the following:
  119 + * refer {
  120 + * enabled on;
  121 + * all a.domain.com b.domain.com;
  122 + * }
  123 + * so we must transform the vhost directive anytime load the config.
  124 + * @param root the root directive to transform, in and out parameter.
  125 + */
  126 +extern int srs_config_transform_vhost(SrsConfDirective* root);
  127 +
  128 +// global config
  129 +extern SrsConfig* _srs_config;
48 130
49 /** 131 /**
50 * the config directive. 132 * the config directive.
@@ -103,6 +185,13 @@ public: @@ -103,6 +185,13 @@ public:
103 public: 185 public:
104 SrsConfDirective(); 186 SrsConfDirective();
105 virtual ~SrsConfDirective(); 187 virtual ~SrsConfDirective();
  188 +public:
  189 + /**
  190 + * deep copy the directive, for SrsConfig to use it to support reload in upyun cluster,
  191 + * for when reload the upyun dynamic config, the root will be changed,
  192 + * so need to copy it to an old root directive, and use the copy result to do reload.
  193 + */
  194 + virtual SrsConfDirective* copy();
106 // args 195 // args
107 public: 196 public:
108 /** 197 /**
@@ -190,10 +279,6 @@ private: @@ -190,10 +279,6 @@ private:
190 */ 279 */
191 virtual int parse_conf(_srs_internal::SrsConfigBuffer* buffer, SrsDirectiveType type); 280 virtual int parse_conf(_srs_internal::SrsConfigBuffer* buffer, SrsDirectiveType type);
192 /** 281 /**
193 - * deep copy the directive.  
194 - */  
195 - virtual SrsConfDirective* copy();  
196 - /**  
197 * read a token from buffer. 282 * read a token from buffer.
198 * a token, is the directive args and a flag indicates whether has child-directives. 283 * a token, is the directive args and a flag indicates whether has child-directives.
199 * @param args, the output directive args, the first is the directive name, left is the args. 284 * @param args, the output directive args, the first is the directive name, left is the args.
@@ -1291,83 +1376,5 @@ public: @@ -1291,83 +1376,5 @@ public:
1291 virtual SrsConfDirective* get_stats_disk_device(); 1376 virtual SrsConfDirective* get_stats_disk_device();
1292 }; 1377 };
1293 1378
1294 -namespace _srs_internal  
1295 -{  
1296 - /**  
1297 - * the buffer of config content.  
1298 - */  
1299 - class SrsConfigBuffer  
1300 - {  
1301 - protected:  
1302 - // last available position.  
1303 - char* last;  
1304 - // end of buffer.  
1305 - char* end;  
1306 - // start of buffer.  
1307 - char* start;  
1308 - public:  
1309 - // current consumed position.  
1310 - char* pos;  
1311 - // current parsed line.  
1312 - int line;  
1313 - public:  
1314 - SrsConfigBuffer();  
1315 - virtual ~SrsConfigBuffer();  
1316 - public:  
1317 - /**  
1318 - * fullfill the buffer with content of file specified by filename.  
1319 - */  
1320 - virtual int fullfill(const char* filename);  
1321 - /**  
1322 - * whether buffer is empty.  
1323 - */  
1324 - virtual bool empty();  
1325 - };  
1326 -};  
1327 -  
1328 -/**  
1329 -* deep compare directive.  
1330 - */  
1331 -extern bool srs_directive_equals(SrsConfDirective* a, SrsConfDirective* b);  
1332 -extern bool srs_directive_equals(SrsConfDirective* a, SrsConfDirective* b, std::string except);  
1333 -  
1334 -/**  
1335 - * helper utilities, used for compare the consts values.  
1336 - */  
1337 -extern bool srs_config_hls_is_on_error_ignore(std::string strategy);  
1338 -extern bool srs_config_hls_is_on_error_continue(std::string strategy);  
1339 -extern bool srs_config_ingest_is_file(std::string type);  
1340 -extern bool srs_config_ingest_is_stream(std::string type);  
1341 -extern bool srs_config_dvr_is_plan_segment(std::string plan);  
1342 -extern bool srs_config_dvr_is_plan_session(std::string plan);  
1343 -extern bool srs_config_dvr_is_plan_append(std::string plan);  
1344 -extern bool srs_stream_caster_is_udp(std::string caster);  
1345 -extern bool srs_stream_caster_is_rtsp(std::string caster);  
1346 -extern bool srs_stream_caster_is_flv(std::string caster);  
1347 -// whether the dvr_apply active the stream specified by req.  
1348 -extern bool srs_config_apply_filter(SrsConfDirective* dvr_apply, SrsRequest* req);  
1349 -  
1350 -/**  
1351 - * convert bool in str to on/off  
1352 - */  
1353 -extern std::string srs_config_bool2switch(const std::string& sbool);  
1354 -  
1355 -/**  
1356 - * parse loaded vhost directives to compatible mode.  
1357 - * for exmaple, SRS1/2 use the follow refer style:  
1358 - * refer a.domain.com b.domain.com;  
1359 - * while SRS3 use the following:  
1360 - * refer {  
1361 - * enabled on;  
1362 - * all a.domain.com b.domain.com;  
1363 - * }  
1364 - * so we must transform the vhost directive anytime load the config.  
1365 - * @param root the root directive to transform, in and out parameter.  
1366 - */  
1367 -extern int srs_config_transform_vhost(SrsConfDirective* root);  
1368 -  
1369 -// global config  
1370 -extern SrsConfig* _srs_config;  
1371 -  
1372 #endif 1379 #endif
1373 1380
@@ -26,6 +26,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @@ -26,6 +26,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
26 #include <srs_kernel_log.hpp> 26 #include <srs_kernel_log.hpp>
27 #include <srs_kernel_error.hpp> 27 #include <srs_kernel_error.hpp>
28 #include <srs_app_utility.hpp> 28 #include <srs_app_utility.hpp>
  29 +#include <srs_kernel_utility.hpp>
29 30
30 IConnectionManager::IConnectionManager() 31 IConnectionManager::IConnectionManager()
31 { 32 {
@@ -42,6 +43,11 @@ SrsConnection::SrsConnection(IConnectionManager* cm, st_netfd_t c) @@ -42,6 +43,11 @@ SrsConnection::SrsConnection(IConnectionManager* cm, st_netfd_t c)
42 stfd = c; 43 stfd = c;
43 disposed = false; 44 disposed = false;
44 expired = false; 45 expired = false;
  46 + create_time = srs_get_system_time_ms();
  47 +
  48 + skt = new SrsStSocket(c);
  49 + kbps = new SrsKbps();
  50 + kbps->set_io(skt, skt);
45 51
46 // the client thread should reap itself, 52 // the client thread should reap itself,
47 // so we never use joinable. 53 // so we never use joinable.
@@ -54,9 +60,31 @@ SrsConnection::~SrsConnection() @@ -54,9 +60,31 @@ SrsConnection::~SrsConnection()
54 { 60 {
55 dispose(); 61 dispose();
56 62
  63 + srs_freep(kbps);
  64 + srs_freep(skt);
57 srs_freep(pthread); 65 srs_freep(pthread);
58 } 66 }
59 67
  68 +void SrsConnection::resample()
  69 +{
  70 + kbps->resample();
  71 +}
  72 +
  73 +int64_t SrsConnection::get_send_bytes_delta()
  74 +{
  75 + return kbps->get_send_bytes_delta();
  76 +}
  77 +
  78 +int64_t SrsConnection::get_recv_bytes_delta()
  79 +{
  80 + return kbps->get_recv_bytes_delta();
  81 +}
  82 +
  83 +void SrsConnection::cleanup()
  84 +{
  85 + kbps->cleanup();
  86 +}
  87 +
60 void SrsConnection::dispose() 88 void SrsConnection::dispose()
61 { 89 {
62 if (disposed) { 90 if (disposed) {
@@ -86,7 +114,7 @@ int SrsConnection::cycle() @@ -86,7 +114,7 @@ int SrsConnection::cycle()
86 114
87 ip = srs_get_peer_ip(st_netfd_fileno(stfd)); 115 ip = srs_get_peer_ip(st_netfd_fileno(stfd));
88 116
89 - ret = do_cycle(); 117 + int oret = ret = do_cycle();
90 118
91 // if socket io error, set to closed. 119 // if socket io error, set to closed.
92 if (srs_is_client_gracefully_close(ret)) { 120 if (srs_is_client_gracefully_close(ret)) {
@@ -100,7 +128,7 @@ int SrsConnection::cycle() @@ -100,7 +128,7 @@ int SrsConnection::cycle()
100 128
101 // client close peer. 129 // client close peer.
102 if (ret == ERROR_SOCKET_CLOSED) { 130 if (ret == ERROR_SOCKET_CLOSED) {
103 - srs_warn("client disconnect peer. ret=%d", ret); 131 + srs_warn("client disconnect peer. oret=%d, ret=%d", oret, ret);
104 } 132 }
105 133
106 return ERROR_SUCCESS; 134 return ERROR_SUCCESS;
@@ -93,9 +93,31 @@ protected: @@ -93,9 +93,31 @@ protected:
93 * when expired, the connection must never be served and quit ASAP. 93 * when expired, the connection must never be served and quit ASAP.
94 */ 94 */
95 bool expired; 95 bool expired;
  96 + /**
  97 + * the underlayer socket.
  98 + */
  99 + SrsStSocket* skt;
  100 + /**
  101 + * connection total kbps.
  102 + * not only the rtmp or http connection, all type of connection are
  103 + * need to statistic the kbps of io.
  104 + * the SrsStatistic will use it indirectly to statistic the bytes delta of current connection.
  105 + */
  106 + SrsKbps* kbps;
  107 + /**
  108 + * the create time in milliseconds.
  109 + * for current connection to log self create time and calculate the living time.
  110 + */
  111 + int64_t create_time;
96 public: 112 public:
97 SrsConnection(IConnectionManager* cm, st_netfd_t c); 113 SrsConnection(IConnectionManager* cm, st_netfd_t c);
98 virtual ~SrsConnection(); 114 virtual ~SrsConnection();
  115 +// interface IKbpsDelta
  116 +public:
  117 + virtual void resample();
  118 + virtual int64_t get_send_bytes_delta();
  119 + virtual int64_t get_recv_bytes_delta();
  120 + virtual void cleanup();
99 public: 121 public:
100 /** 122 /**
101 * to dipose the connection. 123 * to dipose the connection.
@@ -70,6 +70,7 @@ SrsEdgeIngester::SrsEdgeIngester() @@ -70,6 +70,7 @@ SrsEdgeIngester::SrsEdgeIngester()
70 origin_index = 0; 70 origin_index = 0;
71 stream_id = 0; 71 stream_id = 0;
72 stfd = NULL; 72 stfd = NULL;
  73 + curr_origin_server = "";
73 pthread = new SrsReusableThread2("edge-igs", this, SRS_EDGE_INGESTER_SLEEP_US); 74 pthread = new SrsReusableThread2("edge-igs", this, SRS_EDGE_INGESTER_SLEEP_US);
74 } 75 }
75 76
@@ -118,6 +119,11 @@ void SrsEdgeIngester::stop() @@ -118,6 +119,11 @@ void SrsEdgeIngester::stop()
118 _source->on_unpublish(); 119 _source->on_unpublish();
119 } 120 }
120 121
  122 +string SrsEdgeIngester::get_curr_origin()
  123 +{
  124 + return curr_origin_server;
  125 +}
  126 +
121 int SrsEdgeIngester::cycle() 127 int SrsEdgeIngester::cycle()
122 { 128 {
123 int ret = ERROR_SUCCESS; 129 int ret = ERROR_SUCCESS;
@@ -352,7 +358,7 @@ int SrsEdgeIngester::connect_server(string& ep_server, string& ep_port) @@ -352,7 +358,7 @@ int SrsEdgeIngester::connect_server(string& ep_server, string& ep_port)
352 } 358 }
353 359
354 // select the origin. 360 // select the origin.
355 - std::string server = conf->args.at(origin_index % conf->args.size()); 361 + std::string server = curr_origin_server = conf->args.at(origin_index % conf->args.size());
356 origin_index = (origin_index + 1) % conf->args.size(); 362 origin_index = (origin_index + 1) % conf->args.size();
357 363
358 std::string s_port = SRS_CONSTS_RTMP_DEFAULT_PORT; 364 std::string s_port = SRS_CONSTS_RTMP_DEFAULT_PORT;
@@ -754,6 +760,11 @@ void SrsPlayEdge::on_all_client_stop() @@ -754,6 +760,11 @@ void SrsPlayEdge::on_all_client_stop()
754 } 760 }
755 } 761 }
756 762
  763 +string SrsPlayEdge::get_curr_origin()
  764 +{
  765 + return ingester->get_curr_origin();
  766 +}
  767 +
757 int SrsPlayEdge::on_ingest_play() 768 int SrsPlayEdge::on_ingest_play()
758 { 769 {
759 int ret = ERROR_SUCCESS; 770 int ret = ERROR_SUCCESS;
@@ -89,6 +89,8 @@ private: @@ -89,6 +89,8 @@ private:
89 SrsKbps* kbps; 89 SrsKbps* kbps;
90 SrsRtmpClient* client; 90 SrsRtmpClient* client;
91 int origin_index; 91 int origin_index;
  92 + // current origin server of current source.
  93 + std::string curr_origin_server;
92 public: 94 public:
93 SrsEdgeIngester(); 95 SrsEdgeIngester();
94 virtual ~SrsEdgeIngester(); 96 virtual ~SrsEdgeIngester();
@@ -96,6 +98,7 @@ public: @@ -96,6 +98,7 @@ public:
96 virtual int initialize(SrsSource* source, SrsPlayEdge* edge, SrsRequest* req); 98 virtual int initialize(SrsSource* source, SrsPlayEdge* edge, SrsRequest* req);
97 virtual int start(); 99 virtual int start();
98 virtual void stop(); 100 virtual void stop();
  101 + virtual std::string get_curr_origin();
99 // interface ISrsReusableThread2Handler 102 // interface ISrsReusableThread2Handler
100 public: 103 public:
101 virtual int cycle(); 104 virtual int cycle();
@@ -182,6 +185,7 @@ public: @@ -182,6 +185,7 @@ public:
182 * when all client stopped play, disconnect to origin. 185 * when all client stopped play, disconnect to origin.
183 */ 186 */
184 virtual void on_all_client_stop(); 187 virtual void on_all_client_stop();
  188 + virtual std::string get_curr_origin();
185 public: 189 public:
186 /** 190 /**
187 * when ingester start to play stream. 191 * when ingester start to play stream.
@@ -44,6 +44,7 @@ SrsHttpClient::SrsHttpClient() @@ -44,6 +44,7 @@ SrsHttpClient::SrsHttpClient()
44 skt = NULL; 44 skt = NULL;
45 parser = NULL; 45 parser = NULL;
46 timeout_us = 0; 46 timeout_us = 0;
  47 + port = 0;
47 } 48 }
48 49
49 SrsHttpClient::~SrsHttpClient() 50 SrsHttpClient::~SrsHttpClient()
@@ -56,6 +57,11 @@ int SrsHttpClient::initialize(string h, int p, int64_t t_us) @@ -56,6 +57,11 @@ int SrsHttpClient::initialize(string h, int p, int64_t t_us)
56 { 57 {
57 int ret = ERROR_SUCCESS; 58 int ret = ERROR_SUCCESS;
58 59
  60 + // disconnect first when h:p changed.
  61 + if ((!host.empty() && host != h) || (port != 0 && port != p)) {
  62 + disconnect();
  63 + }
  64 +
59 srs_freep(parser); 65 srs_freep(parser);
60 parser = new SrsHttpParser(); 66 parser = new SrsHttpParser();
61 67
@@ -55,6 +55,9 @@ using namespace std; @@ -55,6 +55,9 @@ using namespace std;
55 #include <srs_app_http_static.hpp> 55 #include <srs_app_http_static.hpp>
56 #include <srs_app_http_stream.hpp> 56 #include <srs_app_http_stream.hpp>
57 #include <srs_app_http_api.hpp> 57 #include <srs_app_http_api.hpp>
  58 +#include <srs_protocol_json.hpp>
  59 +#include <srs_app_http_hooks.hpp>
  60 +#include <srs_rtmp_amf0.hpp>
58 61
59 #endif 62 #endif
60 63
@@ -1205,20 +1208,20 @@ int SrsHttpConn::do_cycle() @@ -1205,20 +1208,20 @@ int SrsHttpConn::do_cycle()
1205 return ret; 1208 return ret;
1206 } 1209 }
1207 1210
1208 - // underlayer socket  
1209 - SrsStSocket skt(stfd);  
1210 -  
1211 // set the recv timeout, for some clients never disconnect the connection. 1211 // set the recv timeout, for some clients never disconnect the connection.
1212 // @see https://github.com/simple-rtmp-server/srs/issues/398 1212 // @see https://github.com/simple-rtmp-server/srs/issues/398
1213 - skt.set_recv_timeout(SRS_HTTP_RECV_TIMEOUT_US); 1213 + skt->set_recv_timeout(SRS_HTTP_RECV_TIMEOUT_US);
  1214 +
  1215 + SrsRequest* last_req = NULL;
  1216 + SrsAutoFree(SrsRequest, last_req);
1214 1217
1215 // process http messages. 1218 // process http messages.
1216 while (!disposed) { 1219 while (!disposed) {
1217 ISrsHttpMessage* req = NULL; 1220 ISrsHttpMessage* req = NULL;
1218 1221
1219 // get a http message 1222 // get a http message
1220 - if ((ret = parser->parse_message(&skt, this, &req)) != ERROR_SUCCESS) {  
1221 - return ret; 1223 + if ((ret = parser->parse_message(skt, this, &req)) != ERROR_SUCCESS) {
  1224 + break;
1222 } 1225 }
1223 1226
1224 // if SUCCESS, always NOT-NULL. 1227 // if SUCCESS, always NOT-NULL.
@@ -1227,15 +1230,20 @@ int SrsHttpConn::do_cycle() @@ -1227,15 +1230,20 @@ int SrsHttpConn::do_cycle()
1227 // always free it in this scope. 1230 // always free it in this scope.
1228 SrsAutoFree(ISrsHttpMessage, req); 1231 SrsAutoFree(ISrsHttpMessage, req);
1229 1232
  1233 + // get the last request, for report the info of request on connection disconnect.
  1234 + delete last_req;
  1235 + SrsHttpMessage* hreq = dynamic_cast<SrsHttpMessage*>(req);
  1236 + last_req = hreq->to_request(hreq->host());
  1237 +
1230 // may should discard the body. 1238 // may should discard the body.
1231 if ((ret = on_got_http_message(req)) != ERROR_SUCCESS) { 1239 if ((ret = on_got_http_message(req)) != ERROR_SUCCESS) {
1232 - return ret; 1240 + break;
1233 } 1241 }
1234 1242
1235 // ok, handle http request. 1243 // ok, handle http request.
1236 - SrsHttpResponseWriter writer(&skt); 1244 + SrsHttpResponseWriter writer(skt);
1237 if ((ret = process_request(&writer, req)) != ERROR_SUCCESS) { 1245 if ((ret = process_request(&writer, req)) != ERROR_SUCCESS) {
1238 - return ret; 1246 + break;
1239 } 1247 }
1240 1248
1241 // donot keep alive, disconnect it. 1249 // donot keep alive, disconnect it.
@@ -1245,6 +1253,11 @@ int SrsHttpConn::do_cycle() @@ -1245,6 +1253,11 @@ int SrsHttpConn::do_cycle()
1245 } 1253 }
1246 } 1254 }
1247 1255
  1256 + int disc_ret = ERROR_SUCCESS;
  1257 + if ((disc_ret = on_disconnect(last_req)) != ERROR_SUCCESS) {
  1258 + srs_warn("connection on disconnect peer failed, but ignore this error. disc_ret=%d, ret=%d", disc_ret, ret);
  1259 + }
  1260 +
1248 return ret; 1261 return ret;
1249 } 1262 }
1250 1263
@@ -1266,6 +1279,13 @@ int SrsHttpConn::process_request(ISrsHttpResponseWriter* w, ISrsHttpMessage* r) @@ -1266,6 +1279,13 @@ int SrsHttpConn::process_request(ISrsHttpResponseWriter* w, ISrsHttpMessage* r)
1266 return ret; 1279 return ret;
1267 } 1280 }
1268 1281
  1282 +int SrsHttpConn::on_disconnect(SrsRequest* req)
  1283 +{
  1284 + int ret = ERROR_SUCCESS;
  1285 + // TODO: implements it.s
  1286 + return ret;
  1287 +}
  1288 +
1269 SrsResponseOnlyHttpConn::SrsResponseOnlyHttpConn(IConnectionManager* cm, st_netfd_t fd, ISrsHttpServeMux* m) 1289 SrsResponseOnlyHttpConn::SrsResponseOnlyHttpConn(IConnectionManager* cm, st_netfd_t fd, ISrsHttpServeMux* m)
1270 : SrsHttpConn(cm, fd, m) 1290 : SrsHttpConn(cm, fd, m)
1271 { 1291 {
@@ -406,6 +406,12 @@ protected: @@ -406,6 +406,12 @@ protected:
406 virtual int on_got_http_message(ISrsHttpMessage* msg) = 0; 406 virtual int on_got_http_message(ISrsHttpMessage* msg) = 0;
407 private: 407 private:
408 virtual int process_request(ISrsHttpResponseWriter* w, ISrsHttpMessage* r); 408 virtual int process_request(ISrsHttpResponseWriter* w, ISrsHttpMessage* r);
  409 + /**
  410 + * when the connection disconnect, call this method.
  411 + * e.g. log msg of connection and report to other system.
  412 + * @param request: request which is converted by the last http message.
  413 + */
  414 + virtual int on_disconnect(SrsRequest* req);
409 }; 415 };
410 416
411 /** 417 /**
@@ -54,6 +54,7 @@ using namespace std; @@ -54,6 +54,7 @@ using namespace std;
54 #include <srs_app_pithy_print.hpp> 54 #include <srs_app_pithy_print.hpp>
55 #include <srs_app_source.hpp> 55 #include <srs_app_source.hpp>
56 #include <srs_app_server.hpp> 56 #include <srs_app_server.hpp>
  57 +#include <srs_app_statistic.hpp>
57 58
58 #endif 59 #endif
59 60
@@ -495,6 +496,13 @@ int SrsLiveStream::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage* r) @@ -495,6 +496,13 @@ int SrsLiveStream::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage* r)
495 496
496 SrsMessageArray msgs(SRS_PERF_MW_MSGS); 497 SrsMessageArray msgs(SRS_PERF_MW_MSGS);
497 498
  499 + // update the statistic when source disconveried.
  500 + SrsStatistic* stat = SrsStatistic::instance();
  501 + if ((ret = stat->on_client(_srs_context->get_id(), req, NULL, SrsRtmpConnPlay)) != ERROR_SUCCESS) {
  502 + srs_error("stat client failed. ret=%d", ret);
  503 + return ret;
  504 + }
  505 +
498 // the memory writer. 506 // the memory writer.
499 SrsStreamWriter writer(w); 507 SrsStreamWriter writer(w);
500 if ((ret = enc->initialize(&writer, cache)) != ERROR_SUCCESS) { 508 if ((ret = enc->initialize(&writer, cache)) != ERROR_SUCCESS) {
@@ -53,6 +53,8 @@ using namespace std; @@ -53,6 +53,8 @@ using namespace std;
53 #include <srs_kernel_utility.hpp> 53 #include <srs_kernel_utility.hpp>
54 #include <srs_app_security.hpp> 54 #include <srs_app_security.hpp>
55 #include <srs_app_statistic.hpp> 55 #include <srs_app_statistic.hpp>
  56 +#include <srs_rtmp_utility.hpp>
  57 +#include <srs_protocol_json.hpp>
56 58
57 // when stream is busy, for example, streaming is already 59 // when stream is busy, for example, streaming is already
58 // publishing, when a new client to request to publish, 60 // publishing, when a new client to request to publish,
@@ -209,7 +211,10 @@ int SrsRtmpConn::do_cycle() @@ -209,7 +211,10 @@ int SrsRtmpConn::do_cycle()
209 211
210 ret = service_cycle(); 212 ret = service_cycle();
211 213
212 - http_hooks_on_close(); 214 + int disc_ret = ERROR_SUCCESS;
  215 + if ((disc_ret = on_disconnect()) != ERROR_SUCCESS) {
  216 + srs_warn("connection on disconnect peer failed, but ignore this error. disc_ret=%d, ret=%d", disc_ret, ret);
  217 + }
213 218
214 return ret; 219 return ret;
215 } 220 }
@@ -1308,6 +1313,17 @@ int SrsRtmpConn::do_token_traverse_auth(SrsRtmpClient* client) @@ -1308,6 +1313,17 @@ int SrsRtmpConn::do_token_traverse_auth(SrsRtmpClient* client)
1308 return ret; 1313 return ret;
1309 } 1314 }
1310 1315
  1316 +int SrsRtmpConn::on_disconnect()
  1317 +{
  1318 + int ret = ERROR_SUCCESS;
  1319 +
  1320 + http_hooks_on_close();
  1321 +
  1322 + // TODO: implements it.
  1323 +
  1324 + return ret;
  1325 +}
  1326 +
1311 int SrsRtmpConn::http_hooks_on_connect() 1327 int SrsRtmpConn::http_hooks_on_connect()
1312 { 1328 {
1313 int ret = ERROR_SUCCESS; 1329 int ret = ERROR_SUCCESS;
@@ -134,6 +134,11 @@ private: @@ -134,6 +134,11 @@ private:
134 virtual int check_edge_token_traverse_auth(); 134 virtual int check_edge_token_traverse_auth();
135 virtual int connect_server(int origin_index, st_netfd_t* pstsock); 135 virtual int connect_server(int origin_index, st_netfd_t* pstsock);
136 virtual int do_token_traverse_auth(SrsRtmpClient* client); 136 virtual int do_token_traverse_auth(SrsRtmpClient* client);
  137 + /**
  138 + * when the connection disconnect, call this method.
  139 + * e.g. log msg of connection and report to other system.
  140 + */
  141 + virtual int on_disconnect();
137 private: 142 private:
138 virtual int http_hooks_on_connect(); 143 virtual int http_hooks_on_connect();
139 virtual void http_hooks_on_close(); 144 virtual void http_hooks_on_close();
@@ -2292,3 +2292,8 @@ void SrsSource::destroy_forwarders() @@ -2292,3 +2292,8 @@ void SrsSource::destroy_forwarders()
2292 forwarders.clear(); 2292 forwarders.clear();
2293 } 2293 }
2294 2294
  2295 +string SrsSource::get_curr_origin()
  2296 +{
  2297 + return play_edge->get_curr_origin();
  2298 +}
  2299 +
@@ -592,6 +592,8 @@ public: @@ -592,6 +592,8 @@ public:
592 private: 592 private:
593 virtual int create_forwarders(); 593 virtual int create_forwarders();
594 virtual void destroy_forwarders(); 594 virtual void destroy_forwarders();
  595 +public:
  596 + virtual std::string get_curr_origin();
595 }; 597 };
596 598
597 #endif 599 #endif
@@ -32,6 +32,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @@ -32,6 +32,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
32 32
33 #include <map> 33 #include <map>
34 #include <string> 34 #include <string>
  35 +#include <vector>
35 36
36 #include <srs_kernel_codec.hpp> 37 #include <srs_kernel_codec.hpp>
37 #include <srs_rtmp_stack.hpp> 38 #include <srs_rtmp_stack.hpp>
@@ -435,6 +435,11 @@ void SrsReusableThread::stop() @@ -435,6 +435,11 @@ void SrsReusableThread::stop()
435 pthread->stop(); 435 pthread->stop();
436 } 436 }
437 437
  438 +bool SrsReusableThread::can_loop()
  439 +{
  440 + return pthread->can_loop();
  441 +}
  442 +
438 int SrsReusableThread::cid() 443 int SrsReusableThread::cid()
439 { 444 {
440 return pthread->cid(); 445 return pthread->cid();
@@ -340,6 +340,12 @@ public: @@ -340,6 +340,12 @@ public:
340 * @remark user can stop multiple times, ignore if already stopped. 340 * @remark user can stop multiple times, ignore if already stopped.
341 */ 341 */
342 virtual void stop(); 342 virtual void stop();
  343 + /**
  344 + * whether the thread should loop,
  345 + * used for handler->cycle() which has a loop method,
  346 + * to check this method, break if false.
  347 + */
  348 + virtual bool can_loop();
343 public: 349 public:
344 /** 350 /**
345 * get the context id. @see: ISrsThreadContext.get_id(). 351 * get the context id. @see: ISrsThreadContext.get_id().
@@ -1483,3 +1483,17 @@ void srs_api_dump_summaries(SrsAmf0Object* obj) @@ -1483,3 +1483,17 @@ void srs_api_dump_summaries(SrsAmf0Object* obj)
1483 sys->set("conn_srs", SrsAmf0Any::number(nrs->nb_conn_srs)); 1483 sys->set("conn_srs", SrsAmf0Any::number(nrs->nb_conn_srs));
1484 } 1484 }
1485 1485
  1486 +string srs_join_vector_string(vector<string>& vs, string separator)
  1487 +{
  1488 + string str = "";
  1489 +
  1490 + for (int i = 0; i < (int)vs.size(); i++) {
  1491 + str += vs.at(i);
  1492 + if (i != (int)vs.size() - 1) {
  1493 + str += separator;
  1494 + }
  1495 + }
  1496 +
  1497 + return str;
  1498 +}
  1499 +
@@ -684,5 +684,8 @@ extern bool srs_is_boolean(const std::string& str); @@ -684,5 +684,8 @@ extern bool srs_is_boolean(const std::string& str);
684 // dump summaries for /api/v1/summaries. 684 // dump summaries for /api/v1/summaries.
685 extern void srs_api_dump_summaries(SrsAmf0Object* obj); 685 extern void srs_api_dump_summaries(SrsAmf0Object* obj);
686 686
  687 +// join string in vector with indicated separator
  688 +extern std::string srs_join_vector_string(std::vector<std::string>& vs, std::string separator);
  689 +
687 #endif 690 #endif
688 691
@@ -42,6 +42,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @@ -42,6 +42,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
42 /////////////////////////////////////////////////////////// 42 ///////////////////////////////////////////////////////////
43 // default vhost of rtmp 43 // default vhost of rtmp
44 #define SRS_CONSTS_RTMP_DEFAULT_VHOST "__defaultVhost__" 44 #define SRS_CONSTS_RTMP_DEFAULT_VHOST "__defaultVhost__"
  45 +#define SRS_CONSTS_RTMP_DEFAULT_APP "__defaultApp__"
45 // default port of rtmp 46 // default port of rtmp
46 #define SRS_CONSTS_RTMP_DEFAULT_PORT "1935" 47 #define SRS_CONSTS_RTMP_DEFAULT_PORT "1935"
47 48
@@ -198,6 +198,7 @@ ISrsTsHandler::~ISrsTsHandler() @@ -198,6 +198,7 @@ ISrsTsHandler::~ISrsTsHandler()
198 SrsTsContext::SrsTsContext() 198 SrsTsContext::SrsTsContext()
199 { 199 {
200 pure_audio = false; 200 pure_audio = false;
  201 + sync_byte = 0x47; // ts default sync byte.
201 vcodec = SrsCodecVideoReserved; 202 vcodec = SrsCodecVideoReserved;
202 acodec = SrsCodecAudioReserved1; 203 acodec = SrsCodecAudioReserved1;
203 } 204 }
@@ -368,6 +369,11 @@ int SrsTsContext::encode(SrsFileWriter* writer, SrsTsMessage* msg, SrsCodecVideo @@ -368,6 +369,11 @@ int SrsTsContext::encode(SrsFileWriter* writer, SrsTsMessage* msg, SrsCodecVideo
368 } 369 }
369 } 370 }
370 371
  372 +void SrsTsContext::set_sync_byte(int8_t sb)
  373 +{
  374 + sync_byte = sb;
  375 +}
  376 +
371 int SrsTsContext::encode_pat_pmt(SrsFileWriter* writer, int16_t vpid, SrsTsStream vs, int16_t apid, SrsTsStream as) 377 int SrsTsContext::encode_pat_pmt(SrsFileWriter* writer, int16_t vpid, SrsTsStream vs, int16_t apid, SrsTsStream as)
372 { 378 {
373 int ret = ERROR_SUCCESS; 379 int ret = ERROR_SUCCESS;
@@ -384,6 +390,8 @@ int SrsTsContext::encode_pat_pmt(SrsFileWriter* writer, int16_t vpid, SrsTsStrea @@ -384,6 +390,8 @@ int SrsTsContext::encode_pat_pmt(SrsFileWriter* writer, int16_t vpid, SrsTsStrea
384 SrsTsPacket* pkt = SrsTsPacket::create_pat(this, pmt_number, pmt_pid); 390 SrsTsPacket* pkt = SrsTsPacket::create_pat(this, pmt_number, pmt_pid);
385 SrsAutoFree(SrsTsPacket, pkt); 391 SrsAutoFree(SrsTsPacket, pkt);
386 392
  393 + pkt->sync_byte = sync_byte;
  394 +
387 char* buf = new char[SRS_TS_PACKET_SIZE]; 395 char* buf = new char[SRS_TS_PACKET_SIZE];
388 SrsAutoFree(char, buf); 396 SrsAutoFree(char, buf);
389 397
@@ -409,6 +417,8 @@ int SrsTsContext::encode_pat_pmt(SrsFileWriter* writer, int16_t vpid, SrsTsStrea @@ -409,6 +417,8 @@ int SrsTsContext::encode_pat_pmt(SrsFileWriter* writer, int16_t vpid, SrsTsStrea
409 SrsTsPacket* pkt = SrsTsPacket::create_pmt(this, pmt_number, pmt_pid, vpid, vs, apid, as); 417 SrsTsPacket* pkt = SrsTsPacket::create_pmt(this, pmt_number, pmt_pid, vpid, vs, apid, as);
410 SrsAutoFree(SrsTsPacket, pkt); 418 SrsAutoFree(SrsTsPacket, pkt);
411 419
  420 + pkt->sync_byte = sync_byte;
  421 +
412 char* buf = new char[SRS_TS_PACKET_SIZE]; 422 char* buf = new char[SRS_TS_PACKET_SIZE];
413 SrsAutoFree(char, buf); 423 SrsAutoFree(char, buf);
414 424
@@ -479,6 +489,8 @@ int SrsTsContext::encode_pes(SrsFileWriter* writer, SrsTsMessage* msg, int16_t p @@ -479,6 +489,8 @@ int SrsTsContext::encode_pes(SrsFileWriter* writer, SrsTsMessage* msg, int16_t p
479 } 489 }
480 SrsAutoFree(SrsTsPacket, pkt); 490 SrsAutoFree(SrsTsPacket, pkt);
481 491
  492 + pkt->sync_byte = sync_byte;
  493 +
482 char* buf = new char[SRS_TS_PACKET_SIZE]; 494 char* buf = new char[SRS_TS_PACKET_SIZE];
483 SrsAutoFree(char, buf); 495 SrsAutoFree(char, buf);
484 496
@@ -345,6 +345,7 @@ class SrsTsContext @@ -345,6 +345,7 @@ class SrsTsContext
345 private: 345 private:
346 std::map<int, SrsTsChannel*> pids; 346 std::map<int, SrsTsChannel*> pids;
347 bool pure_audio; 347 bool pure_audio;
  348 + int8_t sync_byte;
348 // encoder 349 // encoder
349 private: 350 private:
350 // when any codec changed, write the PAT/PMT. 351 // when any codec changed, write the PAT/PMT.
@@ -394,6 +395,13 @@ public: @@ -394,6 +395,13 @@ public:
394 * @param ac the audio codec, write the PAT/PMT table when changed. 395 * @param ac the audio codec, write the PAT/PMT table when changed.
395 */ 396 */
396 virtual int encode(SrsFileWriter* writer, SrsTsMessage* msg, SrsCodecVideo vc, SrsCodecAudio ac); 397 virtual int encode(SrsFileWriter* writer, SrsTsMessage* msg, SrsCodecVideo vc, SrsCodecAudio ac);
  398 +// drm methods
  399 +public:
  400 + /**
  401 + * set sync byte of ts segment.
  402 + * replace the standard ts sync byte to bravo sync byte.
  403 + */
  404 + virtual void set_sync_byte(int8_t sb);
397 private: 405 private:
398 virtual int encode_pat_pmt(SrsFileWriter* writer, int16_t vpid, SrsTsStream vs, int16_t apid, SrsTsStream as); 406 virtual int encode_pat_pmt(SrsFileWriter* writer, int16_t vpid, SrsTsStream vs, int16_t apid, SrsTsStream as);
399 virtual int encode_pes(SrsFileWriter* writer, SrsTsMessage* msg, int16_t pid, SrsTsStream sid, bool pure_audio); 407 virtual int encode_pes(SrsFileWriter* writer, SrsTsMessage* msg, int16_t pid, SrsTsStream sid, bool pure_audio);
@@ -487,6 +487,36 @@ SrsJsonAny* SrsJsonObject::ensure_property_boolean(string name) @@ -487,6 +487,36 @@ SrsJsonAny* SrsJsonObject::ensure_property_boolean(string name)
487 return prop; 487 return prop;
488 } 488 }
489 489
  490 +SrsJsonAny* SrsJsonObject::ensure_property_object(string name)
  491 +{
  492 + SrsJsonAny* prop = get_property(name);
  493 +
  494 + if (!prop) {
  495 + return NULL;
  496 + }
  497 +
  498 + if (!prop->is_object()) {
  499 + return NULL;
  500 + }
  501 +
  502 + return prop;
  503 +}
  504 +
  505 +SrsJsonAny* SrsJsonObject::ensure_property_array(string name)
  506 +{
  507 + SrsJsonAny* prop = get_property(name);
  508 +
  509 + if (!prop) {
  510 + return NULL;
  511 + }
  512 +
  513 + if (!prop->is_array()) {
  514 + return NULL;
  515 + }
  516 +
  517 + return prop;
  518 +}
  519 +
490 SrsJsonArray::SrsJsonArray() 520 SrsJsonArray::SrsJsonArray()
491 { 521 {
492 marker = SRS_JSON_Array; 522 marker = SRS_JSON_Array;
@@ -151,6 +151,8 @@ public: @@ -151,6 +151,8 @@ public:
151 virtual SrsJsonAny* ensure_property_string(std::string name); 151 virtual SrsJsonAny* ensure_property_string(std::string name);
152 virtual SrsJsonAny* ensure_property_integer(std::string name); 152 virtual SrsJsonAny* ensure_property_integer(std::string name);
153 virtual SrsJsonAny* ensure_property_boolean(std::string name); 153 virtual SrsJsonAny* ensure_property_boolean(std::string name);
  154 + virtual SrsJsonAny* ensure_property_object(std::string name);
  155 + virtual SrsJsonAny* ensure_property_array(std::string name);
154 }; 156 };
155 157
156 class SrsJsonArray : public SrsJsonAny 158 class SrsJsonArray : public SrsJsonAny
@@ -68,7 +68,12 @@ void srs_discovery_tc_url( @@ -68,7 +68,12 @@ void srs_discovery_tc_url(
68 srs_info("discovery host=%s, port=%s", host.c_str(), port.c_str()); 68 srs_info("discovery host=%s, port=%s", host.c_str(), port.c_str());
69 } 69 }
70 70
  71 + if (url.empty()) {
  72 + app = SRS_CONSTS_RTMP_DEFAULT_APP;
  73 + } else {
71 app = url; 74 app = url;
  75 + }
  76 +
72 vhost = host; 77 vhost = host;
73 srs_vhost_resolve(vhost, app, param); 78 srs_vhost_resolve(vhost, app, param);
74 } 79 }
@@ -292,7 +292,7 @@ MockSrsReloadConfig::~MockSrsReloadConfig() @@ -292,7 +292,7 @@ MockSrsReloadConfig::~MockSrsReloadConfig()
292 { 292 {
293 } 293 }
294 294
295 -int MockSrsReloadConfig::reload(string buf) 295 +int MockSrsReloadConfig::do_reload(string buf)
296 { 296 {
297 int ret = ERROR_SUCCESS; 297 int ret = ERROR_SUCCESS;
298 298
@@ -301,7 +301,7 @@ int MockSrsReloadConfig::reload(string buf) @@ -301,7 +301,7 @@ int MockSrsReloadConfig::reload(string buf)
301 return ret; 301 return ret;
302 } 302 }
303 303
304 - return reload_conf(&conf); 304 + return MockSrsConfig::reload_conf(&conf);
305 } 305 }
306 306
307 #ifdef ENABLE_UTEST_RELOAD 307 #ifdef ENABLE_UTEST_RELOAD
@@ -313,7 +313,7 @@ VOID TEST(ConfigReloadTest, ReloadEmpty) @@ -313,7 +313,7 @@ VOID TEST(ConfigReloadTest, ReloadEmpty)
313 313
314 conf.subscribe(&handler); 314 conf.subscribe(&handler);
315 EXPECT_FALSE(ERROR_SUCCESS == conf.parse("")); 315 EXPECT_FALSE(ERROR_SUCCESS == conf.parse(""));
316 - EXPECT_FALSE(ERROR_SUCCESS == conf.reload("")); 316 + EXPECT_FALSE(ERROR_SUCCESS == conf.do_reload(""));
317 EXPECT_TRUE(handler.all_false()); 317 EXPECT_TRUE(handler.all_false());
318 } 318 }
319 319
@@ -324,35 +324,35 @@ VOID TEST(ConfigReloadTest, ReloadListen) @@ -324,35 +324,35 @@ VOID TEST(ConfigReloadTest, ReloadListen)
324 324
325 conf.subscribe(&handler); 325 conf.subscribe(&handler);
326 EXPECT_TRUE(ERROR_SUCCESS == conf.parse("listen 1935;")); 326 EXPECT_TRUE(ERROR_SUCCESS == conf.parse("listen 1935;"));
327 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload("listen 1935;")); 327 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload("listen 1935;"));
328 EXPECT_TRUE(handler.all_false()); 328 EXPECT_TRUE(handler.all_false());
329 handler.reset(); 329 handler.reset();
330 330
331 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload("listen 1936;")); 331 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload("listen 1936;"));
332 EXPECT_TRUE(handler.listen_reloaded); 332 EXPECT_TRUE(handler.listen_reloaded);
333 EXPECT_EQ(1, handler.count_true()); 333 EXPECT_EQ(1, handler.count_true());
334 handler.reset(); 334 handler.reset();
335 335
336 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload("listen 1936;")); 336 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload("listen 1936;"));
337 EXPECT_TRUE(handler.all_false()); 337 EXPECT_TRUE(handler.all_false());
338 handler.reset(); 338 handler.reset();
339 339
340 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload("listen 1936 1935;")); 340 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload("listen 1936 1935;"));
341 EXPECT_TRUE(handler.listen_reloaded); 341 EXPECT_TRUE(handler.listen_reloaded);
342 EXPECT_EQ(1, handler.count_true()); 342 EXPECT_EQ(1, handler.count_true());
343 handler.reset(); 343 handler.reset();
344 344
345 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload("listen 1935;")); 345 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload("listen 1935;"));
346 EXPECT_TRUE(handler.listen_reloaded); 346 EXPECT_TRUE(handler.listen_reloaded);
347 EXPECT_EQ(1, handler.count_true()); 347 EXPECT_EQ(1, handler.count_true());
348 handler.reset(); 348 handler.reset();
349 349
350 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload("listen 1935 1935;")); 350 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload("listen 1935 1935;"));
351 EXPECT_TRUE(handler.listen_reloaded); 351 EXPECT_TRUE(handler.listen_reloaded);
352 EXPECT_EQ(1, handler.count_true()); 352 EXPECT_EQ(1, handler.count_true());
353 handler.reset(); 353 handler.reset();
354 354
355 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload("listen 1935;")); 355 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload("listen 1935;"));
356 EXPECT_TRUE(handler.listen_reloaded); 356 EXPECT_TRUE(handler.listen_reloaded);
357 EXPECT_EQ(1, handler.count_true()); 357 EXPECT_EQ(1, handler.count_true());
358 handler.reset(); 358 handler.reset();
@@ -365,16 +365,16 @@ VOID TEST(ConfigReloadTest, ReloadPid) @@ -365,16 +365,16 @@ VOID TEST(ConfigReloadTest, ReloadPid)
365 365
366 conf.subscribe(&handler); 366 conf.subscribe(&handler);
367 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"pid srs.pid;")); 367 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"pid srs.pid;"));
368 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"pid srs.pid;")); 368 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"pid srs.pid;"));
369 EXPECT_TRUE(handler.all_false()); 369 EXPECT_TRUE(handler.all_false());
370 handler.reset(); 370 handler.reset();
371 371
372 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"pid srs1.pid;")); 372 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"pid srs1.pid;"));
373 EXPECT_TRUE(handler.pid_reloaded); 373 EXPECT_TRUE(handler.pid_reloaded);
374 EXPECT_EQ(1, handler.count_true()); 374 EXPECT_EQ(1, handler.count_true());
375 handler.reset(); 375 handler.reset();
376 376
377 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"pid srs.pid;")); 377 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"pid srs.pid;"));
378 EXPECT_EQ(1, handler.count_true()); 378 EXPECT_EQ(1, handler.count_true());
379 handler.reset(); 379 handler.reset();
380 } 380 }
@@ -386,16 +386,16 @@ VOID TEST(ConfigReloadTest, ReloadLogTank) @@ -386,16 +386,16 @@ VOID TEST(ConfigReloadTest, ReloadLogTank)
386 386
387 conf.subscribe(&handler); 387 conf.subscribe(&handler);
388 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"srs_log_tank console;")); 388 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"srs_log_tank console;"));
389 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"srs_log_tank console;")); 389 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"srs_log_tank console;"));
390 EXPECT_TRUE(handler.all_false()); 390 EXPECT_TRUE(handler.all_false());
391 handler.reset(); 391 handler.reset();
392 392
393 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"srs_log_tank file;")); 393 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"srs_log_tank file;"));
394 EXPECT_TRUE(handler.log_tank_reloaded); 394 EXPECT_TRUE(handler.log_tank_reloaded);
395 EXPECT_EQ(1, handler.count_true()); 395 EXPECT_EQ(1, handler.count_true());
396 handler.reset(); 396 handler.reset();
397 397
398 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"srs_log_tank console;")); 398 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"srs_log_tank console;"));
399 EXPECT_EQ(1, handler.count_true()); 399 EXPECT_EQ(1, handler.count_true());
400 handler.reset(); 400 handler.reset();
401 } 401 }
@@ -407,16 +407,16 @@ VOID TEST(ConfigReloadTest, ReloadLogLevel) @@ -407,16 +407,16 @@ VOID TEST(ConfigReloadTest, ReloadLogLevel)
407 407
408 conf.subscribe(&handler); 408 conf.subscribe(&handler);
409 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"srs_log_level trace;")); 409 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"srs_log_level trace;"));
410 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"srs_log_level trace;")); 410 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"srs_log_level trace;"));
411 EXPECT_TRUE(handler.all_false()); 411 EXPECT_TRUE(handler.all_false());
412 handler.reset(); 412 handler.reset();
413 413
414 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"srs_log_level warn;")); 414 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"srs_log_level warn;"));
415 EXPECT_TRUE(handler.log_level_reloaded); 415 EXPECT_TRUE(handler.log_level_reloaded);
416 EXPECT_EQ(1, handler.count_true()); 416 EXPECT_EQ(1, handler.count_true());
417 handler.reset(); 417 handler.reset();
418 418
419 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"srs_log_level trace;")); 419 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"srs_log_level trace;"));
420 EXPECT_EQ(1, handler.count_true()); 420 EXPECT_EQ(1, handler.count_true());
421 handler.reset(); 421 handler.reset();
422 } 422 }
@@ -428,16 +428,16 @@ VOID TEST(ConfigReloadTest, ReloadLogFile) @@ -428,16 +428,16 @@ VOID TEST(ConfigReloadTest, ReloadLogFile)
428 428
429 conf.subscribe(&handler); 429 conf.subscribe(&handler);
430 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"srs_log_file srs.log;")); 430 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"srs_log_file srs.log;"));
431 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"srs_log_file srs.log;")); 431 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"srs_log_file srs.log;"));
432 EXPECT_TRUE(handler.all_false()); 432 EXPECT_TRUE(handler.all_false());
433 handler.reset(); 433 handler.reset();
434 434
435 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"srs_log_file srs1.log;")); 435 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"srs_log_file srs1.log;"));
436 EXPECT_TRUE(handler.log_file_reloaded); 436 EXPECT_TRUE(handler.log_file_reloaded);
437 EXPECT_EQ(1, handler.count_true()); 437 EXPECT_EQ(1, handler.count_true());
438 handler.reset(); 438 handler.reset();
439 439
440 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"srs_log_file srs.log;")); 440 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"srs_log_file srs.log;"));
441 EXPECT_EQ(1, handler.count_true()); 441 EXPECT_EQ(1, handler.count_true());
442 handler.reset(); 442 handler.reset();
443 } 443 }
@@ -449,16 +449,16 @@ VOID TEST(ConfigReloadTest, ReloadPithyPrint) @@ -449,16 +449,16 @@ VOID TEST(ConfigReloadTest, ReloadPithyPrint)
449 449
450 conf.subscribe(&handler); 450 conf.subscribe(&handler);
451 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"pithy_print_ms 1000;")); 451 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"pithy_print_ms 1000;"));
452 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"pithy_print_ms 1000;")); 452 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"pithy_print_ms 1000;"));
453 EXPECT_TRUE(handler.all_false()); 453 EXPECT_TRUE(handler.all_false());
454 handler.reset(); 454 handler.reset();
455 455
456 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"pithy_print_ms 2000;")); 456 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"pithy_print_ms 2000;"));
457 EXPECT_TRUE(handler.pithy_print_reloaded); 457 EXPECT_TRUE(handler.pithy_print_reloaded);
458 EXPECT_EQ(1, handler.count_true()); 458 EXPECT_EQ(1, handler.count_true());
459 handler.reset(); 459 handler.reset();
460 460
461 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"pithy_print_ms 1000;")); 461 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"pithy_print_ms 1000;"));
462 EXPECT_EQ(1, handler.count_true()); 462 EXPECT_EQ(1, handler.count_true());
463 handler.reset(); 463 handler.reset();
464 } 464 }
@@ -470,16 +470,16 @@ VOID TEST(ConfigReloadTest, ReloadHttpApiEnabled) @@ -470,16 +470,16 @@ VOID TEST(ConfigReloadTest, ReloadHttpApiEnabled)
470 470
471 conf.subscribe(&handler); 471 conf.subscribe(&handler);
472 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"http_api {enabled off;}")); 472 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"http_api {enabled off;}"));
473 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"http_api {enabled off;}")); 473 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"http_api {enabled off;}"));
474 EXPECT_TRUE(handler.all_false()); 474 EXPECT_TRUE(handler.all_false());
475 handler.reset(); 475 handler.reset();
476 476
477 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"http_api {enabled on;}")); 477 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"http_api {enabled on;}"));
478 EXPECT_TRUE(handler.http_api_enabled_reloaded); 478 EXPECT_TRUE(handler.http_api_enabled_reloaded);
479 EXPECT_EQ(1, handler.count_true()); 479 EXPECT_EQ(1, handler.count_true());
480 handler.reset(); 480 handler.reset();
481 481
482 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"http_api {enabled off;}")); 482 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"http_api {enabled off;}"));
483 EXPECT_EQ(1, handler.count_true()); 483 EXPECT_EQ(1, handler.count_true());
484 handler.reset(); 484 handler.reset();
485 } 485 }
@@ -491,16 +491,16 @@ VOID TEST(ConfigReloadTest, ReloadHttpApiDisabled) @@ -491,16 +491,16 @@ VOID TEST(ConfigReloadTest, ReloadHttpApiDisabled)
491 491
492 conf.subscribe(&handler); 492 conf.subscribe(&handler);
493 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"http_api {enabled on;}")); 493 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"http_api {enabled on;}"));
494 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"http_api {enabled on;}")); 494 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"http_api {enabled on;}"));
495 EXPECT_TRUE(handler.all_false()); 495 EXPECT_TRUE(handler.all_false());
496 handler.reset(); 496 handler.reset();
497 497
498 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"http_api {enabled off;}")); 498 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"http_api {enabled off;}"));
499 EXPECT_TRUE(handler.http_api_disabled_reloaded); 499 EXPECT_TRUE(handler.http_api_disabled_reloaded);
500 EXPECT_EQ(1, handler.count_true()); 500 EXPECT_EQ(1, handler.count_true());
501 handler.reset(); 501 handler.reset();
502 502
503 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"http_api {enabled on;}")); 503 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"http_api {enabled on;}"));
504 EXPECT_EQ(1, handler.count_true()); 504 EXPECT_EQ(1, handler.count_true());
505 handler.reset(); 505 handler.reset();
506 } 506 }
@@ -512,16 +512,16 @@ VOID TEST(ConfigReloadTest, ReloadHttpStreamEnabled) @@ -512,16 +512,16 @@ VOID TEST(ConfigReloadTest, ReloadHttpStreamEnabled)
512 512
513 conf.subscribe(&handler); 513 conf.subscribe(&handler);
514 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"http_stream {enabled off;}")); 514 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"http_stream {enabled off;}"));
515 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"http_stream {enabled off;}")); 515 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"http_stream {enabled off;}"));
516 EXPECT_TRUE(handler.all_false()); 516 EXPECT_TRUE(handler.all_false());
517 handler.reset(); 517 handler.reset();
518 518
519 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"http_stream {enabled on;}")); 519 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"http_stream {enabled on;}"));
520 EXPECT_TRUE(handler.http_stream_enabled_reloaded); 520 EXPECT_TRUE(handler.http_stream_enabled_reloaded);
521 EXPECT_EQ(1, handler.count_true()); 521 EXPECT_EQ(1, handler.count_true());
522 handler.reset(); 522 handler.reset();
523 523
524 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"http_stream {enabled off;}")); 524 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"http_stream {enabled off;}"));
525 EXPECT_EQ(1, handler.count_true()); 525 EXPECT_EQ(1, handler.count_true());
526 handler.reset(); 526 handler.reset();
527 } 527 }
@@ -533,16 +533,16 @@ VOID TEST(ConfigReloadTest, ReloadHttpStreamDisabled) @@ -533,16 +533,16 @@ VOID TEST(ConfigReloadTest, ReloadHttpStreamDisabled)
533 533
534 conf.subscribe(&handler); 534 conf.subscribe(&handler);
535 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"http_stream {enabled on;}")); 535 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"http_stream {enabled on;}"));
536 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"http_stream {enabled on;}")); 536 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"http_stream {enabled on;}"));
537 EXPECT_TRUE(handler.all_false()); 537 EXPECT_TRUE(handler.all_false());
538 handler.reset(); 538 handler.reset();
539 539
540 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"http_stream {enabled off;}")); 540 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"http_stream {enabled off;}"));
541 EXPECT_TRUE(handler.http_stream_disabled_reloaded); 541 EXPECT_TRUE(handler.http_stream_disabled_reloaded);
542 EXPECT_EQ(1, handler.count_true()); 542 EXPECT_EQ(1, handler.count_true());
543 handler.reset(); 543 handler.reset();
544 544
545 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"http_stream {enabled on;}")); 545 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"http_stream {enabled on;}"));
546 EXPECT_EQ(1, handler.count_true()); 546 EXPECT_EQ(1, handler.count_true());
547 handler.reset(); 547 handler.reset();
548 } 548 }
@@ -554,16 +554,16 @@ VOID TEST(ConfigReloadTest, ReloadHttpStreamUpdated) @@ -554,16 +554,16 @@ VOID TEST(ConfigReloadTest, ReloadHttpStreamUpdated)
554 554
555 conf.subscribe(&handler); 555 conf.subscribe(&handler);
556 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"http_stream {enabled on; listen 8080;}")); 556 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"http_stream {enabled on; listen 8080;}"));
557 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"http_stream {enabled on; listen 8080;}")); 557 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"http_stream {enabled on; listen 8080;}"));
558 EXPECT_TRUE(handler.all_false()); 558 EXPECT_TRUE(handler.all_false());
559 handler.reset(); 559 handler.reset();
560 560
561 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"http_stream {enabled on; listen 8000;}")); 561 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"http_stream {enabled on; listen 8000;}"));
562 EXPECT_TRUE(handler.http_stream_updated_reloaded); 562 EXPECT_TRUE(handler.http_stream_updated_reloaded);
563 EXPECT_EQ(1, handler.count_true()); 563 EXPECT_EQ(1, handler.count_true());
564 handler.reset(); 564 handler.reset();
565 565
566 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"http_stream {enabled on; listen 8080;}")); 566 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"http_stream {enabled on; listen 8080;}"));
567 EXPECT_EQ(1, handler.count_true()); 567 EXPECT_EQ(1, handler.count_true());
568 handler.reset(); 568 handler.reset();
569 } 569 }
@@ -575,16 +575,16 @@ VOID TEST(ConfigReloadTest, ReloadVhostHttpUpdated) @@ -575,16 +575,16 @@ VOID TEST(ConfigReloadTest, ReloadVhostHttpUpdated)
575 575
576 conf.subscribe(&handler); 576 conf.subscribe(&handler);
577 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"vhost http.srs.com {http {enabled on;mount /hls;}}")); 577 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"vhost http.srs.com {http {enabled on;mount /hls;}}"));
578 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost http.srs.com {http {enabled on;mount /hls;}}")); 578 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost http.srs.com {http {enabled on;mount /hls;}}"));
579 EXPECT_TRUE(handler.all_false()); 579 EXPECT_TRUE(handler.all_false());
580 handler.reset(); 580 handler.reset();
581 581
582 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost http.srs.com {http {enabled on;mount /hls1;}}")); 582 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost http.srs.com {http {enabled on;mount /hls1;}}"));
583 EXPECT_TRUE(handler.vhost_http_updated_reloaded); 583 EXPECT_TRUE(handler.vhost_http_updated_reloaded);
584 EXPECT_EQ(1, handler.count_true()); 584 EXPECT_EQ(1, handler.count_true());
585 handler.reset(); 585 handler.reset();
586 586
587 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost http.srs.com {http {enabled on;mount /hls;}}")); 587 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost http.srs.com {http {enabled on;mount /hls;}}"));
588 EXPECT_EQ(1, handler.count_true()); 588 EXPECT_EQ(1, handler.count_true());
589 handler.reset(); 589 handler.reset();
590 } 590 }
@@ -596,16 +596,16 @@ VOID TEST(ConfigReloadTest, ReloadVhostAdded) @@ -596,16 +596,16 @@ VOID TEST(ConfigReloadTest, ReloadVhostAdded)
596 596
597 conf.subscribe(&handler); 597 conf.subscribe(&handler);
598 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"vhost a{}")); 598 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"vhost a{}"));
599 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{}")); 599 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{}"));
600 EXPECT_TRUE(handler.all_false()); 600 EXPECT_TRUE(handler.all_false());
601 handler.reset(); 601 handler.reset();
602 602
603 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{} vhost b{}")); 603 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{} vhost b{}"));
604 EXPECT_TRUE(handler.vhost_added_reloaded); 604 EXPECT_TRUE(handler.vhost_added_reloaded);
605 EXPECT_EQ(1, handler.count_true()); 605 EXPECT_EQ(1, handler.count_true());
606 handler.reset(); 606 handler.reset();
607 607
608 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{}")); 608 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{}"));
609 EXPECT_EQ(1, handler.count_true()); 609 EXPECT_EQ(1, handler.count_true());
610 handler.reset(); 610 handler.reset();
611 } 611 }
@@ -617,16 +617,16 @@ VOID TEST(ConfigReloadTest, ReloadVhostRemoved) @@ -617,16 +617,16 @@ VOID TEST(ConfigReloadTest, ReloadVhostRemoved)
617 617
618 conf.subscribe(&handler); 618 conf.subscribe(&handler);
619 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"vhost a{}")); 619 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"vhost a{}"));
620 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{}")); 620 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{}"));
621 EXPECT_TRUE(handler.all_false()); 621 EXPECT_TRUE(handler.all_false());
622 handler.reset(); 622 handler.reset();
623 623
624 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{enabled off;}")); 624 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{enabled off;}"));
625 EXPECT_TRUE(handler.vhost_removed_reloaded); 625 EXPECT_TRUE(handler.vhost_removed_reloaded);
626 EXPECT_EQ(1, handler.count_true()); 626 EXPECT_EQ(1, handler.count_true());
627 handler.reset(); 627 handler.reset();
628 628
629 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{}")); 629 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{}"));
630 EXPECT_EQ(1, handler.count_true()); 630 EXPECT_EQ(1, handler.count_true());
631 handler.reset(); 631 handler.reset();
632 } 632 }
@@ -638,16 +638,16 @@ VOID TEST(ConfigReloadTest, ReloadVhostRemoved2) @@ -638,16 +638,16 @@ VOID TEST(ConfigReloadTest, ReloadVhostRemoved2)
638 638
639 conf.subscribe(&handler); 639 conf.subscribe(&handler);
640 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"vhost a{} vhost b{}")); 640 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"vhost a{} vhost b{}"));
641 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{} vhost b{}")); 641 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{} vhost b{}"));
642 EXPECT_TRUE(handler.all_false()); 642 EXPECT_TRUE(handler.all_false());
643 handler.reset(); 643 handler.reset();
644 644
645 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{}")); 645 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{}"));
646 EXPECT_TRUE(handler.vhost_removed_reloaded); 646 EXPECT_TRUE(handler.vhost_removed_reloaded);
647 EXPECT_EQ(1, handler.count_true()); 647 EXPECT_EQ(1, handler.count_true());
648 handler.reset(); 648 handler.reset();
649 649
650 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{} vhost b{}")); 650 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{} vhost b{}"));
651 EXPECT_EQ(1, handler.count_true()); 651 EXPECT_EQ(1, handler.count_true());
652 handler.reset(); 652 handler.reset();
653 } 653 }
@@ -659,16 +659,16 @@ VOID TEST(ConfigReloadTest, ReloadVhostAtc) @@ -659,16 +659,16 @@ VOID TEST(ConfigReloadTest, ReloadVhostAtc)
659 659
660 conf.subscribe(&handler); 660 conf.subscribe(&handler);
661 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"vhost a{atc off;}")); 661 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"vhost a{atc off;}"));
662 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{atc off;}")); 662 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{atc off;}"));
663 EXPECT_TRUE(handler.all_false()); 663 EXPECT_TRUE(handler.all_false());
664 handler.reset(); 664 handler.reset();
665 665
666 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{atc on;}")); 666 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{atc on;}"));
667 EXPECT_TRUE(handler.vhost_atc_reloaded); 667 EXPECT_TRUE(handler.vhost_atc_reloaded);
668 EXPECT_EQ(1, handler.count_true()); 668 EXPECT_EQ(1, handler.count_true());
669 handler.reset(); 669 handler.reset();
670 670
671 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{atc off;}")); 671 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{atc off;}"));
672 EXPECT_EQ(1, handler.count_true()); 672 EXPECT_EQ(1, handler.count_true());
673 handler.reset(); 673 handler.reset();
674 } 674 }
@@ -680,16 +680,16 @@ VOID TEST(ConfigReloadTest, ReloadVhostGopCache) @@ -680,16 +680,16 @@ VOID TEST(ConfigReloadTest, ReloadVhostGopCache)
680 680
681 conf.subscribe(&handler); 681 conf.subscribe(&handler);
682 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"vhost a{gop_cache off;}")); 682 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"vhost a{gop_cache off;}"));
683 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{gop_cache off;}")); 683 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{gop_cache off;}"));
684 EXPECT_TRUE(handler.all_false()); 684 EXPECT_TRUE(handler.all_false());
685 handler.reset(); 685 handler.reset();
686 686
687 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{gop_cache on;}")); 687 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{gop_cache on;}"));
688 EXPECT_TRUE(handler.vhost_gop_cache_reloaded); 688 EXPECT_TRUE(handler.vhost_gop_cache_reloaded);
689 EXPECT_EQ(1, handler.count_true()); 689 EXPECT_EQ(1, handler.count_true());
690 handler.reset(); 690 handler.reset();
691 691
692 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{gop_cache off;}")); 692 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{gop_cache off;}"));
693 EXPECT_EQ(1, handler.count_true()); 693 EXPECT_EQ(1, handler.count_true());
694 handler.reset(); 694 handler.reset();
695 } 695 }
@@ -701,16 +701,16 @@ VOID TEST(ConfigReloadTest, ReloadVhostQueueLength) @@ -701,16 +701,16 @@ VOID TEST(ConfigReloadTest, ReloadVhostQueueLength)
701 701
702 conf.subscribe(&handler); 702 conf.subscribe(&handler);
703 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"vhost a{queue_length 10;}")); 703 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"vhost a{queue_length 10;}"));
704 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{queue_length 10;}")); 704 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{queue_length 10;}"));
705 EXPECT_TRUE(handler.all_false()); 705 EXPECT_TRUE(handler.all_false());
706 handler.reset(); 706 handler.reset();
707 707
708 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{queue_length 20;}")); 708 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{queue_length 20;}"));
709 EXPECT_TRUE(handler.vhost_queue_length_reloaded); 709 EXPECT_TRUE(handler.vhost_queue_length_reloaded);
710 EXPECT_EQ(1, handler.count_true()); 710 EXPECT_EQ(1, handler.count_true());
711 handler.reset(); 711 handler.reset();
712 712
713 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{queue_length 10;}")); 713 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{queue_length 10;}"));
714 EXPECT_EQ(1, handler.count_true()); 714 EXPECT_EQ(1, handler.count_true());
715 handler.reset(); 715 handler.reset();
716 } 716 }
@@ -722,16 +722,16 @@ VOID TEST(ConfigReloadTest, ReloadVhostTimeJitter) @@ -722,16 +722,16 @@ VOID TEST(ConfigReloadTest, ReloadVhostTimeJitter)
722 722
723 conf.subscribe(&handler); 723 conf.subscribe(&handler);
724 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"vhost a{time_jitter full;}")); 724 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"vhost a{time_jitter full;}"));
725 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{time_jitter full;}")); 725 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{time_jitter full;}"));
726 EXPECT_TRUE(handler.all_false()); 726 EXPECT_TRUE(handler.all_false());
727 handler.reset(); 727 handler.reset();
728 728
729 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{time_jitter zero;}")); 729 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{time_jitter zero;}"));
730 EXPECT_TRUE(handler.vhost_time_jitter_reloaded); 730 EXPECT_TRUE(handler.vhost_time_jitter_reloaded);
731 EXPECT_EQ(1, handler.count_true()); 731 EXPECT_EQ(1, handler.count_true());
732 handler.reset(); 732 handler.reset();
733 733
734 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{time_jitter full;}")); 734 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{time_jitter full;}"));
735 EXPECT_EQ(1, handler.count_true()); 735 EXPECT_EQ(1, handler.count_true());
736 handler.reset(); 736 handler.reset();
737 } 737 }
@@ -743,16 +743,16 @@ VOID TEST(ConfigReloadTest, ReloadVhostForward) @@ -743,16 +743,16 @@ VOID TEST(ConfigReloadTest, ReloadVhostForward)
743 743
744 conf.subscribe(&handler); 744 conf.subscribe(&handler);
745 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"vhost a{forward 127.0.0.1:1936;}")); 745 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"vhost a{forward 127.0.0.1:1936;}"));
746 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{forward 127.0.0.1:1936;}")); 746 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{forward 127.0.0.1:1936;}"));
747 EXPECT_TRUE(handler.all_false()); 747 EXPECT_TRUE(handler.all_false());
748 handler.reset(); 748 handler.reset();
749 749
750 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{forward 127.0.0.1:1937;}")); 750 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{forward 127.0.0.1:1937;}"));
751 EXPECT_TRUE(handler.vhost_forward_reloaded); 751 EXPECT_TRUE(handler.vhost_forward_reloaded);
752 EXPECT_EQ(1, handler.count_true()); 752 EXPECT_EQ(1, handler.count_true());
753 handler.reset(); 753 handler.reset();
754 754
755 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{forward 127.0.0.1:1936;}")); 755 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{forward 127.0.0.1:1936;}"));
756 EXPECT_EQ(1, handler.count_true()); 756 EXPECT_EQ(1, handler.count_true());
757 handler.reset(); 757 handler.reset();
758 } 758 }
@@ -764,16 +764,16 @@ VOID TEST(ConfigReloadTest, ReloadVhostHls) @@ -764,16 +764,16 @@ VOID TEST(ConfigReloadTest, ReloadVhostHls)
764 764
765 conf.subscribe(&handler); 765 conf.subscribe(&handler);
766 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"vhost a{hls {enabled on;}}")); 766 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"vhost a{hls {enabled on;}}"));
767 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{hls {enabled on;}}")); 767 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{hls {enabled on;}}"));
768 EXPECT_TRUE(handler.all_false()); 768 EXPECT_TRUE(handler.all_false());
769 handler.reset(); 769 handler.reset();
770 770
771 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{hls {enabled off;}}")); 771 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{hls {enabled off;}}"));
772 EXPECT_TRUE(handler.vhost_hls_reloaded); 772 EXPECT_TRUE(handler.vhost_hls_reloaded);
773 EXPECT_EQ(1, handler.count_true()); 773 EXPECT_EQ(1, handler.count_true());
774 handler.reset(); 774 handler.reset();
775 775
776 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{hls {enabled on;}}")); 776 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{hls {enabled on;}}"));
777 EXPECT_EQ(1, handler.count_true()); 777 EXPECT_EQ(1, handler.count_true());
778 handler.reset(); 778 handler.reset();
779 } 779 }
@@ -785,16 +785,16 @@ VOID TEST(ConfigReloadTest, ReloadVhostDvr) @@ -785,16 +785,16 @@ VOID TEST(ConfigReloadTest, ReloadVhostDvr)
785 785
786 conf.subscribe(&handler); 786 conf.subscribe(&handler);
787 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"vhost a{dvr {enabled on;}}")); 787 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"vhost a{dvr {enabled on;}}"));
788 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{dvr {enabled on;}}")); 788 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{dvr {enabled on;}}"));
789 EXPECT_TRUE(handler.all_false()); 789 EXPECT_TRUE(handler.all_false());
790 handler.reset(); 790 handler.reset();
791 791
792 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{dvr {enabled off;}}")); 792 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{dvr {enabled off;}}"));
793 EXPECT_TRUE(handler.vhost_dvr_reloaded); 793 EXPECT_TRUE(handler.vhost_dvr_reloaded);
794 EXPECT_EQ(1, handler.count_true()); 794 EXPECT_EQ(1, handler.count_true());
795 handler.reset(); 795 handler.reset();
796 796
797 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{dvr {enabled on;}}")); 797 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{dvr {enabled on;}}"));
798 EXPECT_EQ(1, handler.count_true()); 798 EXPECT_EQ(1, handler.count_true());
799 handler.reset(); 799 handler.reset();
800 } 800 }
@@ -806,16 +806,16 @@ VOID TEST(ConfigReloadTest, ReloadVhostTranscode) @@ -806,16 +806,16 @@ VOID TEST(ConfigReloadTest, ReloadVhostTranscode)
806 806
807 conf.subscribe(&handler); 807 conf.subscribe(&handler);
808 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"vhost a{transcode {enabled on;}}")); 808 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"vhost a{transcode {enabled on;}}"));
809 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{transcode {enabled on;}}")); 809 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{transcode {enabled on;}}"));
810 EXPECT_TRUE(handler.all_false()); 810 EXPECT_TRUE(handler.all_false());
811 handler.reset(); 811 handler.reset();
812 812
813 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{transcode {enabled off;}}")); 813 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{transcode {enabled off;}}"));
814 EXPECT_TRUE(handler.vhost_transcode_reloaded); 814 EXPECT_TRUE(handler.vhost_transcode_reloaded);
815 EXPECT_EQ(1, handler.count_true()); 815 EXPECT_EQ(1, handler.count_true());
816 handler.reset(); 816 handler.reset();
817 817
818 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{transcode {enabled on;}}")); 818 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{transcode {enabled on;}}"));
819 EXPECT_EQ(1, handler.count_true()); 819 EXPECT_EQ(1, handler.count_true());
820 handler.reset(); 820 handler.reset();
821 } 821 }
@@ -827,16 +827,16 @@ VOID TEST(ConfigReloadTest, ReloadVhostIngestAdded) @@ -827,16 +827,16 @@ VOID TEST(ConfigReloadTest, ReloadVhostIngestAdded)
827 827
828 conf.subscribe(&handler); 828 conf.subscribe(&handler);
829 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"vhost a{}")); 829 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"vhost a{}"));
830 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{}")); 830 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{}"));
831 EXPECT_TRUE(handler.all_false()); 831 EXPECT_TRUE(handler.all_false());
832 handler.reset(); 832 handler.reset();
833 833
834 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{ingest {enabled on;}}")); 834 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{ingest {enabled on;}}"));
835 EXPECT_TRUE(handler.ingest_added_reloaded); 835 EXPECT_TRUE(handler.ingest_added_reloaded);
836 EXPECT_EQ(1, handler.count_true()); 836 EXPECT_EQ(1, handler.count_true());
837 handler.reset(); 837 handler.reset();
838 838
839 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{}")); 839 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{}"));
840 EXPECT_EQ(1, handler.count_true()); 840 EXPECT_EQ(1, handler.count_true());
841 handler.reset(); 841 handler.reset();
842 } 842 }
@@ -848,16 +848,16 @@ VOID TEST(ConfigReloadTest, ReloadVhostIngestAdded2) @@ -848,16 +848,16 @@ VOID TEST(ConfigReloadTest, ReloadVhostIngestAdded2)
848 848
849 conf.subscribe(&handler); 849 conf.subscribe(&handler);
850 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"vhost a{ingest a {enabled on;}}")); 850 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"vhost a{ingest a {enabled on;}}"));
851 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{ingest a {enabled on;}}")); 851 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{ingest a {enabled on;}}"));
852 EXPECT_TRUE(handler.all_false()); 852 EXPECT_TRUE(handler.all_false());
853 handler.reset(); 853 handler.reset();
854 854
855 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{ingest a {enabled on;} ingest b {enabled on;}}")); 855 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{ingest a {enabled on;} ingest b {enabled on;}}"));
856 EXPECT_TRUE(handler.ingest_added_reloaded); 856 EXPECT_TRUE(handler.ingest_added_reloaded);
857 EXPECT_EQ(1, handler.count_true()); 857 EXPECT_EQ(1, handler.count_true());
858 handler.reset(); 858 handler.reset();
859 859
860 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{ingest a {enabled on;}}")); 860 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{ingest a {enabled on;}}"));
861 EXPECT_EQ(1, handler.count_true()); 861 EXPECT_EQ(1, handler.count_true());
862 handler.reset(); 862 handler.reset();
863 } 863 }
@@ -869,16 +869,16 @@ VOID TEST(ConfigReloadTest, ReloadVhostIngestRemoved) @@ -869,16 +869,16 @@ VOID TEST(ConfigReloadTest, ReloadVhostIngestRemoved)
869 869
870 conf.subscribe(&handler); 870 conf.subscribe(&handler);
871 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"vhost a{ingest {enabled on;}}")); 871 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"vhost a{ingest {enabled on;}}"));
872 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{ingest {enabled on;}}")); 872 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{ingest {enabled on;}}"));
873 EXPECT_TRUE(handler.all_false()); 873 EXPECT_TRUE(handler.all_false());
874 handler.reset(); 874 handler.reset();
875 875
876 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{}")); 876 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{}"));
877 EXPECT_TRUE(handler.ingest_removed_reloaded); 877 EXPECT_TRUE(handler.ingest_removed_reloaded);
878 EXPECT_EQ(1, handler.count_true()); 878 EXPECT_EQ(1, handler.count_true());
879 handler.reset(); 879 handler.reset();
880 880
881 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{ingest {enabled on;}}")); 881 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{ingest {enabled on;}}"));
882 EXPECT_EQ(1, handler.count_true()); 882 EXPECT_EQ(1, handler.count_true());
883 handler.reset(); 883 handler.reset();
884 } 884 }
@@ -890,16 +890,16 @@ VOID TEST(ConfigReloadTest, ReloadVhostIngestRemoved2) @@ -890,16 +890,16 @@ VOID TEST(ConfigReloadTest, ReloadVhostIngestRemoved2)
890 890
891 conf.subscribe(&handler); 891 conf.subscribe(&handler);
892 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"vhost a{ingest {enabled on;}}")); 892 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"vhost a{ingest {enabled on;}}"));
893 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{ingest {enabled on;}}")); 893 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{ingest {enabled on;}}"));
894 EXPECT_TRUE(handler.all_false()); 894 EXPECT_TRUE(handler.all_false());
895 handler.reset(); 895 handler.reset();
896 896
897 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{ingest {enabled off;}}")); 897 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{ingest {enabled off;}}"));
898 EXPECT_TRUE(handler.ingest_removed_reloaded); 898 EXPECT_TRUE(handler.ingest_removed_reloaded);
899 EXPECT_EQ(1, handler.count_true()); 899 EXPECT_EQ(1, handler.count_true());
900 handler.reset(); 900 handler.reset();
901 901
902 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{ingest {enabled on;}}")); 902 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{ingest {enabled on;}}"));
903 EXPECT_EQ(1, handler.count_true()); 903 EXPECT_EQ(1, handler.count_true());
904 handler.reset(); 904 handler.reset();
905 } 905 }
@@ -911,16 +911,16 @@ VOID TEST(ConfigReloadTest, ReloadVhostIngestUpdated) @@ -911,16 +911,16 @@ VOID TEST(ConfigReloadTest, ReloadVhostIngestUpdated)
911 911
912 conf.subscribe(&handler); 912 conf.subscribe(&handler);
913 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"vhost a{ingest {enabled on;ffmpeg ffmpeg;}}")); 913 EXPECT_TRUE(ERROR_SUCCESS == conf.parse(_MIN_OK_CONF"vhost a{ingest {enabled on;ffmpeg ffmpeg;}}"));
914 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{ingest {enabled on;ffmpeg ffmpeg;}}")); 914 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{ingest {enabled on;ffmpeg ffmpeg;}}"));
915 EXPECT_TRUE(handler.all_false()); 915 EXPECT_TRUE(handler.all_false());
916 handler.reset(); 916 handler.reset();
917 917
918 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{ingest {enabled on;ffmpeg ffmpeg1;}}")); 918 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{ingest {enabled on;ffmpeg ffmpeg1;}}"));
919 EXPECT_TRUE(handler.ingest_updated_reloaded); 919 EXPECT_TRUE(handler.ingest_updated_reloaded);
920 EXPECT_EQ(1, handler.count_true()); 920 EXPECT_EQ(1, handler.count_true());
921 handler.reset(); 921 handler.reset();
922 922
923 - EXPECT_TRUE(ERROR_SUCCESS == conf.reload(_MIN_OK_CONF"vhost a{ingest {enabled on;ffmpeg ffmpeg;}}")); 923 + EXPECT_TRUE(ERROR_SUCCESS == conf.do_reload(_MIN_OK_CONF"vhost a{ingest {enabled on;ffmpeg ffmpeg;}}"));
924 EXPECT_EQ(1, handler.count_true()); 924 EXPECT_EQ(1, handler.count_true());
925 handler.reset(); 925 handler.reset();
926 } 926 }
@@ -102,7 +102,7 @@ public: @@ -102,7 +102,7 @@ public:
102 MockSrsReloadConfig(); 102 MockSrsReloadConfig();
103 virtual ~MockSrsReloadConfig(); 103 virtual ~MockSrsReloadConfig();
104 public: 104 public:
105 - virtual int reload(std::string buf); 105 + virtual int do_reload(std::string buf);
106 }; 106 };
107 107
108 #endif 108 #endif