ServerCore/Subscription.h
2023-10-06 18:31:22 +00:00

56 lines
1.5 KiB
C++

#ifndef __Subscription_h__
#define __Subscription_h__
#include "MString.h"
#include "SessionFilter.h"
#include "SubscriptionHandler.h"
#include "ZString.h"
#include <string>
#include <vector>
namespace core
{
class TCPSession;
class Subscription
{
public:
Subscription(std::string id, std::string mode = "*AUTHOR");
Subscription(std::string id, coreutils::MString alias, std::string mode);
Subscription(std::string id, coreutils::MString alias, std::string ownership, std::string mode, SubscriptionHandler *handler, std::string selection, std::string time);
virtual ~Subscription();
int subscribe(TCPSession &session);
int unsubscribe(TCPSession &session);
virtual int process(coreutils::ZString &request, std::stringstream &out, TCPSession &session);
virtual int onSubscribe(TCPSession &session);
int event(std::stringstream &out);
bool subscriptionOwner(coreutils::MString alias, std::string selection);
bool ifSubscriber(TCPSession &session);
bool subInvite(TCPSession &session);
void sendToAll(std::stringstream &data, TCPSession &sender);
void sendToAll(std::stringstream &data, TCPSession &sender, SessionFilter filter);
std::string id;
std::string mode;
coreutils::MString owner;
coreutils::MString subscriptionOwners;
std::string selectionOfOwnerForSubscription;
std::string will;
std::string ownership;
std::string timer;
SubscriptionHandler *handler;
std::vector<TCPSession *> subscribers;
};
}
#endif