Revent pruneSocketSet to efficient version.
This commit is contained in:
parent
51c203bab0
commit
4d2f1396cb
1 changed files with 10 additions and 6 deletions
|
|
@ -926,12 +926,16 @@ proc createFdSet(fd: var TFdSet, s: seq[TSocket], m: var int) =
|
||||||
FD_SET(i.fd, fd)
|
FD_SET(i.fd, fd)
|
||||||
|
|
||||||
proc pruneSocketSet(s: var seq[TSocket], fd: var TFdSet) =
|
proc pruneSocketSet(s: var seq[TSocket], fd: var TFdSet) =
|
||||||
var newSet: seq[TSocket] = @[]
|
var i = 0
|
||||||
for sock in s:
|
var L = s.len
|
||||||
if FD_ISSET(sock.fd, fd) == 1'i32:
|
while i < L:
|
||||||
## Is set.
|
if FD_ISSET(s[i].fd, fd) == 0'i32:
|
||||||
newSet.add(sock)
|
# not set.
|
||||||
s = newSet
|
s[i] = s[L-1]
|
||||||
|
dec(L)
|
||||||
|
else:
|
||||||
|
inc(i)
|
||||||
|
setLen(s, L)
|
||||||
|
|
||||||
proc hasDataBuffered*(s: TSocket): bool =
|
proc hasDataBuffered*(s: TSocket): bool =
|
||||||
## Determines whether a socket has data buffered.
|
## Determines whether a socket has data buffered.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue