webrtc MessageQueue 处理过程

Message.png

MessageQueue中包含两种数据队列
MessageList msgq_ ;

typedef std::list<Message> MessageList;

PriorityQueue dmsgq_;//优先队列

 class PriorityQueue : public std::priority_queue<DelayedMessage> {
   public:
    container_type& container() { return c; }
    void reheap() { make_heap(c.begin(), c.end(), comp); }
  };

优先队列继承自 std::priority_queue
DelayerMessage实现

class DelayedMessage {
 public:
  DelayedMessage(int64_t delay,
                 int64_t trigger,
                 uint32_t num,
                 const Message& msg)
      : cmsDelay_(delay), msTrigger_(trigger), num_(num), msg_(msg) {}

  bool operator< (const DelayedMessage& dmsg) const {
    return (dmsg.msTrigger_ < msTrigger_)
           || ((dmsg.msTrigger_ == msTrigger_) && (dmsg.num_ < num_));
  }

  int64_t cmsDelay_;  // for debugging
  int64_t msTrigger_;
  uint32_t num_;
  Message msg_;
};

重载 小于操作符operator< (),sorted by trigger time,小值在前。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 容器的概念所谓STL容器,即是将最常运用的一些数据结构(data structures)实现出来。容器是指容纳特定...
    饭饭H阅读 391评论 0 0
  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom阅读 2,719评论 0 3
  • 个人笔记,方便自己查阅使用 Contents Java LangAssignment, ReferenceData...
    freenik阅读 1,405评论 0 6
  • 前言 MessageQueue提供了两方面的功能,消息循环中的消息队列功能以及通过持有SocketServer对象...
    ice_ly000阅读 1,725评论 0 5
  • messagequeue webrtc/base/messagequeue.h /messagequeue.cc ...
    落冬风阅读 2,307评论 0 5