mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-09 14:32:53 +00:00
@@ -177,6 +177,9 @@ proc processBody(node, retFutureSym: NimNode,
|
||||
var newDiscard = node
|
||||
result.createVar("futureDiscard_" & $toStrLit(node[0][1]), node[0][1],
|
||||
newDiscard[0], newDiscard, node)
|
||||
of RoutineNodes:
|
||||
# skip all the nested procedure definitions
|
||||
return
|
||||
else: discard
|
||||
|
||||
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)
|
||||
Reference in New Issue
Block a user