MCPcopy Create free account
hub / github.com/Tencent/mars / BroadcastMessage

Function BroadcastMessage

mars/comm/messagequeue/message_queue.cc:394–419  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

392}
393
394MessagePost_t BroadcastMessage(const MessageQueue_t& _messagequeueid, const Message& _message, const MessageTiming& _timing) {
395 ScopedLock lock(sg_messagequeue_map_mutex);
396 const MessageQueue_t& id = _messagequeueid;
397
398 std::map<MessageQueue_t, MessageQueueContent>::iterator pos = sg_messagequeue_map.find(id);
399 if (sg_messagequeue_map.end() == pos) {
400 ASSERT2(false, "%" PRIu64, id);
401 return KNullPost;
402 }
403
404 MessageQueueContent& content = pos->second;
405 if(content.lst_message.size() >= MAX_MQ_SIZE) {
406 xwarn2(TSF"%_", DumpMessage(content.lst_message));
407 ASSERT2(false, "Over MAX_MQ_SIZE");
408 return KNullPost;
409 }
410
411 MessageHandler_t reg;
412 reg.queue = _messagequeueid;
413 reg.seq = 0;
414 MessageWrapper* messagewrapper = new MessageWrapper(reg, _message, _timing, __MakeSeq());
415
416 content.lst_message.push_back(messagewrapper);
417 content.breaker->Notify(lock);
418 return messagewrapper->postid;
419}
420
421static int64_t __ComputerWaitTime(const MessageWrapper& _wrap) {
422 int64_t wait_time = 0;

Callers 1

StartMethod · 0.85

Calls 7

DumpMessageFunction · 0.85
__MakeSeqFunction · 0.85
findMethod · 0.45
endMethod · 0.45
sizeMethod · 0.45
push_backMethod · 0.45
NotifyMethod · 0.45

Tested by

no test coverage detected