#ifndef SUBSCRIPTIONMANAGER_H #define SUBSCRIPTIONMANAGER_H #include #include #include #include #include //#include #include #include "hlsPlayerControl.h" #include "PVideo.h" namespace plexclient { class cSubscriberStatus : public cStatus { protected: virtual void Replaying(const cControl *DvbPlayerControl, const char *Name, const char *FileName, bool On); public: cSubscriberStatus(); bool PlayerPaused; bool PlayerStopped; cControl* pControl; Video* pVideo; int Volume; }; class Subscriber { friend class SubscriptionManager; public: std::string m_iCommandId; Subscriber() {}; Subscriber(std::string protocol, std::string host, int port, std::string uuid, std::string commandId); std::string GetUuid() { return m_sUuid; } void SendUpdate(std::string msg, bool isNav); virtual std::string to_string() { return "Subscriber-> Host: " + m_sHost + "; Port: " + std::string(itoa(m_iPort)) + "; Uuid:" + m_sUuid + "; CmdID:" + m_iCommandId; } private: std::string m_sProtocol; std::string m_sHost; int m_iPort; std::string m_sUuid; int m_iAge; }; class SubscriptionManager { public: static SubscriptionManager& GetInstance() { static SubscriptionManager instance; return instance; } void AddSubscriber(Subscriber subs); void RemoveSubscriber(std::string uuid); void UpdateSubscriber(std::string uuid, std::string commandId); std::string GetMsg(std::string commandId); void Notify(); private: SubscriptionManager(); cMutexLock m_myLock; cMutex m_myMutex; std::map m_mSubcribers; cSubscriberStatus* m_pStatus; bool m_bStoppedSent; void NotifyServer(); void Cleanup(); std::string GetTimelineXml(); }; class ActionManager { public: static ActionManager& GetInstance() { static ActionManager instance; return instance; } void AddAction(Video video); Video GetAction(); bool IsAction(); private: cMutexLock m_myLock; cMutex m_myMutex; ActionManager(); Video m_Action; bool m_isAction; }; } #endif // SUBSCRIPTIONMANAGER_H