Added support for the SubscriptionHandlerFactory object.
This commit is contained in:
1 parent
0ef782a11c
commit
b40cb9f5a4
114 files changed
+497
-480
No files matched your search
+11
-21
@@ -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);
|
||||
|
||||
Reference in new issue
Block a user