
Message.png
MessageQueue中包含兩種數(shù)據(jù)隊(duì)列
MessageList msgq_ ;
typedef std::list<Message> MessageList;
PriorityQueue dmsgq_;//優(yōu)先隊(duì)列
class PriorityQueue : public std::priority_queue<DelayedMessage> {
public:
container_type& container() { return c; }
void reheap() { make_heap(c.begin(), c.end(), comp); }
};
優(yōu)先隊(duì)列繼承自 std::priority_queue
DelayerMessage實(shí)現(xiàn)
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,小值在前。