Mods to improve stability for Zephora.

This commit is contained in:
Brad Arant committed 2022-03-14 18:48:58 +00:00
1 parent d13e3f9fb5
commit 03a3799888
7 files changed
+47 -30

No files matched your search

+31 -21
View File
@@ -3,33 +3,39 @@
#include "Log.h"
#include <algorithm>
namespace core {
namespace core
{
Subscription::Subscription(std::string id, std::string mode)
: id(id), mode(mode), owner(NULL) {}
Subscription::Subscription(std::string id, std::string mode)
: id(id), mode(mode), owner(NULL) {}
Subscription::Subscription(std::string id, TCPSession &session, std::string mode)
: id(id), mode(mode), owner(&session) {}
Subscription::Subscription(std::string id, TCPSession &session, std::string mode)
: id(id), mode(mode), owner(&session) {}
Subscription::~Subscription() {
Subscription::~Subscription()
{
coreutils::Log(coreutils::LOG_DEBUG_3) << "Subscription destructor....";
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) {
onSubscribe(session);
int Subscription::subscribe(TCPSession &session)
{
onSubscribe(session);
subscribers.push_back(&session);
return 1;
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;
}
@@ -37,23 +43,27 @@ namespace core {
return 0;
}
int Subscription::process(coreutils::ZString &request, std::stringstream &out) {
int Subscription::process(coreutils::ZString &request, std::stringstream &out, TCPSession &session)
{
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());
int Subscription::event(std::stringstream &out)
{
for (auto subscriber = subscribers.begin(); subscriber < subscribers.end(); ++subscriber)
(*subscriber)->write(out.str());
return 1;
}
bool Subscription::ifSubscriber(TCPSession &session) {
bool Subscription::ifSubscriber(TCPSession &session)
{
return (std::find(subscribers.begin(), subscribers.end(), &session) != subscribers.end());
}
int Subscription::onSubscribe(TCPSession &session) {
int Subscription::onSubscribe(TCPSession &session)
{
return 0;
}
}