From a138c410c5c482ba8352a19e2e3b8d1850d4823f Mon Sep 17 00:00:00 2001 From: KonradStaniec Date: Mon, 12 Jul 2021 07:22:01 +0200 Subject: [PATCH] [FEATURE] Add additional constructor to the proxy (#108) --- json_rpc/rpcproxy.nim | 16 ++++++++++++---- json_rpc/servers/httpserver.nim | 5 +++++ 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/json_rpc/rpcproxy.nim b/json_rpc/rpcproxy.nim index b60f4d3..0a541a3 100644 --- a/json_rpc/rpcproxy.nim +++ b/json_rpc/rpcproxy.nim @@ -13,14 +13,22 @@ proc proxyCall(client: RpcHttpClient, name: string): RpcProc = let res = await client.call(name, params) return StringOfJson($res) -proc new*(T: type RpcHttpProxy, listenAddresses: openArray[string]): T {.raises: [Defect, CatchableError].}= +proc new*(T: type RpcHttpProxy, server: RpcHttpServer): T = let client = newRpcHttpClient() - let router = RpcRouter.init() - T(rpcHttpClient: client, rpcHttpServer: newRpcHttpServer(listenAddresses, router)) + T(rpcHttpClient: client, rpcHttpServer: server) + +proc new*(T: type RpcHttpProxy, listenAddresses: openArray[TransportAddress]): T {.raises: [Defect, CatchableError].} = + RpcHttpProxy.new(newRpcHttpServer(listenAddresses, RpcRouter.init())) + +proc new*(T: type RpcHttpProxy, listenAddresses: openArray[string]): T {.raises: [Defect, CatchableError].} = + RpcHttpProxy.new(newRpcHttpServer(listenAddresses, RpcRouter.init())) proc newRpcHttpProxy*(listenAddresses: openArray[string]): RpcHttpProxy {.raises: [Defect, CatchableError].} = RpcHttpProxy.new(listenAddresses) +proc newRpcHttpProxy*(listenAddresses: openArray[TransportAddress]): RpcHttpProxy {.raises: [Defect, CatchableError].} = + RpcHttpProxy.new(listenAddresses) + proc start*(proxy:RpcHttpProxy, proxyServerUrl: string) {.async.} = proxy.rpcHttpServer.start() await proxy.rpcHttpClient.connect(proxyServerUrl) @@ -43,4 +51,4 @@ proc stop*(rpcHttpProxy: RpcHttpProxy) {.raises: [Defect, CatchableError].} = rpcHttpProxy.rpcHttpServer.stop() proc closeWait*(rpcHttpProxy: RpcHttpProxy) {.async.} = - await rpcHttpProxy.rpcHttpServer.closeWait() \ No newline at end of file + await rpcHttpProxy.rpcHttpServer.closeWait() diff --git a/json_rpc/servers/httpserver.nim b/json_rpc/servers/httpserver.nim index da20065..dda738a 100644 --- a/json_rpc/servers/httpserver.nim +++ b/json_rpc/servers/httpserver.nim @@ -323,6 +323,11 @@ proc newRpcHttpServer*(addresses: openArray[string], router: RpcRouter): RpcHttp result = newRpcHttpServer(router) result.addStreamServers(addresses) +proc newRpcHttpServer*(addresses: openArray[TransportAddress], router: RpcRouter): RpcHttpServer = + ## Create new server and assign it to addresses ``addresses``. + result = newRpcHttpServer(router) + result.addStreamServers(addresses) + proc start*(server: RpcHttpServer) = ## Start the RPC server. for item in server.servers: