json_rpc/private/server_handler_wrapper

Search:
Group by:
Source   Edit  

Procs

func wrapServerHandler(methName: string;
                       params, procBody, procWrapper, formatType: NimNode): NimNode {.
    ...raises: [], gcsafe, tags: [], forbids: [].}

This proc generate something like this:

proc rpcHandler(paramA: ParamAType, paramB: ParamBType): FutureReturnType = procBody return retVal

proc rpcWrapper(params: RequestParamsRx): FutureJsonString = type RpcType = object paramA: ParamAType paramB: ParamBType

var rpcVar: RpcType

if params.isPositional: if params.positional.len < expectedLen: raise exception rpcVar.paramA = params.unpack(paramA of ParamAType) rpcVar.paramB = params.unpack(paramB of ParamBType) else: # missing parameters is ok in named mode # the default value will be used for x in params.named: case x.name of "paramA": rpcVar.paramA = params.unpack(paramA of ParamAType) of "paramB": rpcVar.paramB = params.unpack(paramB of ParamBType) else: discard

let res = await rpcHandler(rpcVar.paramA, rpcVar.paramB) return JrpcConv.encode(res).JsonString

Source   Edit  

Templates

template maybeWrapServerResult(Format, resFut): auto {..}
Don't encode e.g. JsonString, return as is Source   Edit