MCPcopy Create free account
hub / github.com/comaps/comaps / PushMessage

Method PushMessage

libs/drape_frontend/message_queue.cpp:39–88  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

37}
38
39void MessageQueue::PushMessage(drape_ptr<Message> && message, MessagePriority priority)
40{
41 std::lock_guard<std::mutex> lock(m_mutex);
42
43 if (m_filter != nullptr && m_filter(make_ref(message)))
44 return;
45
46 switch (priority)
47 {
48 case MessagePriority::Normal:
49 {
50 m_messages.emplace_back(std::move(message), priority);
51 break;
52 }
53 case MessagePriority::High:
54 {
55 auto iter = m_messages.begin();
56 while (iter != m_messages.end() && iter->second > MessagePriority::High)
57 iter++;
58 m_messages.emplace(iter, std::move(message), priority);
59 break;
60 }
61 case MessagePriority::UberHighSingleton:
62 {
63 bool found = false;
64 auto iter = m_messages.begin();
65 while (iter != m_messages.end() && iter->second == MessagePriority::UberHighSingleton)
66 {
67 if (iter->first->GetType() == message->GetType())
68 {
69 found = true;
70 break;
71 }
72 iter++;
73 }
74
75 if (!found)
76 m_messages.emplace_front(std::move(message), priority);
77 break;
78 }
79 case MessagePriority::Low:
80 {
81 m_lowPriorityMessages.emplace_back(std::move(message));
82 break;
83 }
84 default: ASSERT(false, ("Unknown message priority type"));
85 }
86
87 CancelWaitImpl();
88}
89
90void MessageQueue::FilterMessagesImpl()
91{

Callers 1

PostMessageMethod · 0.80

Calls 7

make_refFunction · 0.85
ASSERTFunction · 0.85
emplace_backMethod · 0.45
beginMethod · 0.45
endMethod · 0.45
emplaceMethod · 0.45
GetTypeMethod · 0.45

Tested by

no test coverage detected