summaryrefslogtreecommitdiff
path: root/xmake/core/base/socket.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2019-11-06 00:36:43 +0800
committerruki <[email protected]>2019-11-05 21:40:22 +0800
commit4e96ff73864ea29e5ec7730e5e08a20cf42e9b5f (patch)
treef2dd6c95ff1200d457018fc809db8ef4e3ad9755 /xmake/core/base/socket.lua
parentb1eee1ec65dd0f9d3a26af52596d86c331160587 (diff)
add io poller
Diffstat (limited to 'xmake/core/base/socket.lua')
-rw-r--r--xmake/core/base/socket.lua40
1 files changed, 40 insertions, 0 deletions
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