forked from OpenCPN/OpenCPN
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcomm_navmsg_bus.cpp
More file actions
49 lines (43 loc) · 1.99 KB
/
comm_navmsg_bus.cpp
File metadata and controls
49 lines (43 loc) · 1.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/**************************************************************************
* Copyright (C) 2022 by David Register *
* Copyright (C) 2022 Alec Leamas *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, see <https://www.gnu.org/licenses/>. *
**************************************************************************/
/**
* \file
*
* Implement comm_navmsg_bus.h i. e., NavMsgBus.
*/
#include "model/comm_navmsg_bus.h"
void NavMsgBus::Notify(std::shared_ptr<const NavMsg> msg) {
if (!msg) return;
std::string key = NavAddr::BusToString(msg->bus) + "::" + msg->GetKey();
RegisterKey(key);
Observable(*msg).Notify(msg);
}
void NavMsgBus::RegisterKey(const std::string& key) {
{
std::lock_guard lock(m_mutex);
if (m_active_messages.find(key) == m_active_messages.end())
new_msg_event.Notify();
m_active_messages.insert(key);
}
}
NavMsgBus& NavMsgBus::GetInstance() {
static NavMsgBus instance;
return instance;
}
/** Handle changes in driver list. */
void NavMsgBus::Notify(AbstractCommDriver const&) {}