My Project
TCPSession.h
1 #ifndef __Session_h__
2 # define __Session_h__
3 
4 #include "TCPSocket.h"
5 #include "SessionFilter.h"
6 
7 namespace core {
8 
9  class Command;
10  enum Mode {LINE, BLOCK, PACKET};
11 
12  class TCPServer;
13 
25 
26  class TCPSession : public TCPSocket {
27 
28  public:
29 
33 
34  TCPSession(EPoll &ePoll, TCPServer &server, std::string text = "");
35 
39 
40  ~TCPSession();
41 
42  Command *grab = NULL;
43 
44  virtual void output(std::stringstream &data);
45 
49 
50  std::stringstream out;
51 
56 
57  void send();
58 
63 
64  void sendToAll();
65 
71 
72  void sendToAll(SessionFilter filter);
73 
77 
78  void terminate();
79 
83 
84  TCPServer &server;
85 
90 
91 // enum Mode {LINE, BLOCK};
92 
93  protected:
94 
98 
99  virtual void onRegistered() override;
100 
106 
107  virtual void onDataReceived(char *data, int len) override;
108 
115 
116  virtual void onLineReceived(std::string line);
117 
124 
125  virtual void onBlockReceived(std::string block);
126 
132 
133  virtual void onConnected();
134 
144 
145  virtual void protocol(std::string data);
146 
153 
154  void setMode(core::Mode mode, int size = 0);
155 
156  private:
157  char *lineBuffer = NULL;
158  int lineBufferSize = 0;
159  int lineLength = 0;
160  int blockLength = 0;
161  std::mutex mtx;
162  bool term = false;
163  core::Mode mode = LINE;
164  int blockSize;
165 
166  };
167 
168 }
169 
170 #endif
core::TCPSession::send
void send()
Definition: TCPSession.cpp:101
core::SessionFilter
Definition: SessionFilter.h:10
core::TCPSession::onBlockReceived
virtual void onBlockReceived(std::string block)
Definition: TCPSession.cpp:82
core::TCPSession
Definition: TCPSession.h:26
core::TCPSession::protocol
virtual void protocol(std::string data)
Definition: TCPSession.cpp:18
core::TCPSession::onDataReceived
virtual void onDataReceived(char *data, int len) override
Definition: TCPSession.cpp:34
core::EPoll
Definition: EPoll.h:31
core::TCPSession::sendToAll
void sendToAll()
Definition: TCPSession.cpp:86
core::TCPSession::onLineReceived
virtual void onLineReceived(std::string line)
Definition: TCPSession.cpp:74
core::TCPSession::setMode
void setMode(core::Mode mode, int size=0)
Definition: TCPSession.cpp:69
core::TCPSession::out
std::stringstream out
Definition: TCPSession.h:50
core::TCPSession::terminate
void terminate()
Definition: TCPSession.cpp:107
core::TCPSession::onRegistered
virtual void onRegistered() override
Definition: TCPSession.cpp:24
core::Command
Definition: Command.h:22
core::TCPSocket
Definition: TCPSocket.h:20
core::TCPSession::output
virtual void output(std::stringstream &data)
Definition: TCPSession.cpp:14
core::TCPSession::onConnected
virtual void onConnected()
Definition: TCPSession.cpp:32
core::TCPServer
Definition: TCPServer.h:24