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