json_rpc/private/client_handler_wrapper

Source   Edit  

Procs

func createRpcFromSig(clientType, rpcDecl, formatType: NimNode;
                      alias = NimNode(nil)): NimNode {....raises: [], gcsafe,
    tags: [], forbids: [].}
This procedure will generate something like this:
  • Currently it always send positional parameters to the server

proc rpcApi(client: RpcClient; paramA: TypeA; paramB: TypeB): FutureRetType = {.gcsafe.}: var reqParams = RequestParamsTx(kind: rpPositional) reqParams.positional.add encode(JrpcConv, paramA).JsonString reqParams.positional.add encode(JrpcConv, paramB).JsonString let res = await client.call("rpcApi", reqParams) result = decode(JrpcConv, res.string, typeof RetType)

2nd version to handle batch request after calling client.prepareBatch() proc rpcApi(batch: RpcBatchCallRef; paramA: TypeA; paramB: TypeB) = var reqParams = RequestParamsTx(kind: rpPositional) reqParams.positional.add encode(JrpcConv, paramA).JsonString reqParams.positional.add encode(JrpcConv, paramB).JsonString batch.batch.add RpcBatchItem(meth: "rpcApi", params: reqParams)

Source   Edit  
func cresteSignaturesFromString(clientType: NimNode; sigStrings: string;
                                formatType: NimNode): NimNode {....raises: [],
    gcsafe, tags: [], forbids: [].}
Source   Edit  
func processRpcSigs(clientType, parsedCode, formatType: NimNode): NimNode {.
    ...raises: [], gcsafe, tags: [], forbids: [].}
Source   Edit  

Templates

template maybeUnwrapClientResult(client, meth, reqParams, returnType, formatType): auto {..}
Don't decode e.g. JsonString, return as is Source   Edit