文章目录
1、webrtc Message 的作用
message 主要服务于MessageQueue,用于异步和同步处理
2、类图
1、涉及的类主要有,Message, MessageHandle, MessageData
类图如下
2.1 MessageQueue
MessageQueue 是消息队列,thread 也是继承与MessageQueue ,其实一般情况是 聚合关系,但是Post 这些接口直接可以复用,减少了Thread的接口。
MessageList msgq_ RTC_GUARDED_BY(crit_);
void MessageQueue::Post(const Location& posted_from,
MessageHandler* phandler,
uint32_t id,
MessageData* pdata,
bool time_sensitive) {
if (IsQuitting()) {
delete pdata;
return;
}
// Keep thread safe
// Add the message to the end of the queue
// Signal for the multiplexer to return
{
CritScope cs(&crit_);
Message msg;
msg.posted_from = posted_from;
msg.phandler = phandler;
msg.message_id = id;
msg.pdata = pdata;
if (time_sensitive) {
msg.ts_sensitive = TimeMillis() + kMaxMsgLatency;
}
msgq_.push_back(msg);
}
WakeUpSocketServer();
}
延迟执行,DelayedMessage 封装了Message,增加延迟时间。将存储在优先级队列中
PriorityQueue dmsgq_ RTC_GUARDED_BY(crit_