1
0
Fork 0
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:
winlin 2014-04-10 10:35:02 +08:00
parent 5e504944dc
commit e6d8bc1e5c
3 changed files with 41 additions and 13 deletions

View file

@ -562,6 +562,7 @@ int SrsConfig::reload()
}
}
srs_trace("reload remove vhost %s success.", vhost.c_str());
continue;
}
// merge config: vhost modified.

View file

@ -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

View file

@ -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);
};