Add bool to determine if socket has been closed.

This commit is contained in:
Dominik Picheta
2014-09-16 16:37:53 +01:00
parent 33b9ab47d9
commit efca06c71c
2 changed files with 4 additions and 2 deletions

View File

@@ -116,7 +116,7 @@ proc sendStatus(client: PAsyncSocket, status: string): Future[void] =
proc processClient(client: PAsyncSocket, address: string,
callback: proc (request: TRequest):
Future[void] {.closure, gcsafe.}) {.async.} =
while true:
while not client.closed:
# GET /path HTTP/1.1
# Header: val
# \n

View File

@@ -67,7 +67,8 @@ type
# PAsyncSocket* {.borrow: `.`.} = distinct PSocket. But that doesn't work.
AsyncSocketDesc = object
fd*: SocketHandle
case isBuffered*: bool # determines whether this socket is buffered.
closed*: bool ## determines whether this socket has been closed
case isBuffered*: bool ## determines whether this socket is buffered.
of true:
buffer*: array[0..BufferSize, char]
currPos*: int # current index in buffer
@@ -400,6 +401,7 @@ proc close*(socket: PAsyncSocket) =
raiseSslError()
elif res != 1:
raiseSslError()
socket.closed = true # TODO: Add extra debugging checks for this.
when defined(ssl):
proc wrapSocket*(ctx: SslContext, socket: AsyncSocket) =