diff options
| author | ruki <[email protected]> | 2019-11-06 00:36:43 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2019-11-05 21:40:22 +0800 |
| commit | 4e96ff73864ea29e5ec7730e5e08a20cf42e9b5f (patch) | |
| tree | f2dd6c95ff1200d457018fc809db8ef4e3ad9755 /xmake/core/base/socket.lua | |
| parent | b1eee1ec65dd0f9d3a26af52596d86c331160587 (diff) | |
add io poller
Diffstat (limited to 'xmake/core/base/socket.lua')
| -rw-r--r-- | xmake/core/base/socket.lua | 40 |
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 |
