mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
support asprocess for oryx. 2.0.218
This commit is contained in:
parent
2a01540433
commit
b748fac23a
7 changed files with 53 additions and 3 deletions
|
@ -343,6 +343,7 @@ Remark:
|
||||||
|
|
||||||
## History
|
## History
|
||||||
|
|
||||||
|
* v2.0, 2016-09-23, support asprocess for oryx. 2.0.218
|
||||||
* v2.0, 2016-09-23, support change work_dir for oryx.
|
* v2.0, 2016-09-23, support change work_dir for oryx.
|
||||||
* v2.0, 2016-09-15, fix #640, typo for rtmp type. 2.0.217
|
* v2.0, 2016-09-15, fix #640, typo for rtmp type. 2.0.217
|
||||||
* v2.0, 2016-09-12, fix fast stream error bug. 2.0.216
|
* v2.0, 2016-09-12, fix fast stream error bug. 2.0.216
|
||||||
|
|
|
@ -55,6 +55,13 @@ utc_time off;
|
||||||
# @reamrk do not support reload.
|
# @reamrk do not support reload.
|
||||||
# default: ./
|
# default: ./
|
||||||
work_dir ./;
|
work_dir ./;
|
||||||
|
# whether quit when parent process changed,
|
||||||
|
# used for supervisor mode(not daemon), srs should always quit when
|
||||||
|
# supervisor process exited.
|
||||||
|
# @remark conflict with daemon, error when both daemon and asprocess are on.
|
||||||
|
# @reamrk do not support reload.
|
||||||
|
# default: off
|
||||||
|
asprocess off;
|
||||||
|
|
||||||
#############################################################################################
|
#############################################################################################
|
||||||
# heartbeat/stats sections
|
# heartbeat/stats sections
|
||||||
|
|
|
@ -1567,7 +1567,7 @@ int SrsConfig::check_config()
|
||||||
&& n != "max_connections" && n != "daemon" && n != "heartbeat"
|
&& n != "max_connections" && n != "daemon" && n != "heartbeat"
|
||||||
&& n != "http_api" && n != "stats" && n != "vhost" && n != "pithy_print_ms"
|
&& n != "http_api" && n != "stats" && n != "vhost" && n != "pithy_print_ms"
|
||||||
&& n != "http_stream" && n != "http_server" && n != "stream_caster"
|
&& n != "http_stream" && n != "http_server" && n != "stream_caster"
|
||||||
&& n != "utc_time" && n != "work_dir"
|
&& n != "utc_time" && n != "work_dir" && n != "asprocess"
|
||||||
) {
|
) {
|
||||||
ret = ERROR_SYSTEM_CONFIG_INVALID;
|
ret = ERROR_SYSTEM_CONFIG_INVALID;
|
||||||
srs_error("unsupported directive %s, ret=%d", n.c_str(), ret);
|
srs_error("unsupported directive %s, ret=%d", n.c_str(), ret);
|
||||||
|
@ -2055,6 +2055,13 @@ int SrsConfig::check_config()
|
||||||
// TODO: FIXME: required http server when hls storage is ram or both.
|
// TODO: FIXME: required http server when hls storage is ram or both.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// asprocess conflict with daemon
|
||||||
|
if (get_asprocess() && get_deamon()) {
|
||||||
|
ret = ERROR_SYSTEM_CONFIG_INVALID;
|
||||||
|
srs_error("daemon conflict with asprocess, ret=%d", ret);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2183,6 +2190,18 @@ string SrsConfig::get_work_dir() {
|
||||||
return conf->arg0();
|
return conf->arg0();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool SrsConfig::get_asprocess()
|
||||||
|
{
|
||||||
|
static bool DEFAULT = false;
|
||||||
|
|
||||||
|
SrsConfDirective* conf = root->get("asprocess");
|
||||||
|
if (!conf || conf->arg0().empty()) {
|
||||||
|
return DEFAULT;
|
||||||
|
}
|
||||||
|
|
||||||
|
return SRS_CONF_PERFER_FALSE(conf->arg0());
|
||||||
|
}
|
||||||
|
|
||||||
vector<SrsConfDirective*> SrsConfig::get_stream_casters()
|
vector<SrsConfDirective*> SrsConfig::get_stream_casters()
|
||||||
{
|
{
|
||||||
srs_assert(root);
|
srs_assert(root);
|
||||||
|
|
|
@ -379,6 +379,8 @@ public:
|
||||||
* ignore if empty string.
|
* ignore if empty string.
|
||||||
*/
|
*/
|
||||||
virtual std::string get_work_dir();
|
virtual std::string get_work_dir();
|
||||||
|
// whether use asprocess mode.
|
||||||
|
virtual bool get_asprocess();
|
||||||
// stream_caster section
|
// stream_caster section
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -488,6 +488,7 @@ SrsServer::SrsServer()
|
||||||
signal_manager = NULL;
|
signal_manager = NULL;
|
||||||
|
|
||||||
handler = NULL;
|
handler = NULL;
|
||||||
|
ppid = -1;
|
||||||
|
|
||||||
// donot new object in constructor,
|
// donot new object in constructor,
|
||||||
// for some global instance is not ready now,
|
// for some global instance is not ready now,
|
||||||
|
@ -635,7 +636,16 @@ int SrsServer::initialize_st()
|
||||||
|
|
||||||
// set current log id.
|
// set current log id.
|
||||||
_srs_context->generate_id();
|
_srs_context->generate_id();
|
||||||
srs_trace("server main cid=%d", _srs_context->get_id());
|
|
||||||
|
// check asprocess.
|
||||||
|
bool asprocess = _srs_config->get_asprocess();
|
||||||
|
if (ppid == 1) {
|
||||||
|
ret = ERROR_SYSTEM_ASSERT_FAILED;
|
||||||
|
srs_error("for asprocess, ppid should never be init(1), ret=%d", ret);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
srs_trace("server main cid=%d, pid=%d, ppid=%d, asprocess=%d",
|
||||||
|
_srs_context->get_id(), ::getpid(), ppid, asprocess);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -945,6 +955,9 @@ int SrsServer::do_cycle()
|
||||||
max = srs_max(max, SRS_SYS_NETWORK_RTMP_SERVER_RESOLUTION_TIMES);
|
max = srs_max(max, SRS_SYS_NETWORK_RTMP_SERVER_RESOLUTION_TIMES);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// for asprocess.
|
||||||
|
bool asprocess = _srs_config->get_asprocess();
|
||||||
|
|
||||||
// the deamon thread, update the time cache
|
// the deamon thread, update the time cache
|
||||||
while (true) {
|
while (true) {
|
||||||
if(handler && (ret = handler->on_cycle((int)conns.size())) != ERROR_SUCCESS){
|
if(handler && (ret = handler->on_cycle((int)conns.size())) != ERROR_SUCCESS){
|
||||||
|
@ -962,6 +975,12 @@ int SrsServer::do_cycle()
|
||||||
for (int i = 0; i < temp_max; i++) {
|
for (int i = 0; i < temp_max; i++) {
|
||||||
st_usleep(SRS_SYS_CYCLE_INTERVAL * 1000);
|
st_usleep(SRS_SYS_CYCLE_INTERVAL * 1000);
|
||||||
|
|
||||||
|
// asprocess check.
|
||||||
|
if (asprocess && ::getppid() != ppid) {
|
||||||
|
srs_warn("asprocess ppid changed from %d to %d", ppid, ::getppid());
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
// gracefully quit for SIGINT or SIGTERM.
|
// gracefully quit for SIGINT or SIGTERM.
|
||||||
if (signal_gracefully_quit) {
|
if (signal_gracefully_quit) {
|
||||||
srs_trace("cleanup for gracefully terminate.");
|
srs_trace("cleanup for gracefully terminate.");
|
||||||
|
|
|
@ -277,6 +277,8 @@ private:
|
||||||
bool signal_reload;
|
bool signal_reload;
|
||||||
bool signal_gmc_stop;
|
bool signal_gmc_stop;
|
||||||
bool signal_gracefully_quit;
|
bool signal_gracefully_quit;
|
||||||
|
// parent pid for asprocess.
|
||||||
|
int ppid;
|
||||||
public:
|
public:
|
||||||
SrsServer();
|
SrsServer();
|
||||||
virtual ~SrsServer();
|
virtual ~SrsServer();
|
||||||
|
|
|
@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
// current release version
|
// current release version
|
||||||
#define VERSION_MAJOR 2
|
#define VERSION_MAJOR 2
|
||||||
#define VERSION_MINOR 0
|
#define VERSION_MINOR 0
|
||||||
#define VERSION_REVISION 217
|
#define VERSION_REVISION 218
|
||||||
|
|
||||||
// generated by configure, only macros.
|
// generated by configure, only macros.
|
||||||
#include <srs_auto_headers.hpp>
|
#include <srs_auto_headers.hpp>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue