#ifndef __Subscription_h__ #define __Subscription_h__ #include "SubscriptionHandler.h" #include "SessionFilter.h" #include "ZString.h" #include #include #include namespace core { class TCPSession; class Subscription { public: Subscription(std::string id, std::string mode = "*AUTHOR"); Subscription(std::string id, TCPSession &session, std::string mode); Subscription(std::string id, TCPSession &session, std::string mode, SubscriptionHandler *handler); virtual ~Subscription(); int subscribe(TCPSession &session); int unsubscribe(TCPSession &session); virtual int process(coreutils::ZString &request, std::stringstream &out, TCPSession &session); virtual int onSubscribe(TCPSession &session); int event(std::stringstream &out); bool ifSubscriber(TCPSession &session); bool subInvite(TCPSession &session); void sendToAll(std::stringstream &data, TCPSession &sender); void sendToAll(std::stringstream &data, TCPSession &sender, SessionFilter filter); std::string id; std::string mode; TCPSession *owner; SubscriptionHandler *handler; std::vector subscribers; }; } #endif