2022-06-28 17:05:29 -05:00

73 lines
1.9 KiB
Plaintext

data FunctionAddress:
peer_id: string
service_id: string
data Provider:
name: string
url: string
data EVMResult:
stdout: string
stderr: string
service MyOp("op"):
-- identity(x:string) -> string
array_length(providers: []Provider) -> i64
-- array_length(nodes: []string) -> i64
service MultiProviderQuery("service-id"):
get_block_number(provider: Provider) -> EVMResult
func get_service_id_no_try(node: string, services: []FunctionAddress) -> string:
res: *string
for service <- services:
if service.peer_id == node:
res <<- service.service_id
<- res[0]
--func custom_result(out_string: string, err_string: string) -> EVMResult:
-- r: *EVMResult
-- r.stdout <- out_string
-- r.stderr <- err_string
-- <- r
--func custom_num(number: i64) -> i64:
-- num: *i64
-- num <<- number
-- <- num[0]
func get_service_id_try(node: string, services: []FunctionAddress) -> string:
res: *string
for service <- services try:
if service.peer_id == node:
res <<- service.service_id
<- res[0]
func get_service_id_par(node: string, services: []FunctionAddress) -> string:
res: *string
for service <- services par:
if service.peer_id == node:
res <<- service.service_id
<- res[0]
-- func get_block_number(providers: []Provider, nodes: []string, services: []FunctionAddress) -> []string:
func get_block_number(providers: []Provider, nodes: []string, services: []FunctionAddress) -> []EVMResult:
-- result: *string
result: *EVMResult
for node <- nodes par:
for provider <- providers par:
on node:
service_id <- get_service_id_no_try(node, services)
MultiProviderQuery service_id
try:
-- res <- get_block_number(provider.url)
-- result <<- (provider.name, node, res)
result <- MultiProviderQuery.get_block_number(provider)
-- catch e:
-- result <- custom_result(e)
<- result