ServerCore/Session.cpp
2019-02-07 13:28:21 -08:00

62 lines
1.3 KiB
C++

#include "Session.h"
#include "Log.h"
#include "TCPServerSocket.h"
namespace core {
Session::Session(EPoll &ePoll, TCPServerSocket &server) : TCPSocket(ePoll), server(server) {
}
Session::~Session() {
server.removeFromSessionList(this);
}
void Session::init() {}
void Session::output(Session *session) {
session->out << "|" << ipAddress.getClientAddressAndPort();
}
TCPServerSocket &Session::getServer() {
return server;
}
void Session::protocol(std::string data = "") {
if(data.length() > 0)
if(!server.commands.processRequest(data, this))
server.sessionErrorHandler("Invalid data received.", this);
}
void Session::onConnected() {
protocol();
}
void Session::onDataReceived(std::string data) {
protocol(data);
}
void Session::sendToAll() {
for(auto session : server.sessions) {
if(session != this)
session->write(out.str());
}
out.str("");
}
void Session::sendToAll(SessionFilter *filter) {
for(auto session : server.sessions) {
if(filter->test(*session)) {
if(session != this)
session->write(out.str());
}
}
out.str("");
}
void Session::send() {
write(out.str());
out.str("");
}
}