From b4fd28e41a2b6ba9060533227f12c14c1280f2b5 Mon Sep 17 00:00:00 2001 From: Brad Arant Date: Sun, 11 Jun 2023 20:21:49 -0700 Subject: [PATCH] Repaired subscription functions with new Subscription object parameters. --- Subscription.cpp | 4 +++- SubscriptionManager.cpp | 13 ++++--------- SubscriptionManager.h | 4 +--- 3 files changed, 8 insertions(+), 13 deletions(-) diff --git a/Subscription.cpp b/Subscription.cpp index 985e0e1..95b8102 100644 --- a/Subscription.cpp +++ b/Subscription.cpp @@ -12,7 +12,9 @@ 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) { +// coreutils::Log(coreutils::LOG_DEBUG_3) << "Subscription '" << id << "' with handler '" << handler->name << "'"; + } Subscription::~Subscription() { std::stringstream out; diff --git a/SubscriptionManager.cpp b/SubscriptionManager.cpp index 7ad40df..13a8d71 100644 --- a/SubscriptionManager.cpp +++ b/SubscriptionManager.cpp @@ -7,14 +7,6 @@ namespace core { - SubscriptionManager::SubscriptionManager() { - factory = new SubscriptionHandlerFactory(); - } - - SubscriptionManager::~SubscriptionManager() { - delete factory; - } - int SubscriptionManager::add(Subscription &subscription) { lock.lock(); subscriptions.insert(std::make_pair(subscription.id, &subscription)); @@ -56,7 +48,10 @@ namespace core { int SubscriptionManager::processCommand(coreutils::ZString &request, TCPSession &session) { if (request[0].equals("publish")) { - SubscriptionHandler *handler = factory->getSubscriptionHandler(request[3].str()); + SubscriptionHandler *handler = NULL; + if(request.getList().size() > 3) { + factory->getSubscriptionHandler(request[3].str()); + } newSubscription = new Subscription(request[1].str(), session, request[2].str(), handler); subscriptions.insert(std::make_pair(request[1].str(), newSubscription)); return 1; diff --git a/SubscriptionManager.h b/SubscriptionManager.h index ab667c0..b8a754f 100644 --- a/SubscriptionManager.h +++ b/SubscriptionManager.h @@ -16,14 +16,12 @@ namespace core { class SubscriptionManager : public Command { public: - SubscriptionManager(); - virtual ~SubscriptionManager(); int add(Subscription &subscription); int removeSessionSubscriptions(TCPSession &session); int processCommand(coreutils::ZString &request, TCPSession &session) override; - SubscriptionHandlerFactory *factory; + SubscriptionHandlerFactory *factory = NULL; private: Subscription *subscription;