refine main object(server, config, log, context), handler reload in intialize(), change to 0.9.59
正在显示
8 个修改的文件
包含
81 行增加
和
54 行删除
@@ -350,7 +350,7 @@ class RESTServers(object): | @@ -350,7 +350,7 @@ class RESTServers(object): | ||
350 | if rtmp_url is None: | 350 | if rtmp_url is None: |
351 | return "meeting stream not found" | 351 | return "meeting stream not found" |
352 | urls = rtmp_url.replace("...vhost...", "?vhost=").replace("rtmp://", "").split("/") | 352 | urls = rtmp_url.replace("...vhost...", "?vhost=").replace("rtmp://", "").split("/") |
353 | - hls_url = "http://%s:8080/%s/%s.m3u8"%(urls[0].replace(":1935",""), urls[1].split("?")[0], urls[2]) | 353 | + hls_url = "http://%s:8080/%s/%s.m3u8"%(urls[0].strip(":19350").strip(":1935"), urls[1].split("?")[0], urls[2]) |
354 | return """ | 354 | return """ |
355 | <video width="640" height="360" | 355 | <video width="640" height="360" |
356 | autoplay controls autobuffer | 356 | autoplay controls autobuffer |
@@ -31,6 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | @@ -31,6 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
31 | #include <fcntl.h> | 31 | #include <fcntl.h> |
32 | 32 | ||
33 | #include <srs_app_config.hpp> | 33 | #include <srs_app_config.hpp> |
34 | +#include <srs_kernel_error.hpp> | ||
34 | 35 | ||
35 | SrsThreadContext::SrsThreadContext() | 36 | SrsThreadContext::SrsThreadContext() |
36 | { | 37 | { |
@@ -65,8 +66,6 @@ SrsFastLog::SrsFastLog() | @@ -65,8 +66,6 @@ SrsFastLog::SrsFastLog() | ||
65 | log_data = new char[LOG_MAX_SIZE]; | 66 | log_data = new char[LOG_MAX_SIZE]; |
66 | 67 | ||
67 | fd = -1; | 68 | fd = -1; |
68 | - | ||
69 | - // TODO: support reload. | ||
70 | } | 69 | } |
71 | 70 | ||
72 | SrsFastLog::~SrsFastLog() | 71 | SrsFastLog::~SrsFastLog() |
@@ -79,6 +78,12 @@ SrsFastLog::~SrsFastLog() | @@ -79,6 +78,12 @@ SrsFastLog::~SrsFastLog() | ||
79 | } | 78 | } |
80 | } | 79 | } |
81 | 80 | ||
81 | +int SrsFastLog::initialize() | ||
82 | +{ | ||
83 | + // TODO: support reload. | ||
84 | + return ERROR_SUCCESS; | ||
85 | +} | ||
86 | + | ||
82 | int SrsFastLog::level() | 87 | int SrsFastLog::level() |
83 | { | 88 | { |
84 | return _level; | 89 | return _level; |
@@ -69,6 +69,7 @@ public: | @@ -69,6 +69,7 @@ public: | ||
69 | SrsFastLog(); | 69 | SrsFastLog(); |
70 | virtual ~SrsFastLog(); | 70 | virtual ~SrsFastLog(); |
71 | public: | 71 | public: |
72 | + virtual int initialize(); | ||
72 | virtual int level(); | 73 | virtual int level(); |
73 | virtual void set_level(int level); | 74 | virtual void set_level(int level); |
74 | virtual void verbose(const char* tag, int context_id, const char* fmt, ...); | 75 | virtual void verbose(const char* tag, int context_id, const char* fmt, ...); |
@@ -160,9 +160,6 @@ SrsServer::SrsServer() | @@ -160,9 +160,6 @@ SrsServer::SrsServer() | ||
160 | signal_reload = false; | 160 | signal_reload = false; |
161 | signal_gmc_stop = false; | 161 | signal_gmc_stop = false; |
162 | 162 | ||
163 | - srs_assert(_srs_config); | ||
164 | - _srs_config->subscribe(this); | ||
165 | - | ||
166 | // donot new object in constructor, | 163 | // donot new object in constructor, |
167 | // for some global instance is not ready now, | 164 | // for some global instance is not ready now, |
168 | // new these objects in initialize instead. | 165 | // new these objects in initialize instead. |
@@ -208,6 +205,12 @@ int SrsServer::initialize() | @@ -208,6 +205,12 @@ int SrsServer::initialize() | ||
208 | { | 205 | { |
209 | int ret = ERROR_SUCCESS; | 206 | int ret = ERROR_SUCCESS; |
210 | 207 | ||
208 | + // for the main objects(server, config, log), | ||
209 | + // never subscribe handler in constructor, | ||
210 | + // instead, subscribe handler in initialize method. | ||
211 | + srs_assert(_srs_config); | ||
212 | + _srs_config->subscribe(this); | ||
213 | + | ||
211 | #ifdef SRS_HTTP_API | 214 | #ifdef SRS_HTTP_API |
212 | srs_assert(!http_api_handler); | 215 | srs_assert(!http_api_handler); |
213 | http_api_handler = SrsHttpHandler::create_http_api(); | 216 | http_api_handler = SrsHttpHandler::create_http_api(); |
@@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | @@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
31 | // current release version | 31 | // current release version |
32 | #define VERSION_MAJOR "0" | 32 | #define VERSION_MAJOR "0" |
33 | #define VERSION_MINOR "9" | 33 | #define VERSION_MINOR "9" |
34 | -#define VERSION_REVISION "58" | 34 | +#define VERSION_REVISION "59" |
35 | #define RTMP_SIG_SRS_VERSION VERSION_MAJOR"."VERSION_MINOR"."VERSION_REVISION | 35 | #define RTMP_SIG_SRS_VERSION VERSION_MAJOR"."VERSION_MINOR"."VERSION_REVISION |
36 | // server info. | 36 | // server info. |
37 | #define RTMP_SIG_SRS_KEY "srs" | 37 | #define RTMP_SIG_SRS_KEY "srs" |
@@ -23,6 +23,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | @@ -23,6 +23,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
23 | 23 | ||
24 | #include <srs_kernel_log.hpp> | 24 | #include <srs_kernel_log.hpp> |
25 | 25 | ||
26 | +#include <srs_kernel_error.hpp> | ||
27 | + | ||
26 | ISrsLog::ISrsLog() | 28 | ISrsLog::ISrsLog() |
27 | { | 29 | { |
28 | } | 30 | } |
@@ -31,6 +33,11 @@ ISrsLog::~ISrsLog() | @@ -31,6 +33,11 @@ ISrsLog::~ISrsLog() | ||
31 | { | 33 | { |
32 | } | 34 | } |
33 | 35 | ||
36 | +int ISrsLog::initialize() | ||
37 | +{ | ||
38 | + return ERROR_SUCCESS; | ||
39 | +} | ||
40 | + | ||
34 | int ISrsLog::level() | 41 | int ISrsLog::level() |
35 | { | 42 | { |
36 | return SrsLogLevel::Trace; | 43 | return SrsLogLevel::Trace; |
@@ -64,6 +64,11 @@ public: | @@ -64,6 +64,11 @@ public: | ||
64 | virtual ~ISrsLog(); | 64 | virtual ~ISrsLog(); |
65 | public: | 65 | public: |
66 | /** | 66 | /** |
67 | + * initialize log utilities. | ||
68 | + */ | ||
69 | + virtual int initialize(); | ||
70 | +public: | ||
71 | + /** | ||
67 | * defined in SrsLogLevel. | 72 | * defined in SrsLogLevel. |
68 | */ | 73 | */ |
69 | virtual int level(); | 74 | virtual int level(); |
@@ -55,35 +55,58 @@ void handler(int signo) | @@ -55,35 +55,58 @@ void handler(int signo) | ||
55 | _srs_server->on_signal(signo); | 55 | _srs_server->on_signal(signo); |
56 | } | 56 | } |
57 | 57 | ||
58 | -int run_master() | 58 | +int run(); |
59 | +int run_master(); | ||
60 | + | ||
61 | +int main(int argc, char** argv) | ||
59 | { | 62 | { |
60 | int ret = ERROR_SUCCESS; | 63 | int ret = ERROR_SUCCESS; |
61 | 64 | ||
62 | - signal(SIGNAL_RELOAD, handler); | ||
63 | - signal(SIGTERM, handler); | ||
64 | - signal(SIGINT, handler); | 65 | + // TODO: support both little and big endian. |
66 | + srs_assert(srs_is_little_endian()); | ||
65 | 67 | ||
66 | - if ((ret = _srs_server->acquire_pid_file()) != ERROR_SUCCESS) { | ||
67 | - return ret; | ||
68 | - } | 68 | +#ifdef SRS_GPERF_MP |
69 | + HeapProfilerStart("gperf.srs.gmp"); | ||
70 | +#endif | ||
71 | +#ifdef SRS_GPERF_CP | ||
72 | + ProfilerStart("gperf.srs.gcp"); | ||
73 | +#endif | ||
69 | 74 | ||
70 | - if ((ret = _srs_server->initialize_st()) != ERROR_SUCCESS) { | ||
71 | - return ret; | ||
72 | - } | 75 | +#ifdef SRS_GPERF_MC |
76 | + #ifdef SRS_GPERF_MP | ||
77 | + srs_error("option --with-gmc confict with --with-gmp, " | ||
78 | + "@see: http://google-perftools.googlecode.com/svn/trunk/doc/heap_checker.html\n" | ||
79 | + "Note that since the heap-checker uses the heap-profiling framework internally, " | ||
80 | + "it is not possible to run both the heap-checker and heap profiler at the same time"); | ||
81 | + return -1; | ||
82 | + #endif | ||
83 | +#endif | ||
73 | 84 | ||
74 | - if ((ret = _srs_server->listen()) != ERROR_SUCCESS) { | 85 | + // never use srs log(srs_trace, srs_error, etc) before config parse the option, |
86 | + // which will load the log config and apply it. | ||
87 | + if ((ret = _srs_config->parse_options(argc, argv)) != ERROR_SUCCESS) { | ||
75 | return ret; | 88 | return ret; |
76 | } | 89 | } |
77 | 90 | ||
78 | - if ((ret = _srs_server->ingest()) != ERROR_SUCCESS) { | 91 | + // config parsed, initialize log. |
92 | + if ((ret = _srs_log->initialize()) != ERROR_SUCCESS) { | ||
79 | return ret; | 93 | return ret; |
80 | } | 94 | } |
95 | + _srs_log->set_level(srs_get_log_level(_srs_config->get_srs_log_level())); | ||
81 | 96 | ||
82 | - if ((ret = _srs_server->cycle()) != ERROR_SUCCESS) { | 97 | + srs_trace("srs(simple-rtmp-server) "RTMP_SIG_SRS_VERSION); |
98 | + srs_trace("uname: "SRS_UNAME); | ||
99 | + srs_trace("build: %s, %s", SRS_BUILD_DATE, srs_is_little_endian()? "little-endian":"big-endian"); | ||
100 | + srs_trace("configure: "SRS_CONFIGURE); | ||
101 | +#ifdef SRS_ARM_UBUNTU12 | ||
102 | + srs_trace("arm tool chain: "SRS_ARM_TOOL_CHAIN); | ||
103 | +#endif | ||
104 | + | ||
105 | + if ((ret = _srs_server->initialize()) != ERROR_SUCCESS) { | ||
83 | return ret; | 106 | return ret; |
84 | } | 107 | } |
85 | 108 | ||
86 | - return 0; | 109 | + return run(); |
87 | } | 110 | } |
88 | 111 | ||
89 | int run() | 112 | int run() |
@@ -133,50 +156,33 @@ int run() | @@ -133,50 +156,33 @@ int run() | ||
133 | return run_master(); | 156 | return run_master(); |
134 | } | 157 | } |
135 | 158 | ||
136 | -int main(int argc, char** argv) | 159 | +int run_master() |
137 | { | 160 | { |
138 | int ret = ERROR_SUCCESS; | 161 | int ret = ERROR_SUCCESS; |
139 | 162 | ||
140 | - // TODO: support both little and big endian. | ||
141 | - srs_assert(srs_is_little_endian()); | ||
142 | - | ||
143 | -#ifdef SRS_GPERF_MP | ||
144 | - HeapProfilerStart("gperf.srs.gmp"); | ||
145 | -#endif | ||
146 | -#ifdef SRS_GPERF_CP | ||
147 | - ProfilerStart("gperf.srs.gcp"); | ||
148 | -#endif | 163 | + signal(SIGNAL_RELOAD, handler); |
164 | + signal(SIGTERM, handler); | ||
165 | + signal(SIGINT, handler); | ||
149 | 166 | ||
150 | -#ifdef SRS_GPERF_MC | ||
151 | - #ifdef SRS_GPERF_MP | ||
152 | - srs_error("option --with-gmc confict with --with-gmp, " | ||
153 | - "@see: http://google-perftools.googlecode.com/svn/trunk/doc/heap_checker.html\n" | ||
154 | - "Note that since the heap-checker uses the heap-profiling framework internally, " | ||
155 | - "it is not possible to run both the heap-checker and heap profiler at the same time"); | ||
156 | - return -1; | ||
157 | - #endif | ||
158 | -#endif | 167 | + if ((ret = _srs_server->acquire_pid_file()) != ERROR_SUCCESS) { |
168 | + return ret; | ||
169 | + } | ||
159 | 170 | ||
160 | - // never use srs log(srs_trace, srs_error, etc) before config parse the option, | ||
161 | - // which will load the log config and apply it. | ||
162 | - if ((ret = _srs_config->parse_options(argc, argv)) != ERROR_SUCCESS) { | 171 | + if ((ret = _srs_server->initialize_st()) != ERROR_SUCCESS) { |
163 | return ret; | 172 | return ret; |
164 | } | 173 | } |
165 | 174 | ||
166 | - // config parsed, initialize log. | ||
167 | - _srs_log->set_level(srs_get_log_level(_srs_config->get_srs_log_level())); | 175 | + if ((ret = _srs_server->listen()) != ERROR_SUCCESS) { |
176 | + return ret; | ||
177 | + } | ||
168 | 178 | ||
169 | - srs_trace("srs(simple-rtmp-server) "RTMP_SIG_SRS_VERSION); | ||
170 | - srs_trace("uname: "SRS_UNAME); | ||
171 | - srs_trace("build: %s, %s", SRS_BUILD_DATE, srs_is_little_endian()? "little-endian":"big-endian"); | ||
172 | - srs_trace("configure: "SRS_CONFIGURE); | ||
173 | -#ifdef SRS_ARM_UBUNTU12 | ||
174 | - srs_trace("arm tool chain: "SRS_ARM_TOOL_CHAIN); | ||
175 | -#endif | 179 | + if ((ret = _srs_server->ingest()) != ERROR_SUCCESS) { |
180 | + return ret; | ||
181 | + } | ||
176 | 182 | ||
177 | - if ((ret = _srs_server->initialize()) != ERROR_SUCCESS) { | 183 | + if ((ret = _srs_server->cycle()) != ERROR_SUCCESS) { |
178 | return ret; | 184 | return ret; |
179 | } | 185 | } |
180 | 186 | ||
181 | - return run(); | 187 | + return 0; |
182 | } | 188 | } |
-
请 注册 或 登录 后发表评论