selectors: Cleanup a bit epoll flavor
1. Remove select documentation that is duplicate of nimdoc section below 2. Simplify a bit register proc code
This commit is contained in:
parent
248f52fea7
commit
4c537bd1e5
1 changed files with 2 additions and 10 deletions
|
|
@ -81,7 +81,6 @@ when defined(nimdoc):
|
||||||
proc `[]`*(s: Selector, fd: SocketHandle): SelectorKey =
|
proc `[]`*(s: Selector, fd: SocketHandle): SelectorKey =
|
||||||
## Retrieves the selector key for ``fd``.
|
## Retrieves the selector key for ``fd``.
|
||||||
|
|
||||||
|
|
||||||
elif defined(linux):
|
elif defined(linux):
|
||||||
type
|
type
|
||||||
Selector* = object
|
Selector* = object
|
||||||
|
|
@ -101,15 +100,13 @@ elif defined(linux):
|
||||||
result.data.fd = fd.cint
|
result.data.fd = fd.cint
|
||||||
|
|
||||||
proc register*(s: var Selector, fd: SocketHandle, events: set[Event],
|
proc register*(s: var Selector, fd: SocketHandle, events: set[Event],
|
||||||
data: SelectorData) =
|
data: SelectorData) =
|
||||||
var event = createEventStruct(events, fd)
|
var event = createEventStruct(events, fd)
|
||||||
if events != {}:
|
if events != {}:
|
||||||
if epoll_ctl(s.epollFD, EPOLL_CTL_ADD, fd, addr(event)) != 0:
|
if epoll_ctl(s.epollFD, EPOLL_CTL_ADD, fd, addr(event)) != 0:
|
||||||
raiseOSError(osLastError())
|
raiseOSError(osLastError())
|
||||||
|
|
||||||
var key = SelectorKey(fd: fd, events: events, data: data)
|
s.fds[fd] = SelectorKey(fd: fd, events: events, data: data)
|
||||||
|
|
||||||
s.fds[fd] = key
|
|
||||||
|
|
||||||
proc update*(s: var Selector, fd: SocketHandle, events: set[Event]) =
|
proc update*(s: var Selector, fd: SocketHandle, events: set[Event]) =
|
||||||
if s.fds[fd].events != events:
|
if s.fds[fd].events != events:
|
||||||
|
|
@ -156,11 +153,6 @@ elif defined(linux):
|
||||||
raiseOSError(err)
|
raiseOSError(err)
|
||||||
|
|
||||||
proc select*(s: var Selector, timeout: int): seq[ReadyInfo] =
|
proc select*(s: var Selector, timeout: int): seq[ReadyInfo] =
|
||||||
##
|
|
||||||
## The ``events`` field of the returned ``key`` contains the original events
|
|
||||||
## for which the ``fd`` was bound. This is contrary to the ``events`` field
|
|
||||||
## of the ``TReadyInfo`` tuple which determines which events are ready
|
|
||||||
## on the ``fd``.
|
|
||||||
result = @[]
|
result = @[]
|
||||||
let evNum = epoll_wait(s.epollFD, addr s.events[0], 64.cint, timeout.cint)
|
let evNum = epoll_wait(s.epollFD, addr s.events[0], 64.cint, timeout.cint)
|
||||||
if evNum < 0:
|
if evNum < 0:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue