Commit 26f813b1 by xiongziliang

事件invoker执行改成同步,为了兼容srs-bench

parent 531e8c4f
...@@ -108,17 +108,12 @@ static onceToken s_token([](){ ...@@ -108,17 +108,12 @@ static onceToken s_token([](){
DebugL << "RTSP是否需要鉴权事件:" << args._schema << " " << args._vhost << " " << args._app << " " << args._streamid << " " << args._param_strs ; DebugL << "RTSP是否需要鉴权事件:" << args._schema << " " << args._vhost << " " << args._app << " " << args._streamid << " " << args._param_strs ;
if(string("1") == args._streamid ){ if(string("1") == args._streamid ){
// live/1需要认证 // live/1需要认证
EventPollerPool::Instance().getPoller()->async([invoker](){
//该流需要认证,并且设置realm //该流需要认证,并且设置realm
invoker(REALM); invoker(REALM);
});
}else{ }else{
//我们异步执行invoker。
//有时我们要查询redis或数据库来判断该流是否需要认证,通过invoker的方式可以做到完全异步 //有时我们要查询redis或数据库来判断该流是否需要认证,通过invoker的方式可以做到完全异步
EventPollerPool::Instance().getPoller()->async([invoker](){
//该流我们不需要认证 //该流我们不需要认证
invoker(""); invoker("");
});
} }
}); });
...@@ -128,7 +123,6 @@ static onceToken s_token([](){ ...@@ -128,7 +123,6 @@ static onceToken s_token([](){
DebugL << "RTSP用户:" << user_name << (must_no_encrypt ? " Base64" : " MD5" )<< " 方式登录"; DebugL << "RTSP用户:" << user_name << (must_no_encrypt ? " Base64" : " MD5" )<< " 方式登录";
string user = user_name; string user = user_name;
//假设我们异步读取数据库 //假设我们异步读取数据库
EventPollerPool::Instance().getPoller()->async([must_no_encrypt,invoker,user](){
if(user == "test0"){ if(user == "test0"){
//假设数据库保存的是明文 //假设数据库保存的是明文
invoker(false,"pwd0"); invoker(false,"pwd0");
...@@ -151,35 +145,28 @@ static onceToken s_token([](){ ...@@ -151,35 +145,28 @@ static onceToken s_token([](){
//其他用户密码跟用户名一致 //其他用户密码跟用户名一致
invoker(false,user); invoker(false,user);
}); });
});
//监听rtsp/rtmp推流事件,返回结果告知是否有推流权限 //监听rtsp/rtmp推流事件,返回结果告知是否有推流权限
NoticeCenter::Instance().addListener(nullptr,Broadcast::kBroadcastMediaPublish,[](BroadcastMediaPublishArgs){ NoticeCenter::Instance().addListener(nullptr,Broadcast::kBroadcastMediaPublish,[](BroadcastMediaPublishArgs){
DebugL << "推流鉴权:" << args._schema << " " << args._vhost << " " << args._app << " " << args._streamid << " " << args._param_strs ; DebugL << "推流鉴权:" << args._schema << " " << args._vhost << " " << args._app << " " << args._streamid << " " << args._param_strs ;
EventPollerPool::Instance().getPoller()->async([invoker](){
invoker("");//鉴权成功 invoker("");//鉴权成功
//invoker("this is auth failed message");//鉴权失败 //invoker("this is auth failed message");//鉴权失败
}); });
});
//监听rtsp/rtsps/rtmp/http-flv播放事件,返回结果告知是否有播放权限(rtsp通过kBroadcastOnRtspAuth或此事件都可以实现鉴权) //监听rtsp/rtsps/rtmp/http-flv播放事件,返回结果告知是否有播放权限(rtsp通过kBroadcastOnRtspAuth或此事件都可以实现鉴权)
NoticeCenter::Instance().addListener(nullptr,Broadcast::kBroadcastMediaPlayed,[](BroadcastMediaPlayedArgs){ NoticeCenter::Instance().addListener(nullptr,Broadcast::kBroadcastMediaPlayed,[](BroadcastMediaPlayedArgs){
DebugL << "播放鉴权:" << args._schema << " " << args._vhost << " " << args._app << " " << args._streamid << " " << args._param_strs ; DebugL << "播放鉴权:" << args._schema << " " << args._vhost << " " << args._app << " " << args._streamid << " " << args._param_strs ;
EventPollerPool::Instance().getPoller()->async([invoker](){
invoker("");//鉴权成功 invoker("");//鉴权成功
//invoker("this is auth failed message");//鉴权失败 //invoker("this is auth failed message");//鉴权失败
}); });
});
//shell登录事件,通过shell可以登录进服务器执行一些命令 //shell登录事件,通过shell可以登录进服务器执行一些命令
NoticeCenter::Instance().addListener(nullptr,Broadcast::kBroadcastShellLogin,[](BroadcastShellLoginArgs){ NoticeCenter::Instance().addListener(nullptr,Broadcast::kBroadcastShellLogin,[](BroadcastShellLoginArgs){
DebugL << "shell login:" << user_name << " " << passwd; DebugL << "shell login:" << user_name << " " << passwd;
EventPollerPool::Instance().getPoller()->async([invoker](){
invoker("");//鉴权成功 invoker("");//鉴权成功
//invoker("this is auth failed message");//鉴权失败 //invoker("this is auth failed message");//鉴权失败
}); });
});
//监听rtsp、rtmp源注册或注销事件;此处用于测试rtmp保存为flv录像,保存在http根目录下 //监听rtsp、rtmp源注册或注销事件;此处用于测试rtmp保存为flv录像,保存在http根目录下
NoticeCenter::Instance().addListener(nullptr,Broadcast::kBroadcastMediaChanged,[](BroadcastMediaChangedArgs){ NoticeCenter::Instance().addListener(nullptr,Broadcast::kBroadcastMediaChanged,[](BroadcastMediaChangedArgs){
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论