MythTV
master
libs
libmythupnp
websocket_extensions
websocket_mythevent.cpp
Go to the documentation of this file.
1
2
#include "
libmythbase/mythcorecontext.h
"
3
#include "
libmythbase/mythevent.h
"
4
#include "
libmythbase/mythlogging.h
"
5
6
#include "
websocket_mythevent.h
"
7
8
WebSocketMythEvent::WebSocketMythEvent
()
9
{
10
setObjectName(
"WebSocketMythEvent"
);
11
gCoreContext
->
addListener
(
this
);
12
}
13
14
WebSocketMythEvent::~WebSocketMythEvent
()
15
{
16
gCoreContext
->
removeListener
(
this
);
17
}
18
19
bool
WebSocketMythEvent::HandleTextFrame
(
const
WebSocketFrame
&frame)
20
{
21
QString message = QString(frame.
m_payload
);
22
23
if
(message.isEmpty())
24
return
false
;
25
26
#if QT_VERSION < QT_VERSION_CHECK(5,14,0)
27
QStringList tokens = message.split(
" "
, QString::SkipEmptyParts);
28
#else
29
QStringList tokens = message.split(
" "
, Qt::SkipEmptyParts);
30
#endif
31
32
if
(tokens[0] ==
"WS_EVENT_ENABLE"
)
// Only send events if asked
33
{
34
m_sendEvents
=
true
;
35
LOG
(VB_HTTP, LOG_NOTICE,
"WebSocketMythEvent: Enabled"
);
36
}
37
else
if
(tokens[0] ==
"WS_EVENT_DISABLE"
)
38
{
39
m_sendEvents
=
false
;
40
LOG
(VB_HTTP, LOG_NOTICE,
"WebSocketMythEvent: Disabled"
);
41
}
42
else
if
(tokens[0] ==
"WS_EVENT_SET_FILTER"
)
43
{
44
m_filters
.clear();
45
46
if
(tokens.length() == 1)
47
return
true
;
48
49
m_filters
= tokens.mid(1);
50
51
QString filterString =
m_filters
.join(
", "
);
52
LOG
(VB_HTTP, LOG_NOTICE, QString(
"WebSocketMythEvent: Updated filters (%1)"
).arg(filterString));
53
}
54
55
return
false
;
56
}
57
58
void
WebSocketMythEvent::customEvent
(QEvent* event)
59
{
60
if
(event->type() ==
MythEvent::MythEventMessage
)
61
{
62
if
(!
m_sendEvents
)
63
return
;
64
65
auto
*me =
dynamic_cast<
MythEvent
*
>
(event);
66
if
(me ==
nullptr
)
67
return
;
68
QString message = me->
Message
();
69
70
if
(message.startsWith(
"SYSTEM_EVENT"
))
71
message.remove(0, 13);
// Strip SYSTEM_EVENT from the frontend, it's not useful
72
73
#if QT_VERSION < QT_VERSION_CHECK(5,14,0)
74
QStringList tokens = message.split(
" "
, QString::SkipEmptyParts);
75
#else
76
QStringList tokens = message.split(
" "
, Qt::SkipEmptyParts);
77
#endif
78
79
if
(tokens.isEmpty())
80
return
;
81
82
// If no-one is listening for this event, then ignore it
83
if
(!
m_filters
.contains(
"ALL"
) && !
m_filters
.contains(tokens[0]))
84
return
;
85
86
emit
SendTextMessage
(message);
87
}
88
}
mythevent.h
MythEvent::MythEventMessage
static Type MythEventMessage
Definition:
mythevent.h:79
WebSocketFrame
A representation of a single WebSocket frame.
Definition:
websocket.h:76
MythEvent
This class is used as a container for messages.
Definition:
mythevent.h:16
WebSocketMythEvent::~WebSocketMythEvent
~WebSocketMythEvent() override
Definition:
websocket_mythevent.cpp:14
LOG
#define LOG(_MASK_, _LEVEL_, _QSTRING_)
Definition:
mythlogging.h:39
MythEvent::Message
const QString & Message() const
Definition:
mythevent.h:65
MythObservable::addListener
void addListener(QObject *listener)
Add a listener to the observable.
Definition:
mythobservable.cpp:38
mythlogging.h
WebSocketExtension::SendTextMessage
void SendTextMessage(const QString &)
WebSocketFrame::m_payload
QByteArray m_payload
Definition:
websocket.h:115
WebSocketMythEvent::m_filters
QStringList m_filters
Definition:
websocket_mythevent.h:33
WebSocketMythEvent::customEvent
void customEvent(QEvent *) override
Definition:
websocket_mythevent.cpp:58
gCoreContext
MythCoreContext * gCoreContext
This global variable contains the MythCoreContext instance for the app.
Definition:
mythcorecontext.cpp:54
WebSocketMythEvent::WebSocketMythEvent
WebSocketMythEvent()
Definition:
websocket_mythevent.cpp:8
WebSocketMythEvent::m_sendEvents
bool m_sendEvents
Definition:
websocket_mythevent.h:34
mythcorecontext.h
websocket_mythevent.h
MythObservable::removeListener
void removeListener(QObject *listener)
Remove a listener to the observable.
Definition:
mythobservable.cpp:55
WebSocketMythEvent::HandleTextFrame
bool HandleTextFrame(const WebSocketFrame &frame) override
Definition:
websocket_mythevent.cpp:19
Generated on Tue May 30 2023 03:19:39 for MythTV by
1.8.17