Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Z
ZLMediaKit
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
张翔宇
ZLMediaKit
Commits
254bc688
Commit
254bc688
authored
Dec 15, 2021
by
ziyue
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
RTC: 链接迁移后确保老链接及时销毁
parent
d3a92c4a
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
16 行增加
和
10 行删除
+16
-10
webrtc/WebRtcTransport.cpp
+12
-8
webrtc/WebRtcTransport.h
+4
-2
没有找到文件。
webrtc/WebRtcTransport.cpp
查看文件 @
254bc688
...
...
@@ -47,7 +47,7 @@ static atomic<uint64_t> s_key{0};
WebRtcTransport
::
WebRtcTransport
(
const
EventPoller
::
Ptr
&
poller
)
{
_poller
=
poller
;
_identifier
=
"zlm_"
+
to_string
(
++
s_key
);
_identifier
=
"zlm_"
+
to_string
(
++
s_key
);
_packet_pool
.
setSize
(
64
);
}
...
...
@@ -333,13 +333,13 @@ void WebRtcTransportImp::onDestory() {
}
void
WebRtcTransportImp
::
onSendSockData
(
Buffer
::
Ptr
buf
,
bool
flush
,
RTC
::
TransportTuple
*
tuple
)
{
if
(
!
_session
)
{
if
(
!
_se
lected_se
ssion
)
{
WarnL
<<
"send data failed:"
<<
buf
->
size
();
return
;
}
//一次性发送一帧的rtp数据,提高网络io性能
_session
->
setSendFlushFlag
(
flush
);
_session
->
send
(
std
::
move
(
buf
));
_se
lected_se
ssion
->
setSendFlushFlag
(
flush
);
_se
lected_se
ssion
->
send
(
std
::
move
(
buf
));
}
///////////////////////////////////////////////////////////////////
...
...
@@ -860,18 +860,22 @@ void WebRtcTransportImp::onBeforeEncryptRtp(const char *buf, int &len, void *ctx
void
WebRtcTransportImp
::
onShutdown
(
const
SockException
&
ex
){
WarnL
<<
ex
.
what
();
unrefSelf
();
if
(
_session
)
{
_session
->
shutdown
(
ex
);
for
(
auto
&
pr
:
_history_sessions
)
{
auto
session
=
pr
.
second
.
lock
();
if
(
session
)
{
session
->
shutdown
(
ex
);
}
}
}
void
WebRtcTransportImp
::
setSession
(
Session
::
Ptr
session
)
{
_session
=
std
::
move
(
session
);
_history_sessions
.
emplace
(
session
.
get
(),
session
);
_selected_session
=
std
::
move
(
session
);
unrefSelf
();
}
const
Session
::
Ptr
&
WebRtcTransportImp
::
getSession
()
const
{
return
_session
;
return
_se
lected_se
ssion
;
}
uint64_t
WebRtcTransportImp
::
getBytesUsage
()
const
{
...
...
webrtc/WebRtcTransport.h
查看文件 @
254bc688
...
...
@@ -270,8 +270,10 @@ private:
Ticker
_alive_ticker
;
//pli rtcp计时器
Ticker
_pli_ticker
;
//udp session
Session
::
Ptr
_session
;
//当前选中的udp链接
Session
::
Ptr
_selected_session
;
//链接迁移前后使用过的udp链接
unordered_map
<
Session
*
,
weak_ptr
<
Session
>
>
_history_sessions
;
//twcc rtcp发送上下文对象
TwccContext
_twcc_ctx
;
//根据发送rtp的track类型获取相关信息
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论