mirror of
https://github.com/logos-storage/nim-json-rpc.git
synced 2026-01-09 09:03:10 +00:00
Make the RPC procs async again
This commit is contained in:
parent
fc0665f88a
commit
6f9da4ba8a
@ -230,36 +230,32 @@ macro rpc*(server: RpcRouter, path: string, body: untyped): untyped =
|
||||
let returnType = parameters[0]
|
||||
|
||||
# delegate async proc allows return and setting of result as native type
|
||||
result.add(quote do:
|
||||
proc `doMain`(`paramsIdent`: JsonNode): `returnType` =
|
||||
result.add quote do:
|
||||
proc `doMain`(`paramsIdent`: JsonNode): Future[`returnType`] {.async.} =
|
||||
`setup`
|
||||
`procBody`
|
||||
)
|
||||
|
||||
if returnType == ident"JsonNode":
|
||||
# `JsonNode` results don't need conversion
|
||||
result.add( quote do:
|
||||
result.add quote do:
|
||||
proc `procName`(`paramsIdent`: JsonNode): Future[JsonNode] {.async, gcsafe.} =
|
||||
trap(`pathStr`):
|
||||
`res` = `doMain`(`paramsIdent`)
|
||||
)
|
||||
`res` = await `doMain`(`paramsIdent`)
|
||||
else:
|
||||
result.add(quote do:
|
||||
result.add quote do:
|
||||
proc `procName`(`paramsIdent`: JsonNode): Future[JsonNode] {.async, gcsafe.} =
|
||||
trap(`pathStr`):
|
||||
`res` = %`doMain`(`paramsIdent`)
|
||||
)
|
||||
`res` = %(await `doMain`(`paramsIdent`))
|
||||
else:
|
||||
# no return types, inline contents
|
||||
result.add(quote do:
|
||||
result.add quote do:
|
||||
proc `procName`(`paramsIdent`: JsonNode): Future[JsonNode] {.async, gcsafe.} =
|
||||
`setup`
|
||||
trap(`pathStr`):
|
||||
`procBody`
|
||||
)
|
||||
result.add( quote do:
|
||||
|
||||
result.add quote do:
|
||||
`server`.register(`path`, `procName`)
|
||||
)
|
||||
|
||||
when defined(nimDumpRpcs):
|
||||
echo "\n", pathStr, ": ", result.repr
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user