#ifndef __Subscription_h__ #define __Subscription_h__ #include "MString.h" #include "SessionFilter.h" #include "SubscriptionHandler.h" #include "ZString.h" #include #include namespace core { class TCPSession; class Subscription { public: Subscription(std::string id, std::string mode = "*AUTHOR"); Subscription(std::string id, coreutils::MString alias, std::string mode); Subscription(std::string id, coreutils::MString alias, std::string ownership, std::string mode, SubscriptionHandler *handler, std::string selection, std::string time); 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 subscriptionOwner(coreutils::MString alias, std::string selection); 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; coreutils::MString owner; coreutils::MString subscriptionOwners; std::string selectionOfOwnerForSubscription; std::string will; std::string ownership; std::string timer; SubscriptionHandler *handler; std::vector subscribers; }; } #endif