之前因工作需要,封装的一个,贴出来供参考和使用。
使用上,主要也是wait它,再利用重载的[]操作符进行操作,让人感觉更清晰明了一点。
#ifndef EPOLL_H
#define EPOLL_H
#include <sys/epoll.h>
#include <unistd.h>
/**
* @brief The Epoll class 对epoll的封装
*/
class Epoll
{
public:
/**
*
*/
enum EPOLL_OP {ADD = EPOLL_CTL_ADD, MOD = EPOLL_CTL_MOD, DEL = EPOLL_CTL_DEL};
/**
* 最大的连接数和最大的回传事件数
*/
Epoll(int _max = 30, int maxevents = 20);
~Epoll();
int create();
int add(int fd, epoll_event *event);
int mod(int fd, epoll_event *event);
int del(int fd, epoll_event *event);
void setTimeout(int timeout);
void setMaxEvents(int maxevents);
int wait();
const epoll_event *events() const;
const epoll_event &operator[](int index)
{
return backEvents[index];
}
private:
bool isValid() const;
int max;
int epoll_fd;
int epoll_timeout;