parent
6b5e2adfd0
commit
75a981cf80
2 changed files with 32 additions and 0 deletions
|
|
@ -177,6 +177,9 @@ proc processBody(node, retFutureSym: NimNode,
|
||||||
var newDiscard = node
|
var newDiscard = node
|
||||||
result.createVar("futureDiscard_" & $toStrLit(node[0][1]), node[0][1],
|
result.createVar("futureDiscard_" & $toStrLit(node[0][1]), node[0][1],
|
||||||
newDiscard[0], newDiscard, node)
|
newDiscard[0], newDiscard, node)
|
||||||
|
of RoutineNodes:
|
||||||
|
# skip all the nested procedure definitions
|
||||||
|
return
|
||||||
else: discard
|
else: discard
|
||||||
|
|
||||||
for i in 0 ..< result.len:
|
for i in 0 ..< result.len:
|
||||||
|
|
|
||||||
29
tests/async/t3075.nim
Normal file
29
tests/async/t3075.nim
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
import asyncnet, asyncdispatch, strtabs
|
||||||
|
|
||||||
|
type
|
||||||
|
WebSocketCallback = proc (client: WebSocket, message: WebSocketMessage) {.closure, gcsafe.}
|
||||||
|
WebSocketRecvClosure = proc (ws: WebSocket): Future[string] {.gcsafe.}
|
||||||
|
|
||||||
|
WebSocketMessage = ref object
|
||||||
|
msg: string
|
||||||
|
|
||||||
|
WebSocket = ref object
|
||||||
|
socket: AsyncSocket
|
||||||
|
header: StringTableRef
|
||||||
|
onOpen: WebSocketCallback
|
||||||
|
onMessage: WebSocketCallback
|
||||||
|
onClose: WebSocketCallback
|
||||||
|
|
||||||
|
proc recv(ws: WebSocket, p: WebSocketRecvClosure): Future[string] {.async.}=
|
||||||
|
if not ws.socket.isClosed():
|
||||||
|
result = await ws.p()
|
||||||
|
if result == "":
|
||||||
|
ws.socket.close()
|
||||||
|
if ws.onClose != nil:
|
||||||
|
ws.onClose(ws, nil)
|
||||||
|
return result
|
||||||
|
|
||||||
|
proc reсvSize(ws: WebSocket, size: int): Future[string] {.async.} =
|
||||||
|
proc recvSizeClosure(ws: WebSocket): Future[string] {.async.} =
|
||||||
|
return await ws.socket.recv(size)
|
||||||
|
return await ws.recv(recvSizeClosure)
|
||||||
Loading…
Add table
Add a link
Reference in a new issue