mirror of
https://github.com/ossrs/srs.git
synced 2025-02-13 03:41:55 +00:00
ingest reload: support disable vhost
This commit is contained in:
parent
5e504944dc
commit
e6d8bc1e5c
3 changed files with 41 additions and 13 deletions
|
@ -562,6 +562,7 @@ int SrsConfig::reload()
|
|||
}
|
||||
}
|
||||
srs_trace("reload remove vhost %s success.", vhost.c_str());
|
||||
continue;
|
||||
}
|
||||
|
||||
// merge config: vhost modified.
|
||||
|
|
|
@ -273,13 +273,6 @@ int SrsIngester::initialize_ffmpeg(SrsFFMPEG* ffmpeg, SrsConfDirective* vhost, S
|
|||
log_file += "-";
|
||||
log_file += stream;
|
||||
log_file += ".log";
|
||||
|
||||
// stream name: vhost/app/stream for print
|
||||
input_stream_name = vhost->arg0();
|
||||
input_stream_name += "/";
|
||||
input_stream_name += app;
|
||||
input_stream_name += "/";
|
||||
input_stream_name += stream;
|
||||
|
||||
// input
|
||||
std::string input_type = _srs_config->get_ingest_input_type(ingest);
|
||||
|
@ -346,12 +339,17 @@ int SrsIngester::initialize_ffmpeg(SrsFFMPEG* ffmpeg, SrsConfDirective* vhost, S
|
|||
|
||||
void SrsIngester::ingester()
|
||||
{
|
||||
// reportable
|
||||
if (pithy_print->can_print()) {
|
||||
// TODO: FIXME: show more info.
|
||||
srs_trace("-> time=%"PRId64", ingesters=%d, input=%s",
|
||||
pithy_print->get_age(), (int)ingesters.size(), input_stream_name.c_str());
|
||||
if ((int)ingesters.size() <= 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
// reportable
|
||||
if (!pithy_print->can_print()) {
|
||||
return;
|
||||
}
|
||||
|
||||
// TODO: FIXME: show more info.
|
||||
srs_trace("-> time=%"PRId64", ingesters=%d", pithy_print->get_age(), (int)ingesters.size());
|
||||
}
|
||||
|
||||
int SrsIngester::on_reload_vhost_added(string vhost)
|
||||
|
@ -366,4 +364,33 @@ int SrsIngester::on_reload_vhost_added(string vhost)
|
|||
return ret;
|
||||
}
|
||||
|
||||
int SrsIngester::on_reload_vhost_removed(string vhost)
|
||||
{
|
||||
int ret = ERROR_SUCCESS;
|
||||
|
||||
std::vector<SrsIngesterFFMPEG*>::iterator it;
|
||||
|
||||
for (it = ingesters.begin(); it != ingesters.end();) {
|
||||
SrsIngesterFFMPEG* ingester = *it;
|
||||
|
||||
if (ingester->vhost != vhost) {
|
||||
++it;
|
||||
continue;
|
||||
}
|
||||
|
||||
// stop the ffmpeg and free it.
|
||||
ingester->ffmpeg->stop();
|
||||
|
||||
srs_trace("reload stop ingester, "
|
||||
"vhost=%s, id=%s", vhost.c_str(), ingester->id.c_str());
|
||||
|
||||
srs_freep(ingester);
|
||||
|
||||
// remove the item from ingesters.
|
||||
it = ingesters.erase(it);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -61,7 +61,6 @@ struct SrsIngesterFFMPEG
|
|||
class SrsIngester : public ISrsThreadHandler, public ISrsReloadHandler
|
||||
{
|
||||
private:
|
||||
std::string input_stream_name;
|
||||
std::vector<SrsIngesterFFMPEG*> ingesters;
|
||||
private:
|
||||
SrsThread* pthread;
|
||||
|
@ -85,6 +84,7 @@ private:
|
|||
virtual void ingester();
|
||||
// interface ISrsReloadHandler.
|
||||
public:
|
||||
virtual int on_reload_vhost_removed(std::string vhost);
|
||||
virtual int on_reload_vhost_added(std::string vhost);
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue