diff options
| author | ruki <[email protected]> | 2020-01-30 22:41:43 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2020-01-30 10:10:19 +0800 |
| commit | e992084750b81a09a56fc0a7c428b3861cfb04dc (patch) | |
| tree | 892a7f2ebaa6aa12bd0cc010c22bfeb1abf8bf28 | |
| parent | 08237f64016a460b45c420547cb4631330473b6d (diff) | |
modify poller interfaces
| -rw-r--r-- | xmake/core/base/poller.lua | 44 | ||||
| -rw-r--r-- | xmake/core/base/scheduler.lua | 6 |
2 files changed, 25 insertions, 25 deletions
diff --git a/xmake/core/base/poller.lua b/xmake/core/base/poller.lua index a5cb02df2..cfe6096fd 100644 --- a/xmake/core/base/poller.lua +++ b/xmake/core/base/poller.lua @@ -40,19 +40,19 @@ poller.EV_POLLER_ONESHOT = 0x0010 -- causes the event to return only the first o poller.EV_POLLER_EOF = 0x0100 -- the event flag will be marked if the connection be closed in the edge trigger poller.EV_POLLER_ERROR = 0x0200 -- socket error after waiting --- get socket data -function poller:_sockdata(cdata) - return self._SOCKDATA and self._SOCKDATA[cdata] or nil +-- get poller object data +function poller:_pollerdata(cdata) + return self._POLLERDATA and self._POLLERDATA[cdata] or nil end --- set socket data -function poller:_sockdata_set(cdata, data) - local sockdata = self._SOCKDATA - if not sockdata then - sockdata = {} - self._SOCKDATA = sockdata +-- set poller object data +function poller:_pollerdata_set(cdata, data) + local pollerdata = self._POLLERDATA + if not pollerdata then + pollerdata = {} + self._POLLERDATA = pollerdata end - sockdata[cdata] = data + pollerdata[cdata] = data end -- insert socket events to poller @@ -70,7 +70,7 @@ function poller:_insert_sock(sock, events, udata) end -- save socket data and save sock/ref for gc - self:_sockdata_set(sock:cdata(), {sock, udata}) + self:_pollerdata_set(sock:cdata(), {sock, udata}) return true end @@ -89,7 +89,7 @@ function poller:_modify_sock(sock, events, udata) end -- update socket data for this socket - self:_sockdata_set(sock:cdata(), {sock, udata}) + self:_pollerdata_set(sock:cdata(), {sock, udata}) return true end @@ -108,7 +108,7 @@ function poller:_remove_sock(sock) end -- remove socket data for this socket - self:_sockdata_set(sock, nil) + self:_pollerdata_set(sock, nil) return true end @@ -126,24 +126,24 @@ function poller:spank() end -- insert object events to poller -function poller:insert(otype, obj, events, udata) - if otype == poller.OT_SOCK then +function poller:insert(obj, events, udata) + if obj:otype() == poller.OT_SOCK then return self:_insert_sock(obj, events, udata) end return false, string.format("invalid poller object type(%d)!", otype) end -- modify object events in poller -function poller:modify(otype, obj, events, udata) - if otype == poller.OT_SOCK then +function poller:modify(obj, events, udata) + if obj:otype() == poller.OT_SOCK then return self:_modify_sock(obj, events, udata) end return false, string.format("invalid poller object type(%d)!", otype) end -- remove socket from poller -function poller:remove(otype, obj) - if otype == poller.OT_SOCK then +function poller:remove(obj) + if obj:otype() == poller.OT_SOCK then return self:_remove_sock(obj) end return false, string.format("invalid poller object type(%d)!", otype) @@ -170,11 +170,11 @@ function poller:wait(timeout) -- TODO only socket events now. It will be proc/pipe events in the future local cdata = v[1] local sockevents = v[2] - local sockdata = self:_sockdata(cdata) - if not sockdata then + local pollerdata = self:_pollerdata(cdata) + if not pollerdata then return -1, string.format("no socket data for cdata(%d)!", cdata) end - table.insert(results, {poller.OT_SOCK, sockdata[1], sockevents, sockdata[2]}) + table.insert(results, {poller.OT_SOCK, pollerdata[1], sockevents, pollerdata[2]}) end end return count, results diff --git a/xmake/core/base/scheduler.lua b/xmake/core/base/scheduler.lua index 70a34752a..e4c4a577a 100644 --- a/xmake/core/base/scheduler.lua +++ b/xmake/core/base/scheduler.lua @@ -348,7 +348,7 @@ function scheduler:poller_wait(obj, events, timeout) if bit.band(events_prev_wait, events_wait) ~= events_wait then -- maybe wait recv/send at same time - local ok, errors = poller:modify(poller.OT_SOCK, obj, events_wait, self._poller_events_cb) + local ok, errors = poller:modify(obj, events_wait, self._poller_events_cb) if not ok then return -1, errors end @@ -356,7 +356,7 @@ function scheduler:poller_wait(obj, events, timeout) else -- insert poller object events - local ok, errors = poller:insert(poller.OT_SOCK, obj, events_wait, self._poller_events_cb) + local ok, errors = poller:insert(obj, events_wait, self._poller_events_cb) if not ok then return -1, errors end @@ -400,7 +400,7 @@ function scheduler:poller_cancel(obj) local pollerdata = self:_poller_data(obj) if pollerdata then if pollerdata.poller_events_wait ~= 0 then - local ok, errors = poller:remove(poller.OT_SOCK, obj) + local ok, errors = poller:remove(obj) if not ok then return false, errors end |
