99 algorithm,
1010 json_serialization,
1111 chronos,
12- std/ [atomics, locks, json],
13- beacon_chain/ spec/ digest,
12+ eth/ net/ nat,
13+ std/ [atomics, locks, json, net],
14+ beacon_chain/ spec/ [digest, network],
15+ beacon_chain/ nimbus_binary_common,
1416 ../ engine/ types,
1517 ../ engine/ engine,
1618 ../ nimbus_verified_proxy,
@@ -144,20 +146,50 @@ proc pollAsyncTaskEngine(ctx: ptr Context) {.exported.} =
144146 if ctx.tasks.len > 0 :
145147 poll ()
146148
149+
150+ proc load (T: type VerifiedProxyConf , configJson: string ): T {.raises : [CatchableError , ValueError ]}=
151+ let jsonNode = parseJson ($ configJson)
152+
153+ let
154+ eth2Network = some (jsonNode.getOrDefault (" Eth2Network" ).getStr (" mainnet" ))
155+ trustedBlockRoot =
156+ if jsonNode.contains (" TrustedBlockRoot" ):
157+ Eth2Digest .fromHex (jsonNode[" TrustedBlockRoot" ].getStr ())
158+ else :
159+ raise newException (ValueError , " `TrustedBlockRoot` not specified in JSON config" )
160+ backendUrl =
161+ if jsonNode.contains (" BackendUrl" ):
162+ parseCmdArg (Web3Url , jsonNode[" BackendUrl" ].getStr ())
163+ else :
164+ raise newException (ValueError , " `BackendUrl` not specified in JSON config" )
165+ logLevel = jsonNode.getOrDefault (" LogLevel" ).getStr (" INFO" )
166+ defaultListenAddress = (static parseIpAddress (" 0.0.0.0" ))
167+
168+ return VerifiedProxyConf (
169+ listenAddress: some (defaultListenAddress),
170+ eth2Network: eth2Network,
171+ trustedBlockRoot: trustedBlockRoot,
172+ backendUrl: backendUrl,
173+ logLevel: logLevel,
174+ maxPeers: 160 ,
175+ nat: NatConfig (hasExtIp: false , nat: NatAny ),
176+ logStdout: StdoutLogKind .Auto ,
177+ dataDirFlag: none (OutDir ),
178+ tcpPort: Port (defaultEth2TcpPort),
179+ udpPort: Port (defaultEth2TcpPort),
180+ agentString: " nimbus" ,
181+ discv5Enabled: true ,
182+ )
183+
147184proc run (ctx: ptr Context , configJson: string ) {.async : (raises: [ValueError , CancelledError , CatchableError ]).} =
148185 try :
149186 initLib ()
150187 except Exception as err:
151188 raise newException (CancelledError , err.msg)
152189
153- let jsonNode = parseJson ($ configJson)
190+ let config = VerifiedProxyConf . load ($ configJson)
154191
155- let config = VerifiedProxyConf (
156- eth2Network: some (jsonNode[" Eth2Network" ].getStr ()),
157- trustedBlockRoot: Eth2Digest .fromHex (jsonNode[" TrustedBlockRoot" ].getStr ()),
158- backendUrl: parseCmdArg (Web3Url , jsonNode[" Web3Url" ].getStr ()),
159- logLevel: jsonNode[" LogLevel" ].getStr (),
160- )
192+ echo $ config
161193
162194 let
163195 engineConf = RpcVerificationEngineConf (
@@ -174,6 +206,7 @@ proc run(ctx: ptr Context, configJson: string) {.async: (raises: [ValueError, Ca
174206 # the backend only needs the url to connect to
175207 engine.backend = jsonRpcClient.getEthApiBackend ()
176208
209+ # inject the frontend into c context
177210 ctx.frontend = engine.frontend
178211
179212 # start frontend and backend
@@ -184,38 +217,10 @@ proc run(ctx: ptr Context, configJson: string) {.async: (raises: [ValueError, Ca
184217 await startLightClient (config, engine)
185218
186219proc startVerifProxy (ctx: ptr Context , configJson: cstring , cb: CallBackProc ) {.exported .} =
187- let task = createTask (cb)
188-
189220 try :
190- ctx.lock.acquire ()
191- ctx.tasks.add (task)
192- finally :
193- ctx.lock.release ()
194-
195- let fut = run (ctx,$ configJson)
196-
197- fut.addCallback proc (_: pointer ) {.gcsafe .} =
198- try :
199- ctx.lock.acquire ()
200- if fut.cancelled:
201- task.response = " {\" error\" : \" cancelled\" }"
202- task.finished = true
203- task.status = - 2
204- elif fut.failed ():
205- task.response = " {\" error\" : \" failed\" }"
206- task.finished = true
207- task.status = - 1
208- else :
209- try :
210- task.response = " {\" result\" : \" finished\" }"
211- task.status = 0
212- except CatchableError as e:
213- task.response = " {\" error\" : \" " & e.msg & " \" }"
214- task.status = - 1
215- finally :
216- task.finished = true
217- finally :
218- ctx.lock.release ()
221+ waitFor run (ctx, $ configJson)
222+ except :
223+ quit (QuitFailure )
219224
220225proc stopVerifProxy * (ctx: ptr Context ) {.exported .} =
221226 ctx.lock.acquire ()
0 commit comments