OpenCPN Partial API docs
Loading...
Searching...
No Matches
multiplexer.h
1/***************************************************************************
2 *
3 * Project: OpenCPN
4 * Purpose: NMEA Data Multiplexer Object
5 * Author: David Register
6 *
7 ***************************************************************************
8 * Copyright (C) 2010 by David S. Register *
9 * *
10 * This program is free software; you can redistribute it and/or modify *
11 * it under the terms of the GNU General Public License as published by *
12 * the Free Software Foundation; either version 2 of the License, or *
13 * (at your option) any later version. *
14 * *
15 * This program is distributed in the hope that it will be useful, *
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
18 * GNU General Public License for more details. *
19 * *
20 * You should have received a copy of the GNU General Public License *
21 * along with this program; if not, write to the *
22 * Free Software Foundation, Inc., *
23 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
24 **************************************************************************/
25#ifndef _MULTIPLEXER_H__
26#define _MULTIPLEXER_H__
27
28#include <functional>
29
30#include <wx/wxprec.h>
31
32#ifndef WX_PRECOMP
33#include <wx/wx.h>
34#endif // precompiled headers
35
36#include "comm_navmsg.h"
37
39 std::function<bool()> log_is_active;
40 std::function<void(const std::string&)> log_message;
42 : log_is_active([]() { return false; }),
43 log_message([](const std::string& s) { }) { }
44
45};
46
47
48class Multiplexer : public wxEvtHandler {
49public:
50 Multiplexer(MuxLogCallbacks log_callbacks);
52
53 void LogOutputMessage(const wxString &msg, wxString stream_name,
54 bool b_filter);
55 void LogOutputMessageColor(const wxString &msg, const wxString &stream_name,
56 const wxString &color);
57 void LogInputMessage(const wxString &msg, const wxString &stream_name,
58 bool b_filter, bool b_error = false);
59
60private:
61 ObservableListener m_listener_N0183_all;
62
63 void HandleN0183(std::shared_ptr<const Nmea0183Msg> n0183_msg);
64
65 MuxLogCallbacks m_log_callbacks;
66
67};
68#endif // _MULTIPLEXER_H__
Keeps listening over it's lifespan, removes itself on destruction.
Definition: observable.h:143