Toggle navigation
Toggle navigation
此项目
正在载入...
Sign in
胡斌
/
srs
转到一个项目
Toggle navigation
项目
群组
代码片段
帮助
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
winlin
2015-09-01 18:39:14 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
342483bf04a9b9a0f1ec4263f54b1e241ea5f180
342483bf
1 parent
310b5a14
for #319, when reload the listen, restart all ingesters.
隐藏空白字符变更
内嵌
并排对比
正在显示
2 个修改的文件
包含
37 行增加
和
2 行删除
trunk/src/app/srs_app_ingest.cpp
trunk/src/app/srs_app_ingest.hpp
trunk/src/app/srs_app_ingest.cpp
查看文件 @
342483b
...
...
@@ -106,6 +106,8 @@ SrsIngester::SrsIngester()
{
_srs_config
->
subscribe
(
this
);
expired
=
false
;
pthread
=
new
SrsReusableThread
(
"ingest"
,
this
,
SRS_AUTO_INGESTER_SLEEP_US
);
pprint
=
SrsPithyPrint
::
create_ingester
();
}
...
...
@@ -222,9 +224,8 @@ int SrsIngester::parse_engines(SrsConfDirective* vhost, SrsConfDirective* ingest
return
ret
;
}
void
SrsIngester
::
dispose
()
void
SrsIngester
::
fast_stop
()
{
// first, use fast stop to notice all FFMPEG to quit gracefully.
std
::
vector
<
SrsIngesterFFMPEG
*>::
iterator
it
;
for
(
it
=
ingesters
.
begin
();
it
!=
ingesters
.
end
();
++
it
)
{
SrsIngesterFFMPEG
*
ingester
=
*
it
;
...
...
@@ -234,6 +235,12 @@ void SrsIngester::dispose()
if
(
!
ingesters
.
empty
())
{
srs_trace
(
"fast stop all ingesters ok."
);
}
}
void
SrsIngester
::
dispose
()
{
// first, use fast stop to notice all FFMPEG to quit gracefully.
fast_stop
();
// then, use stop to wait FFMPEG quit one by one and send SIGKILL if needed.
stop
();
...
...
@@ -249,6 +256,21 @@ int SrsIngester::cycle()
{
int
ret
=
ERROR_SUCCESS
;
// when expired, restart all ingesters.
if
(
expired
)
{
expired
=
false
;
// stop current ingesters.
fast_stop
();
clear_engines
();
// re-prase the ingesters.
if
((
ret
=
parse
())
!=
ERROR_SUCCESS
)
{
return
ret
;
}
}
// cycle exists ingesters.
std
::
vector
<
SrsIngesterFFMPEG
*>::
iterator
it
;
for
(
it
=
ingesters
.
begin
();
it
!=
ingesters
.
end
();
++
it
)
{
SrsIngesterFFMPEG
*
ingester
=
*
it
;
...
...
@@ -551,5 +573,11 @@ int SrsIngester::on_reload_ingest_updated(string vhost, string ingest_id)
return
ret
;
}
int
SrsIngester
::
on_reload_listen
()
{
expired
=
true
;
return
ERROR_SUCCESS
;
}
#endif
...
...
trunk/src/app/srs_app_ingest.hpp
查看文件 @
342483b
...
...
@@ -81,6 +81,10 @@ private:
private
:
SrsReusableThread
*
pthread
;
SrsPithyPrint
*
pprint
;
// whether the ingesters are expired,
// for example, the listen port changed,
// all ingesters must be restart.
bool
expired
;
public
:
SrsIngester
();
virtual
~
SrsIngester
();
...
...
@@ -89,6 +93,8 @@ public:
public
:
virtual
int
start
();
virtual
void
stop
();
private
:
virtual
void
fast_stop
();
// interface ISrsReusableThreadHandler.
public:
virtual
int
cycle
();
...
...
@@ -107,6 +113,7 @@ public:
virtual
int
on_reload_ingest_removed
(
std
::
string
vhost
,
std
::
string
ingest_id
);
virtual
int
on_reload_ingest_added
(
std
::
string
vhost
,
std
::
string
ingest_id
);
virtual
int
on_reload_ingest_updated
(
std
::
string
vhost
,
std
::
string
ingest_id
);
virtual
int
on_reload_listen
();
};
#endif
...
...
请
注册
或
登录
后发表评论