mirror of
https://github.com/fluencelabs/examples
synced 2025-05-28 10:11:19 +00:00
73 lines
1.9 KiB
Plaintext
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
|
|
|
|
|
|
|
|
|