| 392 | } |
| 393 | |
| 394 | MessagePost_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 | |
| 421 | static int64_t __ComputerWaitTime(const MessageWrapper& _wrap) { |
| 422 | int64_t wait_time = 0; |