Fixes async scgi.
This commit is contained in:
parent
2aabae702d
commit
e314da76b9
1 changed files with 17 additions and 16 deletions
|
|
@ -142,22 +142,7 @@ proc run*(handleRequest: proc (client: TSocket, input: string,
|
||||||
s.close()
|
s.close()
|
||||||
|
|
||||||
# -- AsyncIO start
|
# -- AsyncIO start
|
||||||
|
proc handleAccept(sock: PAsyncSocket, s: PAsyncScgiState) =
|
||||||
proc open*(handleRequest: proc (server: var TAsyncScgiState, client: TSocket,
|
|
||||||
input: string, headers: PStringTable) {.closure.},
|
|
||||||
port = TPort(4000), address = "127.0.0.1"): PAsyncScgiState =
|
|
||||||
## Alternative of ``open`` for asyncio compatible SCGI.
|
|
||||||
new(result)
|
|
||||||
result.bufLen = 4000
|
|
||||||
result.input = newString(result.buflen) # will be reused
|
|
||||||
|
|
||||||
result.asyncServer = AsyncSocket()
|
|
||||||
bindAddr(result.asyncServer, port, address)
|
|
||||||
listen(result.asyncServer)
|
|
||||||
result.handleRequest = handleRequest
|
|
||||||
|
|
||||||
proc handleAccept(h: PObject) =
|
|
||||||
var s = PAsyncScgiState(h)
|
|
||||||
|
|
||||||
accept(getSocket(s.asyncServer), s.client)
|
accept(getSocket(s.asyncServer), s.client)
|
||||||
var L = 0
|
var L = 0
|
||||||
|
|
@ -179,6 +164,22 @@ proc handleAccept(h: PObject) =
|
||||||
|
|
||||||
s.handleRequest(s[], s.client, s.input, s.headers)
|
s.handleRequest(s[], s.client, s.input, s.headers)
|
||||||
|
|
||||||
|
proc open*(handleRequest: proc (server: var TAsyncScgiState, client: TSocket,
|
||||||
|
input: string, headers: PStringTable) {.closure.},
|
||||||
|
port = TPort(4000), address = "127.0.0.1"): PAsyncScgiState =
|
||||||
|
## Alternative of ``open`` for asyncio compatible SCGI.
|
||||||
|
var cres: PAsyncScgiState
|
||||||
|
new(cres)
|
||||||
|
cres.bufLen = 4000
|
||||||
|
cres.input = newString(cres.buflen) # will be reused
|
||||||
|
|
||||||
|
cres.asyncServer = AsyncSocket()
|
||||||
|
cres.asyncServer.handleAccept = proc (s: PAsyncSocket) = handleAccept(s, cres)
|
||||||
|
bindAddr(cres.asyncServer, port, address)
|
||||||
|
listen(cres.asyncServer)
|
||||||
|
cres.handleRequest = handleRequest
|
||||||
|
result = cres
|
||||||
|
|
||||||
proc register*(d: PDispatcher, s: PAsyncScgiState): PDelegate {.discardable.} =
|
proc register*(d: PDispatcher, s: PAsyncScgiState): PDelegate {.discardable.} =
|
||||||
## Registers ``s`` with dispatcher ``d``.
|
## Registers ``s`` with dispatcher ``d``.
|
||||||
result = d.register(s.asyncServer)
|
result = d.register(s.asyncServer)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue