Skip to content

Commit

Permalink
sync upstream cppmyth (2.12.7)
Browse files Browse the repository at this point in the history
  • Loading branch information
janbar committed Sep 28, 2019
1 parent dd512aa commit 9bc11cc
Show file tree
Hide file tree
Showing 5 changed files with 61 additions and 59 deletions.
2 changes: 1 addition & 1 deletion lib/cppmyth/CMakeLists.txt
Expand Up @@ -17,7 +17,7 @@ endif ()

###############################################################################
# set lib version here
set (CPPMYTH_LIB_VERSION "2.12.6")
set (CPPMYTH_LIB_VERSION "2.12.7")
set (CPPMYTH_LIB_SOVERSION "2")

###############################################################################
Expand Down
40 changes: 20 additions & 20 deletions lib/cppmyth/src/mytheventhandler.cpp
Expand Up @@ -62,7 +62,7 @@ namespace Myth
virtual ~SubscriptionHandlerThread();
EventSubscriber *GetHandle() { return m_handle; }
bool IsRunning() { return OS::CThread::IsRunning(); }
void PostMessage(const EventMessage& msg);
void PostMessage(const EventMessagePtr& msg);

private:
EventSubscriber *m_handle;
Expand Down Expand Up @@ -118,11 +118,11 @@ void SubscriptionHandlerThread::Stop()
}
}

void SubscriptionHandlerThread::PostMessage(const EventMessage& msg)
void SubscriptionHandlerThread::PostMessage(const EventMessagePtr& msg)
{
// Critical section
OS::CLockGuard lock(m_mutex);
m_msgQueue.push_back(EventMessagePtr(new EventMessage(msg)));
m_msgQueue.push_back(msg);
m_queueContent.Signal();
}

Expand Down Expand Up @@ -179,7 +179,7 @@ namespace Myth
typedef std::map<unsigned, SubscriptionHandlerThread*> subscriptions_t;
subscriptions_t m_subscriptions;

void DispatchEvent(const EventMessage& msg);
void DispatchEvent(const EventMessagePtr& msg);
virtual void* Process(void);
void AnnounceStatus(const char *status);
void AnnounceTimer();
Expand Down Expand Up @@ -306,12 +306,12 @@ void BasicEventHandler::RevokeAllSubscriptions(EventSubscriber *sub)
}
}

void BasicEventHandler::DispatchEvent(const EventMessage& msg)
void BasicEventHandler::DispatchEvent(const EventMessagePtr& msg)
{
OS::CLockGuard lock(m_mutex);
std::vector<std::list<unsigned>::iterator> revoked;
std::list<unsigned>::iterator it1 = m_subscriptionsByEvent[msg.event].begin();
while (it1 != m_subscriptionsByEvent[msg.event].end())
std::list<unsigned>::iterator it1 = m_subscriptionsByEvent[msg->event].begin();
while (it1 != m_subscriptionsByEvent[msg->event].end())
{
subscriptions_t::const_iterator it2 = m_subscriptions.find(*it1);
if (it2 != m_subscriptions.end())
Expand All @@ -322,7 +322,7 @@ void BasicEventHandler::DispatchEvent(const EventMessage& msg)
}
std::vector<std::list<unsigned>::iterator>::const_iterator itr;
for (itr = revoked.begin(); itr != revoked.end(); ++itr)
m_subscriptionsByEvent[msg.event].erase(*itr);
m_subscriptionsByEvent[msg->event].erase(*itr);
}

void *BasicEventHandler::Process()
Expand All @@ -333,10 +333,10 @@ void *BasicEventHandler::Process()
while (!OS::CThread::IsStopped())
{
int r;
EventMessage msg;
r = m_event->RcvBackendMessage(EVENTHANDLER_TIMEOUT, msg);
EventMessage *msg = NULL;
r = m_event->RcvBackendMessage(EVENTHANDLER_TIMEOUT, &msg);
if (r > 0)
DispatchEvent(msg);
DispatchEvent(EventMessagePtr(msg));
else if (r < 0)
{
AnnounceStatus(EVENTHANDLER_DISCONNECTED);
Expand All @@ -363,19 +363,19 @@ void *BasicEventHandler::Process()
void BasicEventHandler::AnnounceStatus(const char *status)
{
DBG(DBG_DEBUG, "%s: (%p) %s\n", __FUNCTION__, this, status);
EventMessage msg;
msg.event = EVENT_HANDLER_STATUS;
msg.subject.push_back(status);
msg.subject.push_back(m_server);
DispatchEvent(msg);
EventMessage *msg = new EventMessage();
msg->event = EVENT_HANDLER_STATUS;
msg->subject.push_back(status);
msg->subject.push_back(m_server);
DispatchEvent(EventMessagePtr(msg));
}

void BasicEventHandler::AnnounceTimer()
{
EventMessage msg;
msg.event = EVENT_HANDLER_TIMER;
msg.subject.push_back("");
DispatchEvent(msg);
EventMessage *msg = new EventMessage();
msg->event = EVENT_HANDLER_TIMER;
msg->subject.push_back("");
DispatchEvent(EventMessagePtr(msg));
}

void BasicEventHandler::RetryConnect()
Expand Down
2 changes: 1 addition & 1 deletion lib/cppmyth/src/mythtypes.h
Expand Up @@ -539,7 +539,7 @@ namespace Myth
{}
};

typedef MYTH_SHARED_PTR<EventMessage> EventMessagePtr;
typedef MYTH_SHARED_PTR<const EventMessage> EventMessagePtr;

struct StorageGroupFile
{
Expand Down
74 changes: 38 additions & 36 deletions lib/cppmyth/src/proto/mythprotoevent.cpp
Expand Up @@ -128,7 +128,7 @@ SignalStatusPtr ProtoEvent::RcvSignalStatus()
return signal;
}

int ProtoEvent::RcvBackendMessage(unsigned timeout, EventMessage& msg)
int ProtoEvent::RcvBackendMessage(unsigned timeout, EventMessage **msg)
{
OS::CLockGuard lock(*m_mutex);
struct timeval tv;
Expand All @@ -138,58 +138,60 @@ int ProtoEvent::RcvBackendMessage(unsigned timeout, EventMessage& msg)
if (r > 0)
{
std::string field;
msg.event = EVENT_UNKNOWN;
msg.subject.clear();
msg.program.reset();
msg.signal.reset();
EventMessage *pmsg = new EventMessage();
pmsg->event = EVENT_UNKNOWN;
pmsg->subject.clear();
pmsg->program.reset();
pmsg->signal.reset();
if (RcvMessageLength() && ReadField(field) && field == "BACKEND_MESSAGE")
{
unsigned n = 0;
ReadField(field);
// Tokenize the subject
__tokenize(field, " ", msg.subject, false);
n = (unsigned)msg.subject.size();
__tokenize(field, " ", pmsg->subject, false);
n = (unsigned)pmsg->subject.size();
DBG(DBG_DEBUG, "%s: %s (%u)\n", __FUNCTION__, field.c_str(), n);

if (msg.subject[0] == "UPDATE_FILE_SIZE")
msg.event = EVENT_UPDATE_FILE_SIZE;
else if (msg.subject[0] == "DONE_RECORDING")
msg.event = EVENT_DONE_RECORDING;
else if (msg.subject[0] == "QUIT_LIVETV")
msg.event = EVENT_QUIT_LIVETV;
else if (msg.subject[0] == "LIVETV_WATCH")
msg.event = EVENT_LIVETV_WATCH;
else if (msg.subject[0] == "LIVETV_CHAIN")
msg.event = EVENT_LIVETV_CHAIN;
else if (msg.subject[0] == "SIGNAL")
if (pmsg->subject[0] == "UPDATE_FILE_SIZE")
pmsg->event = EVENT_UPDATE_FILE_SIZE;
else if (pmsg->subject[0] == "DONE_RECORDING")
pmsg->event = EVENT_DONE_RECORDING;
else if (pmsg->subject[0] == "QUIT_LIVETV")
pmsg->event = EVENT_QUIT_LIVETV;
else if (pmsg->subject[0] == "LIVETV_WATCH")
pmsg->event = EVENT_LIVETV_WATCH;
else if (pmsg->subject[0] == "LIVETV_CHAIN")
pmsg->event = EVENT_LIVETV_CHAIN;
else if (pmsg->subject[0] == "SIGNAL")
{
msg.event = EVENT_SIGNAL;
msg.signal = RcvSignalStatus();
pmsg->event = EVENT_SIGNAL;
pmsg->signal = RcvSignalStatus();
}
else if (msg.subject[0] == "RECORDING_LIST_CHANGE")
else if (pmsg->subject[0] == "RECORDING_LIST_CHANGE")
{
msg.event = EVENT_RECORDING_LIST_CHANGE;
if (n > 1 && msg.subject[1] == "UPDATE")
msg.program = RcvProgramInfo();
pmsg->event = EVENT_RECORDING_LIST_CHANGE;
if (n > 1 && pmsg->subject[1] == "UPDATE")
pmsg->program = RcvProgramInfo();
}
else if (msg.subject[0] == "SCHEDULE_CHANGE")
msg.event = EVENT_SCHEDULE_CHANGE;
else if (msg.subject[0] == "ASK_RECORDING")
else if (pmsg->subject[0] == "SCHEDULE_CHANGE")
pmsg->event = EVENT_SCHEDULE_CHANGE;
else if (pmsg->subject[0] == "ASK_RECORDING")
{
msg.event = EVENT_ASK_RECORDING;
msg.program = RcvProgramInfo();
pmsg->event = EVENT_ASK_RECORDING;
pmsg->program = RcvProgramInfo();
}
else if (msg.subject[0] == "CLEAR_SETTINGS_CACHE")
msg.event = EVENT_CLEAR_SETTINGS_CACHE;
else if (msg.subject[0] == "GENERATED_PIXMAP")
msg.event = EVENT_GENERATED_PIXMAP;
else if (msg.subject[0] == "SYSTEM_EVENT")
msg.event = EVENT_SYSTEM_EVENT;
else if (pmsg->subject[0] == "CLEAR_SETTINGS_CACHE")
pmsg->event = EVENT_CLEAR_SETTINGS_CACHE;
else if (pmsg->subject[0] == "GENERATED_PIXMAP")
pmsg->event = EVENT_GENERATED_PIXMAP;
else if (pmsg->subject[0] == "SYSTEM_EVENT")
pmsg->event = EVENT_SYSTEM_EVENT;
else
msg.event = EVENT_UNKNOWN;
pmsg->event = EVENT_UNKNOWN;
}

FlushMessage();
*msg = pmsg;
return (m_hang ? -(ENOTCONN) : 1);
}
else if (r < 0)
Expand Down
2 changes: 1 addition & 1 deletion lib/cppmyth/src/proto/mythprotoevent.h
Expand Up @@ -44,7 +44,7 @@ namespace Myth
* @return success: 0 = No message, 1 = New message received
* @return failure: -(errno)
*/
int RcvBackendMessage(unsigned timeout, EventMessage& msg);
int RcvBackendMessage(unsigned timeout, EventMessage **msg);

private:
bool Announce75();
Expand Down

0 comments on commit 9bc11cc

Please sign in to comment.