Asyncio module now works on file descriptors.
This commit is contained in:
parent
b56df72a32
commit
d127ad5076
2 changed files with 150 additions and 43 deletions
|
|
@ -711,7 +711,7 @@ proc connectAsync*(socket: TSocket, name: string, port = TPort(0),
|
|||
## A variant of ``connect`` for non-blocking sockets.
|
||||
##
|
||||
## This procedure will immediatelly return, it will not block until a connection
|
||||
## is made. It is up to the caller to make sure the connections has been established
|
||||
## is made. It is up to the caller to make sure the connection has been established
|
||||
## by checking (using ``select``) whether the socket is writeable.
|
||||
##
|
||||
## **Note**: For SSL sockets, the ``handshake`` procedure must be called
|
||||
|
|
@ -820,6 +820,12 @@ proc pruneSocketSet(s: var seq[TSocket], fd: var TFdSet) =
|
|||
inc(i)
|
||||
setLen(s, L)
|
||||
|
||||
proc hasDataBuffered*(s: TSocket): bool =
|
||||
## Determines whether a socket has data buffered.
|
||||
result = false
|
||||
if s.isBuffered:
|
||||
result = s.bufLen > 0 and s.currPos != s.bufLen
|
||||
|
||||
proc checkBuffer(readfds: var seq[TSocket]): int =
|
||||
## Checks the buffer of each socket in ``readfds`` to see whether there is data.
|
||||
## Removes the sockets from ``readfds`` and returns the count of removed sockets.
|
||||
|
|
@ -1385,6 +1391,9 @@ proc connect*(socket: TSocket, timeout: int, name: string, port = TPort(0),
|
|||
proc isSSL*(socket: TSocket): bool = return socket.isSSL
|
||||
## Determines whether ``socket`` is a SSL socket.
|
||||
|
||||
proc getFD*(socket: TSocket): cint = return socket.fd
|
||||
## Returns the socket's file descriptor
|
||||
|
||||
when defined(Windows):
|
||||
var wsa: TWSADATA
|
||||
if WSAStartup(0x0101'i16, wsa) != 0: OSError()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue