MythTV  master
messagehandler.cpp
Go to the documentation of this file.
3 
5 
7 {
8  if (!gCoreContext)
9  {
10  LOG(VB_GENERAL, LOG_ERR, "MessageHandler started with no CoreContext!");
11  return;
12  }
14 }
15 
17 {
18  if (e->type() != MythEvent::kMythEventMessage)
19  return;
20 
22  // only master backend should forward events
23  return;
24 
25  //MythEvent *me = static_cast<MythEvent *>(e);
26 
27  // TODO: actually do something
28  // right now, this really doesnt need to do anything, but at such time as
29  // the backend's mainserver.cpp is migrated over, this will need to
30  // its message passing behavior
31 }
32 
33 bool MessageHandler::HandleQuery(SocketHandler *socket, QStringList &commands,
34  QStringList &slist)
35 {
36  QString command = commands[0];
37  bool res = false;
38 
39  if (command == "MESSAGE")
40  res = HandleInbound(socket, slist);
41  else if (command == "BACKEND_MESSAGE")
42  res = HandleOutbound(socket, slist);
43 
44  return res;
45 }
46 
47 // inbound events from clients
48 bool MessageHandler::HandleInbound(SocketHandler *sock, QStringList &slist)
49 {
50  QStringList res;
51  if (slist.size() < 2)
52  {
53  res << "ERROR" << "Insufficient Length";
54  sock->WriteStringList(res);
55  return true;
56  }
57 
58  QString message = slist[1];
59  QStringList extra_data;
60  for (uint i = 2; i < (uint) slist.size(); i++)
61  extra_data.push_back(slist[i]);
62 
63  if (extra_data.empty())
64  {
65  MythEvent me(message);
67  }
68  else
69  {
70  MythEvent me(message, extra_data);
72  }
73 
74  res << "OK";
75  sock->WriteStringList(res);
76  return true;
77 }
78 
93 bool MessageHandler::HandleOutbound(SocketHandler */*sock*/, QStringList &slist)
94 {
95  QStringList::const_iterator iter = slist.cbegin();
96  QString message = *(iter++);
97  QStringList extra_data( *(iter++) );
98  ++iter;
99  for (; iter != slist.cend(); ++iter)
100  extra_data << *iter;
101  MythEvent me(message, extra_data);
102  gCoreContext->dispatch(me);
103  return true;
104 }
105 
mythevent.h
MythEvent::kMythEventMessage
static const Type kMythEventMessage
Definition: mythevent.h:79
messagehandler.h
MythEvent
This class is used as a container for messages.
Definition: mythevent.h:16
LOG
#define LOG(_MASK_, _LEVEL_, _QSTRING_)
Definition: mythlogging.h:39
MythObservable::addListener
void addListener(QObject *listener)
Add a listener to the observable.
Definition: mythobservable.cpp:38
MessageHandler::HandleInbound
static bool HandleInbound(SocketHandler *sock, QStringList &slist)
Definition: messagehandler.cpp:48
MythCoreContext::IsMasterBackend
bool IsMasterBackend(void)
is this the actual MBE process
Definition: mythcorecontext.cpp:695
MessageHandler::HandleQuery
bool HandleQuery(SocketHandler *socket, QStringList &commands, QStringList &slist) override
Definition: messagehandler.cpp:33
SocketHandler::WriteStringList
bool WriteStringList(const QStringList &strlist)
Definition: sockethandler.cpp:26
MessageHandler::MessageHandler
MessageHandler(void)
Definition: messagehandler.cpp:6
uint
unsigned int uint
Definition: compat.h:81
gCoreContext
MythCoreContext * gCoreContext
This global variable contains the MythCoreContext instance for the app.
Definition: mythcorecontext.cpp:55
MessageHandler::HandleOutbound
static bool HandleOutbound(SocketHandler *sock, QStringList &slist)
Definition: messagehandler.cpp:93
mythcorecontext.h
MessageHandler::customEvent
void customEvent(QEvent *e) override
Definition: messagehandler.cpp:16
SocketHandler
Definition: sockethandler.h:16
MythCoreContext::dispatch
void dispatch(const MythEvent &event)
Definition: mythcorecontext.cpp:1719