EuvStreamInf.hpp
1 //
2 // Created by xiong on 2020/10/23.
3 //
4 
5 #ifndef EMX_EUVSTREAMINF_HPP
6 #define EMX_EUVSTREAMINF_HPP
7 
8 #include "EuvLoop.hpp"
9 
10 namespace Emx {
15  //It's the abstract interface for stream-like interfaces eg. pipe/tcp
17  class EuvStreamInf {
18  public:
19 
25  virtual ErrCodeE Create(EuvLoop &loop) = 0;
26 
28  virtual void Destroy() = 0;
29 
36  virtual ErrCodeE Bind(const char *ip, uint16_t port) { return ErrCodeE::OperationNotSupport; };
37 
43  virtual ErrCodeE Open(int fd) { return ErrCodeE::OperationNotSupport; };
44 
53  virtual ErrCodeE Connect(uv_connect_t *req,
54  const char *serverIp, uint16_t serverPort,
55  uv_connect_cb cb) { return ErrCodeE::OperationNotSupport; }
56 
63  virtual ErrCodeE GetSockName(void *name, size_t &len) = 0;
64 
71  virtual ErrCodeE GetPeerName(void *name, size_t &len) = 0;
72 
77  virtual uv_stream_t *GetStm() = 0;
78 
83  virtual int32_t GetFd() = 0;
84 
89  virtual bool IsReceiving() = 0;
90  };
92 }
93 
94 
95 #endif //EMX_EUVSTREAMINF_HPP
实现多路复用循环的主体,所有基于EuvLoop的事件都应绑定到一个EuvLoop上
Definition: EuvLoop.hpp:18
面向链接类型的抽象接口(例如tcp/pipe),用于为EuvStmClientBase/EuvStmServerHostBase等提供统一的底层通信接口
Definition: EuvStreamInf.hpp:17
virtual ErrCodeE Open(int fd)
打开一个已经存在的fd
Definition: EuvStreamInf.hpp:43
virtual ErrCodeE Connect(uv_connect_t *req, const char *serverIp, uint16_t serverPort, uv_connect_cb cb)
连接到服务器
Definition: EuvStreamInf.hpp:53
virtual bool IsReceiving()=0
获取当前描述符是否监听接收
virtual void Destroy()=0
销毁接口
virtual int32_t GetFd()=0
获取文件描述符fd
virtual ErrCodeE Create(EuvLoop &loop)=0
创建接口
virtual ErrCodeE GetSockName(void *name, size_t &len)=0
获取本地地址
virtual ErrCodeE GetPeerName(void *name, size_t &len)=0
获取对方地址
virtual ErrCodeE Bind(const char *ip, uint16_t port)
绑定接口到本地的地址
Definition: EuvStreamInf.hpp:36
virtual uv_stream_t * GetStm()=0
获取libuv的stream句柄
ErrCodeE
错误码定义
Definition: EmxTypeDef.hpp:29
@ OperationNotSupport
操作不支持
Definition: EmxGpio.hpp:10