已解决
【MediaSoup---源码篇】(一)Worker
来自网友在路上 149849提问 提问时间:2023-09-22 13:23:54阅读次数: 49
最佳答案 问答题库498位专家为你答疑解惑
一个Worker代表着一个运行在单核CPU上并处理Router实例的mediasoup C++子进程;
首先Worker继承了四个类,以支持以下功能
/*
1.`Channel::ChannelSocket::Listener`:负责与其他节点之间的通信,处理来自其他节点的消息并将本地消息发送给其他节点。
2.`PayloadChannel::PayloadChannelSocket::Listener`:负责传递用户层的数据负载,并提供数据加密和解密功能。
3.`SignalsHandler::Listener`:负责捕捉系统信号(比如SIGINT)并进行相应的处理,例如优雅地退出程序。
4.`RTC::Router::Listener`:负责处理WebRTC中的路由表,以便在不同的节点之间建立点对点连接。
*/
class Worker : public Channel::ChannelSocket::Listener,public PayloadChannel::PayloadChannelSocket::Listener,public SignalsHandler::Listener,public RTC::Router::Listener
在构造函数中,主要启动了libuv,并且由于Worker是继承前四个类的。在构造函数内部进行了一系列的注册,把当前Worker作为了监听,有相应事件发生会回调到Worker中
/* Instance methods. */Worker::Worker(::Channel::ChannelSocket* channel, PayloadChannel::PayloadChannelSocket* payloadChannel): channel(channel), payloadChannel(payloadChannel)
{MS_TRACE();// Set us as Channel's listener.把我们设为频道的听众。传入的this为对象// 因为Worker继承Channel::ChannelSocket::Listener,所以可以作为子类传入this->channel->SetListener(this);// Set us as PayloadChannel's listener. 设置我们为PayloadChannel的监听器。this->payloadChannel->SetListener(this);// Set the SignalHandler. 设置SignalHandler。this->signalsHandler = new SignalsHandler(this);// Set up the RTC::Shared singleton.设置RTC::Shared单例。this->shared = new RTC::Shared(/*channelMessageRegistrator*/ new ChannelMessageRegistrator(),/*channelNotifier*/ new Channel::ChannelNotifier(this->channel),/*payloadChannelNotifier*/ new PayloadChannel::PayloadChannelNotifier(this->payloadChannel));#ifdef MS_EXECUTABLE{// Add signals to handle.this->signalsHandler->AddSignal(SIGINT, "INT");this->signalsHandler->AddSignal(SIGTERM, "TERM");}
#endif// Create the Checker instance in DepUsrSCTP. 在DepUsrSCTP中创建Checker实例。DepUsrSCTP::CreateChecker();// Tell the Node process that we are running. 告诉我们正在运行的Node进程。this->shared->channelNotifier->Emit(Logger::pid, "running");MS_DEBUG_DEV("starting libuv loop"); // 启动libuv循环DepLibUV::RunLoop();MS_DEBUG_DEV("libuv loop ended");
}
查看全文
99%的人还看了
相似问题
- 〖大前端 - 基础入门三大核心之JS篇㊲〗- DOM改变元素节点的css样式、HTML属性
- Java 算法篇-链表的经典算法:判断回文链表、判断环链表与寻找环入口节点(“龟兔赛跑“算法实现)
- 代码随想录二刷 | 链表 | 删除链表的倒数第N个节点
- 节点导纳矩阵
- bhosts 显示节点 “unreach“ 状态
- 电子电器架构 —— 车载网关边缘节点总线转换
- 〖大前端 - 基础入门三大核心之JS篇㊳〗- DOM访问元素节点
- 第四天||24. 两两交换链表中的节点 ● 19.删除链表的倒数第N个节点 ● 面试题 02.07. 链表相交 ● 142.环形链表II
- CS224W5.1——消息传递和节点分类
- Vue报错解决Error in v-on handler: “Error: 无效的节点选择器:#div1“
猜你感兴趣
版权申明
本文"【MediaSoup---源码篇】(一)Worker":http://eshow365.cn/6-11442-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: 【lesson8】操作系统的理解和类比
- 下一篇: vue项目升级webpack