From bae91fcccee8228bdcf031259e122cd885b8d28c Mon Sep 17 00:00:00 2001 From: Kiritow <1362050620@qq.com> Date: Thu, 5 Jul 2018 02:14:50 +0800 Subject: [PATCH] Update epoll interface --- gsock.cpp | 24 +++++++++++++++--------- gsock.h | 8 +++++--- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/gsock.cpp b/gsock.cpp index 0a08226..1554720 100644 --- a/gsock.cpp +++ b/gsock.cpp @@ -1078,20 +1078,26 @@ epoll::~epoll() { 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; - return epoll_ctl(_fd,EPOLL_CTL_ADD,v._vp->sfd,event); + struct epoll_event ev; + 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; - return epoll_ctl(_fd,EPOLL_CTL_MOD,v._vp->sfd,event); + struct epoll_event ev; + 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; - return epoll_ctl(_fd,EPOLL_CTL_DEL,v._vp->sfd,event); + struct epoll_event ev; + 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) { diff --git a/gsock.h b/gsock.h index 9298acd..416ea49 100644 --- a/gsock.h +++ b/gsock.h @@ -233,14 +233,16 @@ class epoll { public: epoll(); - int add(const vsock& v,epoll_event* event); - int mod(const vsock& v,epoll_event* event); - int del(const vsock& v,epoll_event* event); + // EPOLLIN, EPOLLOUT, ... + int add(const vsock& v,int event); + int mod(const vsock& v,int event); + int del(const vsock& v,int event); // >0: event counts. // =0: Time up. // <0: Error. // 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); ~epoll();