#include "Subscription.h" namespace core { Subscription::Subscription(std::string id, TCPSession &session) : id(id), owner(session) {} Subscription::~Subscription() { std::stringstream out; out << "cancel:" << id << std::endl; for(auto subscriber : subscribers) { subscriber->write(out.str()); } } int Subscription::subscribe(TCPSession &session) { subscribers.push_back(&session); return 1; } int Subscription::unsubscribe(TCPSession &session) { for(auto subscriber = subscribers.begin(); subscriber < subscribers.end(); ++subscriber) { if(*subscriber == &session) { subscribers.erase(subscriber++); return 1; } } return 0; } int Subscription::process(coreutils::ZString &request, std::stringstream &out) { out << "event:" << request[1] << ":" << request[2] << std::endl; return 1; } int Subscription::event(std::stringstream &out) { for(auto subscriber = subscribers.begin(); subscriber < subscribers.end(); ++subscriber) (*subscriber)->write(out.str()); return 1; } int Subscription::processCommand(coreutils::ZString &request, TCPSession &session) { session.out << "Generic subscription passthrough"; return 1; } }