Update epoll interface

This commit is contained in:
Kirigaya Kazuto 2018-07-05 02:14:50 +08:00
parent a507c0e4a3
commit bae91fccce
2 changed files with 20 additions and 12 deletions

View File

@ -1078,20 +1078,26 @@ epoll::~epoll()
{ {
close(_fd); close(_fd);
} }
int epoll::add(const vsock& v,epoll_event* event) int epoll::add(const vsock& v,int event)
{ {
event->data.fd=v._vp->sfd; struct epoll_event ev;
return epoll_ctl(_fd,EPOLL_CTL_ADD,v._vp->sfd,event); ev.events=event;
ev.data.fd=v._vp->sfd;
return epoll_ctl(_fd,EPOLL_CTL_ADD,v._vp->sfd,&ev);
} }
int epoll::mod(const vsock& v,epoll_event* event) int epoll::mod(const vsock& v,int event)
{ {
event->data.fd=v._vp->sfd; struct epoll_event ev;
return epoll_ctl(_fd,EPOLL_CTL_MOD,v._vp->sfd,event); ev.events=event;
ev.data.fd=v._vp->sfd;
return epoll_ctl(_fd,EPOLL_CTL_MOD,v._vp->sfd,&ev);
} }
int epoll::del(const vsock& v,epoll_event* event) int epoll::del(const vsock& v,int event)
{ {
event->data.fd=v._vp->sfd; struct epoll_event ev;
return epoll_ctl(_fd,EPOLL_CTL_DEL,v._vp->sfd,event); ev.events=event;
ev.data.fd=v._vp->sfd;
return epoll_ctl(_fd,EPOLL_CTL_DEL,v._vp->sfd,&ev);
} }
int epoll::wait(epoll_event* events,int maxsize,int timeout) int epoll::wait(epoll_event* events,int maxsize,int timeout)
{ {

View File

@ -233,14 +233,16 @@ class epoll
{ {
public: public:
epoll(); epoll();
int add(const vsock& v,epoll_event* event); // EPOLLIN, EPOLLOUT, ...
int mod(const vsock& v,epoll_event* event); int add(const vsock& v,int event);
int del(const vsock& v,epoll_event* event); int mod(const vsock& v,int event);
int del(const vsock& v,int event);
// >0: event counts. // >0: event counts.
// =0: Time up. // =0: Time up.
// <0: Error. // <0: Error.
// Set timeout to -1 for infinity waiting. // Set timeout to -1 for infinity waiting.
// Get data from events[i].events and events[i].data.fd
int wait(epoll_event* events,int maxsize,int timeout); int wait(epoll_event* events,int maxsize,int timeout);
~epoll(); ~epoll();