ServerCore/Subscription.cpp
2021-08-31 17:57:21 -07:00

39 lines
1.1 KiB
C++

#include "Subscription.h"
namespace core {
Subscription::Subscription(std::string id, TCPSession &session) : id(id), owner(&session) {}
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;
}
}