80 lines
2.0 KiB
C++
80 lines
2.0 KiB
C++
#ifndef __Session_h__
|
|
#define __Session_h__
|
|
|
|
#include "TCPSocket.h"
|
|
//#include "TCPServerSocket.h"
|
|
#include "SessionFilter.h"
|
|
|
|
namespace core {
|
|
|
|
class TCPServerSocket;
|
|
|
|
///
|
|
/// Session
|
|
///
|
|
/// Session defines the nature of the interaction with the client
|
|
/// and stores persistent data for a defined session. BMASession objects
|
|
/// are not sockets but instead provide a communications control
|
|
/// mechanism. Protocol conversations are provided through extensions
|
|
/// from this object.
|
|
///
|
|
|
|
class Session : public TCPSocket {
|
|
|
|
public:
|
|
Session(EPoll &ePoll, TCPServerSocket &server);
|
|
~Session();
|
|
|
|
virtual void init();
|
|
|
|
virtual void output(Session *session);
|
|
|
|
///
|
|
/// The send method is used to output the contents of the out stream
|
|
/// to the session containing the stream.
|
|
///
|
|
|
|
void send();
|
|
|
|
///
|
|
/// Use this sendToAll method to output the contents of the out stream
|
|
/// to all the connections on the server excluding the sender session.
|
|
///
|
|
|
|
void sendToAll();
|
|
|
|
///
|
|
/// Use this sendToAll method to output the contents of the out stream
|
|
/// to all the connections on the server excluding the sender session
|
|
/// and the entries identified by the passed in filter object.
|
|
///
|
|
|
|
void sendToAll(SessionFilter *filter);
|
|
|
|
std::stringstream out;
|
|
|
|
TCPServerSocket &getServer();
|
|
TCPServerSocket &server;
|
|
|
|
protected:
|
|
|
|
void onDataReceived(std::string data) override;
|
|
void onConnected() override;
|
|
|
|
///
|
|
/// Override the protocol method to manage and control the session communications
|
|
/// in your inherited session. If you do not override this method then the Session
|
|
/// default will process the 'commands' added to the server object using the
|
|
/// processRequest method on the session input.
|
|
///
|
|
|
|
virtual void protocol(std::string data);
|
|
|
|
private:
|
|
|
|
};
|
|
|
|
}
|
|
|
|
#endif
|