代码拉取完成,页面将自动刷新
同步操作将从 NicoMaki/zinx 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#ifndef _ZINXTCP_H_
#define _ZINXTCP_H_
#include "zinx.h"
/*tcp数据套接字通道类,继承通道类,该类也是一个抽象类,需要开发者继承该类,
重写GetInputNextStage函数以指定读取到的字节流的处理方式*/
class ZinxTcpData :public Ichannel {
private:
int m_DataFd = -1;
public:
ZinxTcpData(int _fd) :m_DataFd(_fd){}
virtual ~ZinxTcpData() { close(m_DataFd); }
virtual bool Init() override;
virtual bool ReadFd(std::string & _input) override;
virtual bool WriteFd(std::string & _output) override;
virtual void Fini() override;
virtual int GetFd() override;
virtual std::string GetChannelInfo() override;
virtual AZinxHandler * GetInputNextStage(BytesMsg & _oInput) = 0;
};
/*产生tcp数据套接字通道类的抽象工厂类,
开发者需要重写CreateTcpDataChannel函数,来返回一个tcp通道对象
一般地,开发者应该同时创建一对tcp通道类和工厂类*/
class IZinxTcpConnFact {
public:
virtual ZinxTcpData *CreateTcpDataChannel(int _fd) = 0;
};
/*tcp监听通道类,这是一个实体类(不建议继承该类),开发者可以直接创建tcp监听通道对象,
一般地,开发者应该在该类的构造函数中,指定一个tcp套接字通道类的工厂类,当有连接到来后,该工厂类的成员方法会被调用*/
class ZinxTCPListen :
public Ichannel
{
private:
unsigned short m_usPort = 0;
int m_fd = -1;
IZinxTcpConnFact *m_ConnFac = NULL;
public:
ZinxTCPListen(unsigned short _usPort, IZinxTcpConnFact *_pConnFac) :m_usPort(_usPort), m_ConnFac(_pConnFac){}
virtual ~ZinxTCPListen();
virtual bool Init() override;
virtual bool ReadFd(std::string & _input) override;
virtual bool WriteFd(std::string & _output) override;
virtual void Fini() override;
virtual int GetFd() override;
virtual std::string GetChannelInfo() override;
virtual AZinxHandler * GetInputNextStage(BytesMsg & _oInput);
};
#endif
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。