From 4e96ff73864ea29e5ec7730e5e08a20cf42e9b5f Mon Sep 17 00:00:00 2001 From: ruki Date: Wed, 6 Nov 2019 00:36:43 +0800 Subject: add io poller --- xmake/core/base/socket.lua | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'xmake/core/base/socket.lua') diff --git a/xmake/core/base/socket.lua b/xmake/core/base/socket.lua index 4a2dfdcdc..6a92d802f 100644 --- a/xmake/core/base/socket.lua +++ b/xmake/core/base/socket.lua @@ -20,6 +20,7 @@ -- define module local socket = socket or {} +local _poller = _poller or {} local _instance = _instance or {} -- load modules @@ -519,6 +520,45 @@ function _instance:__gc() end end +-- insert socket events to poller +function _poller:insert(sock, events) + + -- ensure opened + local ok, errors = sock:_ensure_opened() + if not ok then + return false, errors + end + + -- insert it + return io.poller_insert(sock._SOCK, events) +end + +-- modify socket events in poller +function _poller:modify(sock, events) + + -- ensure opened + local ok, errors = sock:_ensure_opened() + if not ok then + return false, errors + end + + -- modify it + return io.poller_modify(sock._SOCK, events) +end + +-- remove socket from poller +function _poller:remove(sock) + + -- ensure opened + local ok, errors = sock:_ensure_opened() + if not ok then + return false, errors + end + + -- remove it + return io.poller_remove(sock._SOCK) +end + -- open a socket -- -- @param socktype the socket type, e.g. tcp, udp, icmp -- cgit v1.3.1