📄 poller.h
字号:
#ifndef POLLER_H_
#define POLLER_H_
#include "fdset.h"
class ZBCDLL poller
{
public:
HRET create(size_t bufSize); // 创建bufSize大小的select池
HRET expand(size_t bufSize); // 调整select池的大小
HRET add(fdbase& fd, int events = FDEVENT_IN | FDEVENT_OUT);// 将一个fdbase加入select池,设定初始侦听事件为events
HRET remove(int idx); // 移除一个fdbase
void clear(); // 清除所有的fdbase
void destroy();
size_t count() const; // select池内的fdbase个数
size_t capacity() const; // select池的容量
fdbase* get(int idx) const; //
void set_events(int idx, int events); // FDEVENT_IN | FDEVENT_OUT | FDEVENT_ERR | ...
void refresh(); // 刷新,取得各fdbase最新的读写许可
HRET wait(const struct timeval* ptv); // 使用poll检查集合内各句柄的读写状态
#if zDEBUG
void print_freeze() const;
#endif
explicit poller(size_t bufSize = 1024) : m_set(0), m_polls(0){
if (bufSize > 0)
create(bufSize);
}
~poller(){
clear();
}
protected:
void dispatch_poll();
protected:
fdset m_set; // fdbase集合
struct pollfd* m_polls; //
};
inline size_t poller::count() const
{
return m_set.count();
}
inline size_t poller::capacity() const
{
return m_set.capacity();
}
inline fdbase* poller::get(int idx) const
{
return m_set.get(idx);
}
#endif //POLLER_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -