5 #ifndef EMX_EuvStmServerBase_HPP
6 #define EMX_EuvStmServerBase_HPP
9 #include "EuvStreamInf.hpp"
15 class EuvStmServerClientBase;
90 std::list<EuvStmServerClientBase *> m_clientList;
103 m_stm(stm), m_host(host) {
104 m_sendByPack =
false;
125 m_sendByPack = sendByPack;
162 void SendInc(int32_t size) {
164 m_curSendSize += size;
167 void SendDec(int32_t size) {
169 m_curSendSize -= size;
172 bool BufferOverflow()
const {
173 if (m_maxSend != -1) {
174 return m_sendByPack ? m_curSendPack > m_maxSend : m_curSendSize > m_maxSend;
182 std::shared_ptr<std::string> data;
189 int32_t m_curSendSize;
190 int32_t m_curSendPack;
192 EuvStmServerHostBase *m_host;
实现多路复用循环的主体,所有基于EuvLoop的事件都应绑定到一个EuvLoop上
Definition: EuvLoop.hpp:18
面向连接的socket通信ServerClient端基类,是服务端accept后的socket, 实现了这种类型ServerClient端的创建销毁发送接收, 内部使用EuvStreamInf抽象接口作...
Definition: EuvStmServerBase.hpp:100
int32_t GetCurBufferedSize()
获取当前需要发送的字节数
Definition: EuvStmServerBase.hpp:151
EuvStmServerClientBase(EuvStreamInf *stm, EuvStmServerHostBase *host)
Definition: EuvStmServerBase.hpp:102
virtual ~EuvStmServerClientBase()
Definition: EuvStmServerBase.hpp:110
virtual void OnSendDone(ErrCodeE e, const char *buffer, int32_t size)
当调用Send发送的数据发送完毕,或是出现错误时触发此回调
Definition: EuvStmServerBase.hpp:159
EuvStreamInf * GetStmInf()
获取EuvStreamInf
Definition: EuvStmServerBase.hpp:139
int32_t GetCurBufferedPack()
获取当前需要发送的包数
Definition: EuvStmServerBase.hpp:145
ErrCodeE Send(std::shared_ptr< std::string > &data)
向客户端发送数据
EuvStmServerHostBase * GetHost()
获取ServerHost的指针
Definition: EuvStmServerBase.hpp:133
void SetMaxSendBuffer(bool sendByPack, int32_t maxSend)
调用Send发送的数据是需要等待发送缓冲区可用的,此函数负责设置当缓冲区满的情况下最多缓存的数据量
Definition: EuvStmServerBase.hpp:124
面向连接的socket通信ServerHost端基类,是服务端的监听socket,实现了这种类型ServerHost端的创建销毁发送接收, 内部使用EuvStreamInf抽象接口作为底层通信接口,实际...
Definition: EuvStmServerBase.hpp:23
virtual void OnClientConnect(EuvStmServerClientBase *client)=0
当客户端成功连接时触发此回调
EuvStmServerHostBase(EuvStreamInf *stm)
Definition: EuvStmServerBase.hpp:26
void DisConnectClient(EuvStmServerClientBase *client)
主动断开一个客户端的链接,断开后会触发OnClientDisConnect回调
virtual EuvStmServerClientBase * OnAllocClient()=0
当有客户端到来时,需要分配一个继承自EuvStmServerClientBase的ServerClient客户端给ServerHost
virtual ~EuvStmServerHostBase()
Definition: EuvStmServerBase.hpp:28
ErrCodeE Create(EuvLoop &loop, const char *ip, uint16_t port, int maxClientNum, char *buffer, int32_t size)
创建服务端并监听连接
virtual void OnRecv(EuvStmServerClientBase *client, char *data, int32_t size)=0
当某个ServerClient接收到数据时触发此回调
virtual void OnClientDisConnect(EuvStmServerClientBase *client)=0
当客户端断开链接时触发此回调
面向链接类型的抽象接口(例如tcp/pipe),用于为EuvStmClientBase/EuvStmServerHostBase等提供统一的底层通信接口
Definition: EuvStreamInf.hpp:17
ErrCodeE
错误码定义
Definition: EmxTypeDef.hpp:29
Definition: EmxGpio.hpp:10