From ea5d14cb81bd618da08e46fc4a314379d8df46ca Mon Sep 17 00:00:00 2001
From: Kim Alvefur <zash@zash.se>
Date: Fri, 6 Jan 2017 17:01:48 +0100
Subject: net.server_epoll: Reuse interface metatable for event compat layer

---
 net/server_epoll.lua | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

(limited to 'net')

diff --git a/net/server_epoll.lua b/net/server_epoll.lua
index 0f340560..086c8dfc 100644
--- a/net/server_epoll.lua
+++ b/net/server_epoll.lua
@@ -671,23 +671,23 @@ return {
 		local function onevent(self)
 			local ret = self:callback();
 			if ret == -1 then
-				epoll.ctl("del", fd);
+				self:setflags(false, false);
 			elseif ret then
-				epoll.ctl("mod", fd, mode);
+				self:setflags(mode == "r" or mode == "rw", mode == "w" or mode == "rw");
 			end
 		end
 
-		local conn = {
+		local conn = setmetatable({
+			getfd = function () return fd; end;
 			callback = callback;
 			onreadable = onevent;
 			onwriteable = onevent;
-			close = function ()
+			close = function (self)
+				self:setflags(false, false);
 				fds[fd] = nil;
-				return epoll.ctl("del", fd);
 			end;
-		};
-		fds[fd] = conn;
-		local ok, err = epoll.ctl("add", fd, mode or "r");
+		}, interface_mt);
+		local ok, err = conn:setflags(mode == "r" or mode == "rw", mode == "w" or mode == "rw");
 		if not ok then return ok, err; end
 		return conn;
 	end;
-- 
cgit v1.2.3