当前位置:首页 > 编程笔记 > 正文
已解决

【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%的人还看了

猜你感兴趣

版权申明

本文"【MediaSoup---源码篇】(一)Worker":http://eshow365.cn/6-11442-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!