Added support for the SubscriptionHandlerFactory object.

This commit is contained in:
Brad Arant committed 2023-06-10 16:01:56 -07:00
1 parent 0ef782a11c
commit b40cb9f5a4
114 files changed
+497 -480

No files matched your search

+11 -21
View File
@@ -3,8 +3,7 @@
#include "TCPSession.h"
#include <algorithm>
namespace core
{
namespace core {
Subscription::Subscription(std::string id, std::string mode)
: id(id), mode(mode), owner(NULL), handler(NULL) {}
@@ -13,37 +12,29 @@ namespace core
: id(id), mode(mode), owner(&session), handler(NULL) {}
Subscription::Subscription(std::string id, TCPSession &session, std::string mode, SubscriptionHandler *handler)
: id(id), mode(mode), owner(&session), handler(handler) {
: id(id), mode(mode), owner(&session), handler(handler) {}
}
Subscription::~Subscription()
{
Subscription::~Subscription() {
std::stringstream out;
out << "cancel:" << id << std::endl;
for (auto subscriber : subscribers)
{
for (auto subscriber : subscribers) {
subscriber->write(out.str());
}
}
int Subscription::subscribe(TCPSession &session)
{
int Subscription::subscribe(TCPSession &session) {
if (handler)
handler->onSubscribe(session);
handler->onSubscribe(session);
else
onSubscribe(session);
onSubscribe(session);
subscribers.push_back(&session);
return 1;
}
int Subscription::unsubscribe(TCPSession &session)
{
for (auto subscriber = subscribers.begin(); subscriber < subscribers.end(); ++subscriber)
{
if (*subscriber == &session)
{
int Subscription::unsubscribe(TCPSession &session) {
for (auto subscriber = subscribers.begin(); subscriber < subscribers.end(); ++subscriber) {
if (*subscriber == &session) {
subscribers.erase(subscriber++);
return 1;
}
@@ -51,8 +42,7 @@ namespace core
return 0;
}
int Subscription::process(coreutils::ZString &request, std::stringstream &out, TCPSession &session)
{
int Subscription::process(coreutils::ZString &request, std::stringstream &out, TCPSession &session) {
// std::cout << "(" << handler << ")" << std::endl;
if (handler)
handler->process(request, out, session, this);