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:
Adam Strzelecki 2015-09-29 19:28:10 +02:00
commit 4c537bd1e5

View file

@ -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: