mirror of
https://github.com/fluencelabs/examples
synced 2025-04-25 10:42:16 +00:00
114 lines
3.6 KiB
Plaintext
114 lines
3.6 KiB
Plaintext
service OpString("op"):
|
|
identity(s: string)
|
|
|
|
data EchoResult:
|
|
echo: string
|
|
|
|
service EchoService:
|
|
echo: []string -> []EchoResult
|
|
|
|
service GreetingService("service-id"):
|
|
greeting: string, bool -> string
|
|
|
|
-- basic echo service: string array, return array of structs
|
|
func echo(names: []string, node: string, echo_service: string) -> []EchoResult:
|
|
on node:
|
|
EchoService echo_service
|
|
res <- EchoService.echo(names)
|
|
<- res
|
|
|
|
|
|
func greeting(name:string, greet:bool, node:string, greeting_service_id: string) -> string:
|
|
on node:
|
|
GreetingService greeting_service_id
|
|
res <- GreetingService.greeting(name, greet)
|
|
<- res
|
|
|
|
-- call echo service and and sequentailly call greeting service on each name
|
|
-- one service, on one node for all processing needs
|
|
func echo_greeting_seq(names: []string, greet: bool, node: string, echo_service_id: string,greeting_service_id: string) -> []string:
|
|
res: *string
|
|
on node:
|
|
EchoService echo_service_id
|
|
GreetingService greeting_service_id
|
|
echo_names <- EchoService.echo(names)
|
|
<- echo_names
|
|
for result <- echo_names:
|
|
res <- GreetingService.greeting(result.echo, greet)
|
|
<- res
|
|
|
|
|
|
data NodeServicePair:
|
|
node: string
|
|
service_id: string
|
|
|
|
-- revised Aqua function to accommodate (node, service) separation
|
|
func echo_greeting_seq_2(names: []string, greet: bool, echo_topo: NodeServicePair, greeting_topo: NodeServicePair) -> []string:
|
|
res: *string
|
|
on echo_topo.node:
|
|
EchoService echo_topo.service_id
|
|
echo_names <- EchoService.echo(names)
|
|
|
|
on greeting_topo.node:
|
|
GreetingService greeting_topo.service_id
|
|
for result <- echo_names:
|
|
res <- GreetingService.greeting(result.echo, greet)
|
|
<- res
|
|
|
|
|
|
data EchoServiceInput:
|
|
node: string
|
|
service_id: string
|
|
names: []string
|
|
|
|
-- call parallel with echo service
|
|
func echo_greeting_par(greet: bool, echo_service: EchoServiceInput, greeting_services: []NodeServicePair) -> []string:
|
|
res: *string
|
|
on echo_service.node:
|
|
EchoService echo_service.service_id
|
|
echo_results <- EchoService.echo(echo_service.names)
|
|
|
|
for result <- echo_results:
|
|
par for greeting_service <- greeting_services:
|
|
GreetingService greeting_service.service_id
|
|
on greeting_service.node:
|
|
res <- GreetingService.greeting(result.echo, greet)
|
|
OpString.identity(res!5)
|
|
<- res
|
|
|
|
-- call parallel with echo service, alternate version
|
|
func echo_greeting_par_alternative(greet: bool, echo_service: EchoServiceInput, greeting_services: []NodeServicePair) -> []string:
|
|
res: *string
|
|
on echo_service.node:
|
|
EchoService echo_service.service_id
|
|
echo_results <- EchoService.echo(echo_service.names)
|
|
|
|
for result <- echo_results:
|
|
for greeting_service <- greeting_services:
|
|
GreetingService greeting_service.service_id
|
|
par on greeting_service.node:
|
|
res <- GreetingService.greeting(result.echo, greet)
|
|
OpString.identity(res!5)
|
|
<- res
|
|
|
|
|
|
-- updated input struct
|
|
data GreetingServiceInput:
|
|
node: string
|
|
service_id: string
|
|
greet: bool
|
|
|
|
func echo_greeting_par_improved(echo_service: EchoServiceInput, greeting_services: []GreetingServiceInput) -> []string:
|
|
res: *string
|
|
on echo_service.node:
|
|
EchoService echo_service.service_id
|
|
echo_results <- EchoService.echo(echo_service.names)
|
|
|
|
for result <- echo_results:
|
|
par for greeting_service <- greeting_services:
|
|
GreetingService greeting_service.service_id
|
|
on greeting_service.node:
|
|
res <- GreetingService.greeting(result.echo, greeting_service.greet)
|
|
OpString.identity(res!5)
|
|
<- res
|