mirror of
https://github.com/fluencelabs/examples
synced 2025-04-25 10:42:16 +00:00
update version, examples, aqua
This commit is contained in:
parent
50cf3010bd
commit
d958c9cfa5
@ -114,7 +114,15 @@ Any one of the peers will do and we can deploy our services with the `fldist` to
|
||||
|
||||
```text
|
||||
# deploy greeting service
|
||||
fldist --node-id 12D3KooWJd3HaMJ1rpLY1kQvcjRPEvnDwcXrH8mJvk7ypcZXqXGE new_service --ms artifacts/greeting.wasm:configs/greeting_cfg.json --name greeting-demo
|
||||
fldist --node-id 12D3KooWJd3HaMJ1rpLY1kQvcjRPEvnDwcXrH8mJvk7ypcZXqXGE \
|
||||
new_service \
|
||||
--ms artifacts/greeting.wasm:configs/greeting_cfg.json \
|
||||
--name greeting-demo
|
||||
```
|
||||
|
||||
Which gives us the service id for the greeting service:
|
||||
|
||||
```text
|
||||
service id: 9436af06-86ab-4df3-ba2a-ad29e37043c2
|
||||
service created successfully
|
||||
```
|
||||
@ -123,24 +131,31 @@ and
|
||||
|
||||
```text
|
||||
# deploy echo service
|
||||
fldist --node-id 12D3KooWJd3HaMJ1rpLY1kQvcjRPEvnDwcXrH8mJvk7ypcZXqXGE new_service --ms artifacts/echo_service.wasm:configs/echo_service_cfg.json --name echo-demo
|
||||
fldist --node-id 12D3KooWJd3HaMJ1rpLY1kQvcjRPEvnDwcXrH8mJvk7ypcZXqXGE \
|
||||
new_service \
|
||||
--ms artifacts/echo_service.wasm:configs/echo_service_cfg.json \
|
||||
--name echo-demo
|
||||
```
|
||||
|
||||
Which gives as the id for the echo service:
|
||||
|
||||
```text
|
||||
service id: ff3f3aa0-daeb-4555-b596-0f653df2ace9
|
||||
service created successfully
|
||||
```
|
||||
|
||||
Note the return of the service id for each services deployed as we need the peer and service id to compose our services into decentralized apps.
|
||||
Take note of the service id for each service deployed as we need the peer and service id to execute each service.
|
||||
|
||||
## Building A Decentralized Greeting Application With Aqua
|
||||
|
||||
|
||||
We're ready to build our application with Aqua as our composition medium from the greeting and echo service. Creating Aqua scripts requires the specifications of each service's public API. Marine offers us a convenient way to export Aqua-compatible interface definitions:
|
||||
|
||||
```aqua
|
||||
% marine aqua artifacts/greeting.wasm
|
||||
-- marine aqua artifacts/greeting.wasm
|
||||
service Greeting:
|
||||
greeting(name: string, greeter: bool) -> string
|
||||
%
|
||||
% marine aqua artifacts/echo_service.wasm
|
||||
|
||||
-- marine aqua artifacts/echo_service.wasm
|
||||
data Echo:
|
||||
echo: string
|
||||
|
||||
@ -148,10 +163,10 @@ service EchoService:
|
||||
echo(inputs: []string) -> []Echo
|
||||
```
|
||||
|
||||
Of course, we can pipe the `marina aqua` interfaces into an aqua file of your choice, e.g. `marine aqua artifacts/greeting.wasm >> aqua-scripts/my_aqua.aqua`, to get things started. Before we dive into the Aqua development, let's compile the already created Aqua program `aqua-scripts\echo_greeter.aqua` with `aqua-cli`:
|
||||
Of course, we can pipe the `marina aqua` interfaces into an aqua file of your choice, e.g. `marine aqua artifacts/greeting.wasm >> aqua-scripts/my_aqua.aqua`, to get things started. Before we dive into the Aqua development, let's compile the already created Aqua program `aqua-scripts\echo_greeter.aqua` with `aqua`:
|
||||
|
||||
```text
|
||||
% aqua-cli -i aqua-scripts -o aqua-compiled -a
|
||||
aqua -i aqua-scripts -o aqua-compiled -a
|
||||
```
|
||||
|
||||
Since we compile with the `-a` flag, we generate aqua intermediate representation (AIR) files which are located in the `air-scripts` directory. Further below, we'll see how to generate ready-to use Typescript stubs generated by the Aqua compiler.
|
||||
@ -164,7 +179,7 @@ echo-services: [("12D3KooWFtf3rfCDAfWwt6oLZYZbDfn9Vn7bv7g6QjjQxUUEFVBt", "fb5f71
|
||||
greeting-services: [("12D3KooWJd3HaMJ1rpLY1kQvcjRPEvnDwcXrH8mJvk7ypcZXqXGE", "5a03906b-3217-40a2-93fb-7e83be735408"), ("12D3KooWFtf3rfCDAfWwt6oLZYZbDfn9Vn7bv7g6QjjQxUUEFVBt", "5cf520ff-dd65-47d7-a51a-2bf08dfe2ede")]
|
||||
```
|
||||
|
||||
Below is the first attempt at using Aqua to compose our two-services into the desired application workflow: the execution of a greeting service for each output provided by the upstream service.
|
||||
Below is the first attempt at using Aqua to compose our two services into the desired application workflow: the execution of a greeting service for each output provided by the upstream echo service.
|
||||
|
||||
```aqua
|
||||
-- aqua-scripts/echo_greeter.aqua
|
||||
@ -199,7 +214,7 @@ func echo_greeting_seq(names: []string, greet: bool, node: string, echo_service_
|
||||
<- res <- 8
|
||||
```
|
||||
|
||||
The first section of the Aqua file are the public interfaces exposed from the underlying Wasm services, which we obtained earlier from the marine cli. Our composition of the services into our application happens with the `echo_greeting_seq` function. Before we run through the function body, let's have a look at the function signature:
|
||||
The first section of the Aqua file are the public interfaces exposed from the underlying Wasm services, which we obtained earlier. Our composition of the services into our application happens with the `echo_greeting_seq` function. Before we run through the function body, let's have a look at the function signature:
|
||||
|
||||
```aqua
|
||||
-- this function encapsulates our workflow logic
|
||||
@ -207,12 +222,13 @@ func echo_greeting_seq(names: []string, greet: bool, node: string, echo_service_
|
||||
```
|
||||
|
||||
Recall that
|
||||
* the echo service takes an array of strings and
|
||||
* the greeting service takes a string and a boolean
|
||||
|
||||
Our first two argument slots take care of that. Aside from the actual Wasm function inputs, we also need to provide information with respect to the location and identity of the services we want to utilize. In this instance, we provide service ids for both the echo and greeting service, respectively, and one peer id. This indicates that both services are hosted on the same node, which is possible but not necessary or even desirable.
|
||||
* the echo service takes an array of strings as input arguments and
|
||||
* the greeting service takes a string and a boolean as input arguments
|
||||
|
||||
In the function body:
|
||||
Our first two argument slots in `echo_greeting_seq` take care of that. Aside from the actual Wasm function inputs, we also need to provide information with respect to the location and identity of the services we want to utilize. In this instance, we provide service ids for both the echo and greeting service, respectively, and one peer id. This indicates that both services are hosted on the same node, which is possible but not necessary or even desirable.
|
||||
|
||||
In the function body we:
|
||||
|
||||
1. Declare a streaming variable to accept greeting function returns
|
||||
2. Specify the node on which we want to execute the following function body
|
||||
@ -223,15 +239,16 @@ In the function body:
|
||||
7. Call the Greeting service with a name and the greet parameters in sequence
|
||||
8. Return the results array
|
||||
|
||||
Let's run the compiled Aqua code with the `fldist` cli toolL
|
||||
Let's run the compiled Aqua code with the `fldist` cli tool:
|
||||
|
||||
```text
|
||||
fldist run_air \
|
||||
-p aqua-compiled/echo_greeter.echo_greeting_seq.air \
|
||||
-d '{"names":["jim", "john", "james"], \
|
||||
"greet": true, \
|
||||
"node":"12D3KooWJd3HaMJ1rpLY1kQvcjRPEvnDwcXrH8mJvk7ypcZXqXGE", \ "greeting_service_id":"5a03906b-3217-40a2-93fb-7e83be735408", \
|
||||
"echo_service_id": "893a6fb8-43b9-4b11-8786-93300bd68bc8"}' \
|
||||
-d '{"names":["jim", "john", "james"],
|
||||
"greet": true,
|
||||
"node":"12D3KooWJd3HaMJ1rpLY1kQvcjRPEvnDwcXrH8mJvk7ypcZXqXGE", "greeting_service_id":"5a03906b-3217-40a2-93fb-7e83be735408",
|
||||
"echo_service_id": "893a6fb8-43b9-4b11-8786-93300bd68bc8"
|
||||
}' \
|
||||
--generated
|
||||
```
|
||||
|
||||
@ -278,12 +295,12 @@ Again, we can execute our workflow with the `fldist` tool:
|
||||
```text
|
||||
fldist run_air \
|
||||
-p aqua-compiled/echo_greeter.echo_greeting_seq_2.air \
|
||||
-d '{"names":["jim", "john", "james"], \
|
||||
"greet": true, \
|
||||
"greeting_topo":{"node":"12D3KooWJd3HaMJ1rpLY1kQvcjRPEvnDwcXrH8mJvk7ypcZXqXGE", \
|
||||
"service_id":"5a03906b-3217-40a2-93fb-7e83be735408"}, \
|
||||
"echo_topo": {"node": "12D3KooWFtf3rfCDAfWwt6oLZYZbDfn9Vn7bv7g6QjjQxUUEFVBt", \
|
||||
"service_id": "fb5f7126-e1ee-4ecf-81e7-20804cb7203b"}}' \
|
||||
-d '{"names":["jim", "john", "james"],
|
||||
"greet": true,
|
||||
"greeting_topo":{"node":"12D3KooWJd3HaMJ1rpLY1kQvcjRPEvnDwcXrH8mJvk7ypcZXqXGE",
|
||||
"service_id":"5a03906b-3217-40a2-93fb-7e83be735408"},
|
||||
"echo_topo": {"node": "12D3KooWFtf3rfCDAfWwt6oLZYZbDfn9Vn7bv7g6QjjQxUUEFVBt",
|
||||
"service_id": "fb5f7126-e1ee-4ecf-81e7-20804cb7203b"}}'
|
||||
--generated
|
||||
```
|
||||
|
||||
@ -299,7 +316,7 @@ Regardless of the difference in service hosts, we of course get the expected res
|
||||
]
|
||||
```
|
||||
|
||||
Both workflow examples we've seen are executing service calls in sequence. Let's kick it up a notch and process echo service outputs in parallel. Of course, we need to have the necessary greeting services deployed on different peers otherwise parallel processing defaults to sequential processing. Also, to continue to keep things compact, we introduce the `EchoServiceInput` struct.
|
||||
Both workflow examples we've seen are **seq**uentially executing service calls. Let's kick it up a notch and process echo service outputs in **par**allel. Of course, we need to have the necessary greeting services deployed on different peers otherwise parallel processing defaults to sequential processing. Also, to continue to keep things compact, we introduce the `EchoServiceInput` struct.
|
||||
|
||||
```aqua
|
||||
|
||||
@ -308,6 +325,7 @@ data EchoServiceInput:
|
||||
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:
|
||||
@ -315,9 +333,9 @@ func echo_greeting_par(greet: bool, echo_service: EchoServiceInput, greeting_ser
|
||||
echo_results <- EchoService.echo(echo_service.names)
|
||||
|
||||
for result <- echo_results:
|
||||
for greeting_service <- greeting_services:
|
||||
par for greeting_service <- greeting_services: --< parallelization takes place
|
||||
GreetingService greeting_service.service_id
|
||||
par on greeting_service.node:
|
||||
on greeting_service.node:
|
||||
res <- GreetingService.greeting(result.echo, greet)
|
||||
OpString.identity(res!5)
|
||||
<- res
|
||||
@ -357,46 +375,43 @@ And our result is:
|
||||
]
|
||||
```
|
||||
|
||||
Since we got three input names and two greeting services, we expect, and got, six results where the parallelization is on each echo-service result. Of course, we can change the parallelization to cover the echo-service results array for each provided service:
|
||||
|
||||
Our updated Auqa composition function now reads:
|
||||
Since we got three input names and two greeting services, we expect, and got, six results where the parallelization is on each echo-service result. Of course, we can change the point of parallelization to cover the echo-service results array for each provided service. Our updated Auqa composition function now reads:
|
||||
|
||||
```aqua
|
||||
func echo_greeting_par_inverse(greet: bool, echo_service: EchoServiceInput, greeting_services: []NodeServicePair) -> []string:
|
||||
-- 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:
|
||||
for result <- echo_results:
|
||||
par on greeting_service.node: --< Parallelization at the array level
|
||||
res <- GreetingService.greeting(result.echo, greet)
|
||||
OpString.identity(res!3)
|
||||
OpString.identity(res!5)
|
||||
<- res
|
||||
```
|
||||
|
||||
And running the workflow with the updated data:
|
||||
|
||||
|
||||
```text
|
||||
fldist run_air \
|
||||
-p aqua-compiled/echo_greeter.echo_greeting_par_inverse.air \
|
||||
-d '{"echo_service":{"names":["jim", "john", "james"], \
|
||||
"node": "12D3KooWFtf3rfCDAfWwt6oLZYZbDfn9Vn7bv7g6QjjQxUUEFVBt", \
|
||||
"service_id": "fb5f7126-e1ee-4ecf-81e7-20804cb7203b"}, \
|
||||
"greeting_services":[{"node":"12D3KooWJd3HaMJ1rpLY1kQvcjRPEvnDwcXrH8mJvk7ypcZXqXGE", \
|
||||
"service_id":"5a03906b-3217-40a2-93fb-7e83be735408"}, \
|
||||
{"node":"12D3KooWFtf3rfCDAfWwt6oLZYZbDfn9Vn7bv7g6QjjQxUUEFVBt", \
|
||||
"service_id":"5cf520ff-dd65-47d7-a51a-2bf08dfe2ede"}], \
|
||||
-d '{"echo_service":{"names":["jim", "john", "james"],
|
||||
"node": "12D3KooWFtf3rfCDAfWwt6oLZYZbDfn9Vn7bv7g6QjjQxUUEFVBt",
|
||||
"service_id": "fb5f7126-e1ee-4ecf-81e7-20804cb7203b"},
|
||||
"greeting_services":[{"node":"12D3KooWJd3HaMJ1rpLY1kQvcjRPEvnDwcXrH8mJvk7ypcZXqXGE",
|
||||
"service_id":"5a03906b-3217-40a2-93fb-7e83be735408"},
|
||||
{"node":"12D3KooWFtf3rfCDAfWwt6oLZYZbDfn9Vn7bv7g6QjjQxUUEFVBt",
|
||||
"service_id":"5cf520ff-dd65-47d7-a51a-2bf08dfe2ede"}],
|
||||
"greet": true}' \
|
||||
--generated
|
||||
```
|
||||
|
||||
gives us the updated result:
|
||||
|
||||
|
||||
```text
|
||||
[
|
||||
[
|
||||
@ -409,43 +424,29 @@ gives us the updated result:
|
||||
]
|
||||
```
|
||||
|
||||
With a very minor modification, i.e., the placement of `par`, we can drastically later the (re-)use of deployed services!
|
||||
|
||||
With minor modifications to our Aqua functions, we can make those parallelizations a little more useful by suppling the *greet* parameter for each service. Let's add a `GreetingServiceInput` struct and update the function signatures and bodies:
|
||||
With some additional modifications to our Aqua function, we can further improve readability by supplying the *greet* parameter for each service. Let's add a `GreetingServiceInput` struct and update the function signatures and bodies:
|
||||
|
||||
``aqua
|
||||
```aqua
|
||||
data GreetingServiceInput:
|
||||
node: string
|
||||
service_id: string
|
||||
greet: bool
|
||||
|
||||
|
||||
func echo_greeting_par_greet(echo_service: EchoServiceInput, greeting_services: []GreetingServiceInput) -> []string:
|
||||
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:
|
||||
for greeting_service <- greeting_services:
|
||||
par for greeting_service <- greeting_services:
|
||||
GreetingService greeting_service.service_id
|
||||
par on greeting_service.node:
|
||||
res <- GreetingService.greeting(result.echo, greeting_service.greet). <-- update
|
||||
on greeting_service.node:
|
||||
res <- GreetingService.greeting(result.echo, greeting_service.greet). --< update
|
||||
OpString.identity(res!5)
|
||||
<- res
|
||||
|
||||
func echo_greeting_par_inverse_greet(greet: bool, 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 greeting_service <- greeting_services:
|
||||
GreetingService greeting_service.service_id
|
||||
par on greeting_service.node:
|
||||
for result <- echo_results:
|
||||
res <- GreetingService.greeting(result.echo, greeting_service.greet) <-- update
|
||||
OpString.identity(res!3)
|
||||
<- res
|
||||
```
|
||||
|
||||
Run the workflow with the updated json string:
|
||||
@ -453,15 +454,15 @@ Run the workflow with the updated json string:
|
||||
|
||||
```test
|
||||
fldist run_air
|
||||
-p aqua-compiled/echo_greeter.echo_greeting_par_greet.air \
|
||||
-d '{"echo_service":{"names":["jim", "john", "james"], \
|
||||
"node": "12D3KooWFtf3rfCDAfWwt6oLZYZbDfn9Vn7bv7g6QjjQxUUEFVBt", \
|
||||
"service_id": "fb5f7126-e1ee-4ecf-81e7-20804cb7203b"},\
|
||||
"greeting_services":[{"node":"12D3KooWJd3HaMJ1rpLY1kQvcjRPEvnDwcXrH8mJvk7ypcZXqXGE", \
|
||||
"service_id":"5a03906b-3217-40a2-93fb-7e83be735408", \
|
||||
"greet":true}, \
|
||||
{"node":"12D3KooWFtf3rfCDAfWwt6oLZYZbDfn9Vn7bv7g6QjjQxUUEFVBt", \
|
||||
"service_id":"5cf520ff-dd65-47d7-a51a-2bf08dfe2ede", \
|
||||
-p aqua-compiled/echo_greeter.echo_greeting_par_improved.air \
|
||||
-d '{"echo_service":{"names":["jim", "john", "james"],
|
||||
"node": "12D3KooWFtf3rfCDAfWwt6oLZYZbDfn9Vn7bv7g6QjjQxUUEFVBt",
|
||||
"service_id": "fb5f7126-e1ee-4ecf-81e7-20804cb7203b"},
|
||||
"greeting_services":[{"node":"12D3KooWJd3HaMJ1rpLY1kQvcjRPEvnDwcXrH8mJvk7ypcZXqXGE",
|
||||
"service_id":"5a03906b-3217-40a2-93fb-7e83be735408",
|
||||
"greet":true},
|
||||
{"node":"12D3KooWFtf3rfCDAfWwt6oLZYZbDfn9Vn7bv7g6QjjQxUUEFVBt",
|
||||
"service_id":"5cf520ff-dd65-47d7-a51a-2bf08dfe2ede",
|
||||
"greet":false}]}' \
|
||||
--generated
|
||||
```
|
||||
@ -481,122 +482,35 @@ Which gives us:
|
||||
]
|
||||
```
|
||||
|
||||
And for the inverted loop version:
|
||||
|
||||
```test
|
||||
fldist run_air \
|
||||
-p aqua-compiled/echo_greeter.echo_greeting_par_inverse_greet.air \
|
||||
-d '{"echo_service":{"names":["jim", "john", "james"],\
|
||||
"node": "12D3KooWFtf3rfCDAfWwt6oLZYZbDfn9Vn7bv7g6QjjQxUUEFVBt", \
|
||||
"service_id": "fb5f7126-e1ee-4ecf-81e7-20804cb7203b"},\
|
||||
"greeting_services":[{"node":"12D3KooWJd3HaMJ1rpLY1kQvcjRPEvnDwcXrH8mJvk7ypcZXqXGE",\
|
||||
"service_id":"5a03906b-3217-40a2-93fb-7e83be735408", \
|
||||
"greet":true},\
|
||||
{"node":"12D3KooWFtf3rfCDAfWwt6oLZYZbDfn9Vn7bv7g6QjjQxUUEFVBt", \
|
||||
"service_id":"5cf520ff-dd65-47d7-a51a-2bf08dfe2ede", \
|
||||
"greet":false}]}' \
|
||||
--generated
|
||||
```
|
||||
|
||||
We get:
|
||||
|
||||
```test
|
||||
[
|
||||
[
|
||||
"Hi, jim",
|
||||
"Hi, john",
|
||||
"Hi, james",
|
||||
"Bye, jim",
|
||||
"Bye, john",
|
||||
"Bye, james"
|
||||
]
|
||||
]
|
||||
```
|
||||
|
||||
In this section, we explored how we can use Aqua to program hosted services into applications. Along the way, we investigated sequential and parallel workflows and discovered that changes in processing or workflow logic are taken care of at the Aqua level not requiring any changes to the deployed services. Throughout our experimentation with Aqua and deployed services, we used the `fldist` tool as our local cli client peer. In the next section, we introduce the develppment and use of a Typescript client peer.
|
||||
Again, with very minor adjustments to our Aqua function, we can significantly improve the re-use of already deployed services.
|
||||
|
||||
In this section, we explored how we can use Aqua to program hosted services into applications. Along the way, we investigated sequential and parallel workflows and discovered that changes in processing or workflow logic are taken care of at the Aqua level not requiring any changes to the deployed services. Throughout our experimentation with Aqua and deployed services, we used the `fldist` tool as our local cli client peer. In the next section, we introduce the development and use of a Typescript client peer.
|
||||
|
||||
### Developing And Working With A Typescript Client
|
||||
|
||||
In the previous section we used `fldist` cli as our local peer client to run the execution of our compiled Aqua scripts on the network. Alternatively, Aqua code can be compiled to Typescript utilizing the Fluence [JS-SDK](https://github.com/fluencelabs/fluence-js).
|
||||
In the previous section we used `fldist` as our local peer client to run the execution of our compiled Aqua scripts on the network. Alternatively, Aqua code can be directly compiled to Typescript utilizing the Fluence [JS-SDK](https://github.com/fluencelabs/fluence-js).
|
||||
|
||||
Let's install the required packages:
|
||||
|
||||
```text
|
||||
% cd client-peer
|
||||
% npm install
|
||||
cd client-peer
|
||||
npm install
|
||||
```
|
||||
|
||||
And compile our Aqua file to a Typescript stub:
|
||||
|
||||
```text
|
||||
% npm run compile-aqua
|
||||
npm run compile-aqua
|
||||
|
||||
> echo-greeter-example@0.1.0 compile-aqua /Users/bebo/localdev/examples-rework/aqua-examples/echo-greeter/client-peer
|
||||
> aqua-cli -i ../aqua-scripts -o src/
|
||||
> aqua -i ../aqua-scripts -o src/
|
||||
|
||||
java -jar /Users/bebo/localdev/examples-rework/aqua-examples/echo-greeter/client-peer/node_modules/@fluencelabs/aqua-cli/aqua-cli.jar -m node_modules -i ../aqua-scripts -o src/
|
||||
[info] Aqua Compiler 0.1.9-163
|
||||
[info] Result /Users/bebo/localdev/examples-rework/aqua-examples/echo-greeter/client-peer/src/echo_greeter.ts: compilation OK (6 functions)
|
||||
```
|
||||
|
||||
The ensuing, auto-generated file is called `echo_greeter.ts` and was copied to the `src` directory. Let's have a look:
|
||||
|
||||
```typescript
|
||||
// src/echo-greeter.ts
|
||||
import { FluenceClient, PeerIdB58 } from '@fluencelabs/fluence';
|
||||
import { RequestFlowBuilder } from '@fluencelabs/fluence/dist/api.unstable';
|
||||
import { RequestFlow } from '@fluencelabs/fluence/dist/internal/RequestFlow';
|
||||
|
||||
|
||||
|
||||
export async function echo_greeting_par_greet(client: FluenceClient, echo_service: {names:string[];node:string;service_id:string}, greeting_services: {greet:boolean;node:string;service_id:string}[], config?: {ttl?: number}): Promise<string[]> {
|
||||
let request: RequestFlow;
|
||||
const promise = new Promise<string[]>((resolve, reject) => {
|
||||
const r = new RequestFlowBuilder()
|
||||
.disableInjections()
|
||||
.withRawScript(
|
||||
`
|
||||
(xor
|
||||
// <snip>
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 4])
|
||||
)
|
||||
|
||||
`,
|
||||
)
|
||||
.configHandler((h) => {
|
||||
h.on('getDataSrv', '-relay-', () => {
|
||||
return client.relayPeerId!;
|
||||
});
|
||||
h.on('getDataSrv', 'echo_service', () => {return echo_service;});
|
||||
h.on('getDataSrv', 'greeting_services', () => {return greeting_services;});
|
||||
h.onEvent('callbackSrv', 'response', (args) => {
|
||||
const [res] = args;
|
||||
resolve(res);
|
||||
});
|
||||
|
||||
h.onEvent('errorHandlingSrv', 'error', (args) => {
|
||||
// assuming error is the single argument
|
||||
const [err] = args;
|
||||
reject(err);
|
||||
});
|
||||
})
|
||||
.handleScriptError(reject)
|
||||
.handleTimeout(() => {
|
||||
reject('Request timed out for echo_greeting_par_greet');
|
||||
})
|
||||
if(config?.ttl) {
|
||||
r.withTTL(config.ttl)
|
||||
}
|
||||
request = r.build();
|
||||
});
|
||||
await client.initiateFlow(request!);
|
||||
return promise;
|
||||
}
|
||||
// <snip>
|
||||
```
|
||||
|
||||
The Aqua compiler auto-generated the Typescript functions corresponding to each of the Aqua functions we implemented. All we have to do is use them!
|
||||
The ensuing, auto-generated file is called `echo_greeter.ts` and was copied to the `src` directory. The Aqua compiler auto-generated the Typescript functions corresponding to each of the Aqua functions we implemented. All we have to do is use them!
|
||||
|
||||
Let's look at the simple `src/index.ts` implementation using each of the workflow functions:
|
||||
|
||||
@ -607,14 +521,16 @@ Let's look at the simple `src/index.ts` implementation using each of the workflo
|
||||
import { createClient, setLogLevel, FluenceClient } from "@fluencelabs/fluence";
|
||||
import { krasnodar, Node } from "@fluencelabs/fluence-network-environment";
|
||||
import {
|
||||
echo,
|
||||
greeting,
|
||||
echo_greeting_seq,
|
||||
echo_greeting_seq_2,
|
||||
echo_greeting_par,
|
||||
echo_greeting_par_inverse,
|
||||
echo_greeting_par_greet,
|
||||
echo_greeting_par_inverse_greet,
|
||||
echo_greeting_par_alternative
|
||||
} from "./echo_greeter";
|
||||
|
||||
interface EchoResult {
|
||||
echo: string;
|
||||
}
|
||||
interface NodeServicePair {
|
||||
node: string;
|
||||
service_id: string;
|
||||
@ -642,7 +558,6 @@ let greeting_topos: Array<NodeServicePair> = [
|
||||
service_id: "5a03906b-3217-40a2-93fb-7e83be735408",
|
||||
},
|
||||
];
|
||||
|
||||
let echo_topos: Array<NodeServicePair> = [
|
||||
{
|
||||
node: "12D3KooWFtf3rfCDAfWwt6oLZYZbDfn9Vn7bv7g6QjjQxUUEFVBt",
|
||||
@ -653,13 +568,11 @@ let echo_topos: Array<NodeServicePair> = [
|
||||
service_id: "893a6fb8-43b9-4b11-8786-93300bd68bc8",
|
||||
},
|
||||
];
|
||||
|
||||
let echo_service: EchoService = {
|
||||
node: echo_topos[0].node,
|
||||
service_id: echo_topos[0].service_id,
|
||||
names: ["Jim", "John", "Jake"],
|
||||
};
|
||||
|
||||
let greeting_services: Array<GreetingService> = [
|
||||
{
|
||||
node: greeting_topos[0].node,
|
||||
@ -675,6 +588,8 @@ let greeting_services: Array<GreetingService> = [
|
||||
|
||||
let names: Array<string> = ["Jim", "John", "Jake"];
|
||||
|
||||
// let greeting_service =
|
||||
|
||||
async function main() {
|
||||
// console.log("hello");
|
||||
// setLogLevel('DEBUG');
|
||||
@ -686,7 +601,30 @@ async function main() {
|
||||
fluence.relayPeerId
|
||||
);
|
||||
|
||||
let network_result = await echo_greeting_seq(
|
||||
|
||||
let echo_result = await echo(
|
||||
fluence,
|
||||
names,
|
||||
echo_topos[0].node,
|
||||
echo_topos[0].service_id
|
||||
);
|
||||
let result = "";
|
||||
for (let item of echo_result) {
|
||||
result += item.echo + ","
|
||||
}
|
||||
console.log("echo result : ", result);
|
||||
|
||||
let greeting_result = await greeting(
|
||||
fluence,
|
||||
names[0],
|
||||
true,
|
||||
greeting_topos[0].node,
|
||||
greeting_topos[0].service_id
|
||||
);
|
||||
console.log("greeting result : ", greeting_result);
|
||||
|
||||
// echo_greeting_par(greet: bool, echo_service: EchoServiceInput, greeting_services: []NodeServicePair) -> []string:
|
||||
let seq_result = await echo_greeting_seq(
|
||||
fluence,
|
||||
names,
|
||||
true,
|
||||
@ -694,48 +632,33 @@ async function main() {
|
||||
echo_topos[0].service_id,
|
||||
greeting_topos[0].service_id
|
||||
);
|
||||
console.log("seq result : ", network_result);
|
||||
console.log("seq result : ", seq_result);
|
||||
|
||||
|
||||
network_result = await echo_greeting_seq_2(
|
||||
fluence,
|
||||
names,
|
||||
true,
|
||||
echo_topos[0],
|
||||
greeting_topos[0]
|
||||
);
|
||||
console.log("seq result with improved signature : ", network_result);
|
||||
|
||||
// echo_greeting_par(greet: bool, echo_service: EchoServiceInput, greeting_services: []NodeServicePair) -> []string:
|
||||
network_result = await echo_greeting_par(
|
||||
fluence,
|
||||
true,
|
||||
echo_service,
|
||||
greeting_topos
|
||||
);
|
||||
console.log("par result : ", network_result);
|
||||
|
||||
network_result = await echo_greeting_par_inverse(
|
||||
let par_result = await echo_greeting_par(
|
||||
fluence,
|
||||
true,
|
||||
echo_service,
|
||||
greeting_services
|
||||
);
|
||||
console.log("par inverse result : ", network_result);
|
||||
console.log("par result : ", par_result);
|
||||
|
||||
network_result = await echo_greeting_par_greet(
|
||||
|
||||
par_result = await echo_greeting_par_alternative(
|
||||
fluence,
|
||||
true,
|
||||
echo_service,
|
||||
greeting_services
|
||||
);
|
||||
console.log("par alternative result : ", par_result);
|
||||
|
||||
par_result = await echo_greeting_par_improved(
|
||||
fluence,
|
||||
echo_service,
|
||||
greeting_services
|
||||
);
|
||||
console.log("par result with greet variation : ", network_result);
|
||||
console.log("par improved signature result : ", par_result);
|
||||
|
||||
network_result = await echo_greeting_par_inverse_greet(
|
||||
fluence,
|
||||
echo_service,
|
||||
greeting_services
|
||||
);
|
||||
console.log("par inverse result with greet variation : ", network_result);
|
||||
|
||||
|
||||
return;
|
||||
@ -747,10 +670,9 @@ main()
|
||||
console.error(error);
|
||||
process.exit(1);
|
||||
});
|
||||
|
||||
```
|
||||
|
||||
The client implementation
|
||||
The client implementation:
|
||||
|
||||
* Imports the necessary js-sdk
|
||||
* Imports the Fluence test network information
|
||||
@ -759,7 +681,6 @@ The client implementation
|
||||
* Creates a client handler for our selected testnet and relay node
|
||||
* Runs and logs each of the workflow functions
|
||||
|
||||
|
||||
Let's run our client peer:
|
||||
|
||||
```text
|
||||
@ -769,10 +690,10 @@ npm run start
|
||||
Which gives us the same results as before:
|
||||
|
||||
```text
|
||||
|
||||
created a fluence client 12D3KooWJa3k63oTRhyMAaW4LzGjHTVyThNoxM4i8yxFAZQqN7Q4 with relay 12D3KooWKnEqMfYo9zvfHmqTLpLdiHXPe4SVqUWcWHDJdFGrSmcA
|
||||
created a fluence client 12D3KooWRE4k3qT8Z5x22EjGF3g8vkvo7nPWbkQxRowxkTgfBM6A with relay 12D3KooWKnEqMfYo9zvfHmqTLpLdiHXPe4SVqUWcWHDJdFGrSmcA
|
||||
echo result : Jim,John,Jake,
|
||||
greeting result : Hi, Jim
|
||||
seq result : [ 'Hi, Jim', 'Hi, John', 'Hi, Jake' ]
|
||||
seq result with improved signature : [ 'Hi, Jim', 'Hi, John', 'Hi, Jake' ]
|
||||
par result : [
|
||||
'Hi, Jim',
|
||||
'Hi, Jim',
|
||||
@ -781,7 +702,7 @@ par result : [
|
||||
'Hi, Jake',
|
||||
'Hi, Jake'
|
||||
]
|
||||
par inverse result : [
|
||||
par alternative result : [
|
||||
'Hi, Jim',
|
||||
'Hi, John',
|
||||
'Hi, Jake',
|
||||
@ -789,7 +710,7 @@ par inverse result : [
|
||||
'Hi, John',
|
||||
'Hi, Jake'
|
||||
]
|
||||
par result with greet variation : [
|
||||
par improved signature result : [
|
||||
'Hi, Jim',
|
||||
'Bye, Jim',
|
||||
'Hi, John',
|
||||
@ -797,32 +718,4 @@ par result with greet variation : [
|
||||
'Hi, Jake',
|
||||
'Bye, Jake'
|
||||
]
|
||||
par inverse result with greet variation : [
|
||||
'Hi, Jim',
|
||||
'Hi, John',
|
||||
'Hi, Jake',
|
||||
'Bye, Jim',
|
||||
'Bye, John',
|
||||
'Bye, Jake'
|
||||
]
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -1,71 +0,0 @@
|
||||
(xor
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-)
|
||||
(call %init_peer_id% ("getDataSrv" "greet") [] greet)
|
||||
)
|
||||
(call %init_peer_id% ("getDataSrv" "echo_service") [] echo_service)
|
||||
)
|
||||
(call %init_peer_id% ("getDataSrv" "greeting_services") [] greeting_services)
|
||||
)
|
||||
(call -relay- ("op" "noop") [])
|
||||
)
|
||||
(xor
|
||||
(seq
|
||||
(call -relay- ("op" "noop") [])
|
||||
(call echo_service.$.node! (echo_service.$.service_id! "echo") [echo_service.$.names!] echo_results)
|
||||
)
|
||||
(seq
|
||||
(call -relay- ("op" "noop") [])
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1])
|
||||
)
|
||||
)
|
||||
)
|
||||
(call -relay- ("op" "noop") [])
|
||||
)
|
||||
(fold echo_results result
|
||||
(seq
|
||||
(fold greeting_services greeting_service
|
||||
(seq
|
||||
(seq
|
||||
(par
|
||||
(seq
|
||||
(seq
|
||||
(xor
|
||||
(call greeting_service.$.node! (greeting_service.$.service_id! "greeting") [result.$.echo! greet] $res)
|
||||
(seq
|
||||
(call -relay- ("op" "noop") [])
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2])
|
||||
)
|
||||
)
|
||||
(call -relay- ("op" "noop") [])
|
||||
)
|
||||
(call %init_peer_id% ("op" "noop") [])
|
||||
)
|
||||
(null)
|
||||
)
|
||||
(call -relay- ("op" "noop") [])
|
||||
)
|
||||
(next greeting_service)
|
||||
)
|
||||
)
|
||||
(next result)
|
||||
)
|
||||
)
|
||||
)
|
||||
(call %init_peer_id% ("op" "identity") [$res.$.[5]!])
|
||||
)
|
||||
(xor
|
||||
(call %init_peer_id% ("callbackSrv" "response") [$res])
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3])
|
||||
)
|
||||
)
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 4])
|
||||
)
|
@ -1,68 +0,0 @@
|
||||
(xor
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-)
|
||||
(call %init_peer_id% ("getDataSrv" "echo_service") [] echo_service)
|
||||
)
|
||||
(call %init_peer_id% ("getDataSrv" "greeting_services") [] greeting_services)
|
||||
)
|
||||
(call -relay- ("op" "noop") [])
|
||||
)
|
||||
(xor
|
||||
(seq
|
||||
(call -relay- ("op" "noop") [])
|
||||
(call echo_service.$.node! (echo_service.$.service_id! "echo") [echo_service.$.names!] echo_results)
|
||||
)
|
||||
(seq
|
||||
(call -relay- ("op" "noop") [])
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1])
|
||||
)
|
||||
)
|
||||
)
|
||||
(call -relay- ("op" "noop") [])
|
||||
)
|
||||
(fold echo_results result
|
||||
(seq
|
||||
(fold greeting_services greeting_service
|
||||
(seq
|
||||
(seq
|
||||
(par
|
||||
(seq
|
||||
(seq
|
||||
(xor
|
||||
(call greeting_service.$.node! (greeting_service.$.service_id! "greeting") [result.$.echo! greeting_service.$.greet!] $res)
|
||||
(seq
|
||||
(call -relay- ("op" "noop") [])
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2])
|
||||
)
|
||||
)
|
||||
(call -relay- ("op" "noop") [])
|
||||
)
|
||||
(call %init_peer_id% ("op" "noop") [])
|
||||
)
|
||||
(null)
|
||||
)
|
||||
(call -relay- ("op" "noop") [])
|
||||
)
|
||||
(next greeting_service)
|
||||
)
|
||||
)
|
||||
(next result)
|
||||
)
|
||||
)
|
||||
)
|
||||
(call %init_peer_id% ("op" "identity") [$res.$.[5]!])
|
||||
)
|
||||
(xor
|
||||
(call %init_peer_id% ("callbackSrv" "response") [$res])
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3])
|
||||
)
|
||||
)
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 4])
|
||||
)
|
@ -1,71 +0,0 @@
|
||||
(xor
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-)
|
||||
(call %init_peer_id% ("getDataSrv" "greet") [] greet)
|
||||
)
|
||||
(call %init_peer_id% ("getDataSrv" "echo_service") [] echo_service)
|
||||
)
|
||||
(call %init_peer_id% ("getDataSrv" "greeting_services") [] greeting_services)
|
||||
)
|
||||
(call -relay- ("op" "noop") [])
|
||||
)
|
||||
(xor
|
||||
(seq
|
||||
(call -relay- ("op" "noop") [])
|
||||
(call echo_service.$.node! (echo_service.$.service_id! "echo") [echo_service.$.names!] echo_results)
|
||||
)
|
||||
(seq
|
||||
(call -relay- ("op" "noop") [])
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1])
|
||||
)
|
||||
)
|
||||
)
|
||||
(call -relay- ("op" "noop") [])
|
||||
)
|
||||
(fold greeting_services greeting_service
|
||||
(seq
|
||||
(seq
|
||||
(par
|
||||
(seq
|
||||
(seq
|
||||
(xor
|
||||
(fold echo_results result
|
||||
(seq
|
||||
(call greeting_service.$.node! (greeting_service.$.service_id! "greeting") [result.$.echo! greet] $res)
|
||||
(next result)
|
||||
)
|
||||
)
|
||||
(seq
|
||||
(call -relay- ("op" "noop") [])
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2])
|
||||
)
|
||||
)
|
||||
(call -relay- ("op" "noop") [])
|
||||
)
|
||||
(call %init_peer_id% ("op" "noop") [])
|
||||
)
|
||||
(null)
|
||||
)
|
||||
(call -relay- ("op" "noop") [])
|
||||
)
|
||||
(next greeting_service)
|
||||
)
|
||||
)
|
||||
)
|
||||
(call %init_peer_id% ("op" "identity") [$res.$.[3]!])
|
||||
)
|
||||
(xor
|
||||
(call %init_peer_id% ("callbackSrv" "response") [$res])
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3])
|
||||
)
|
||||
)
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 4])
|
||||
)
|
@ -1,68 +0,0 @@
|
||||
(xor
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-)
|
||||
(call %init_peer_id% ("getDataSrv" "echo_service") [] echo_service)
|
||||
)
|
||||
(call %init_peer_id% ("getDataSrv" "greeting_services") [] greeting_services)
|
||||
)
|
||||
(call -relay- ("op" "noop") [])
|
||||
)
|
||||
(xor
|
||||
(seq
|
||||
(call -relay- ("op" "noop") [])
|
||||
(call echo_service.$.node! (echo_service.$.service_id! "echo") [echo_service.$.names!] echo_results)
|
||||
)
|
||||
(seq
|
||||
(call -relay- ("op" "noop") [])
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1])
|
||||
)
|
||||
)
|
||||
)
|
||||
(call -relay- ("op" "noop") [])
|
||||
)
|
||||
(fold greeting_services greeting_service
|
||||
(seq
|
||||
(seq
|
||||
(par
|
||||
(seq
|
||||
(seq
|
||||
(xor
|
||||
(fold echo_results result
|
||||
(seq
|
||||
(call greeting_service.$.node! (greeting_service.$.service_id! "greeting") [result.$.echo! greeting_service.$.greet!] $res)
|
||||
(next result)
|
||||
)
|
||||
)
|
||||
(seq
|
||||
(call -relay- ("op" "noop") [])
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2])
|
||||
)
|
||||
)
|
||||
(call -relay- ("op" "noop") [])
|
||||
)
|
||||
(call %init_peer_id% ("op" "noop") [])
|
||||
)
|
||||
(null)
|
||||
)
|
||||
(call -relay- ("op" "noop") [])
|
||||
)
|
||||
(next greeting_service)
|
||||
)
|
||||
)
|
||||
)
|
||||
(call %init_peer_id% ("op" "identity") [$res.$.[3]!])
|
||||
)
|
||||
(xor
|
||||
(call %init_peer_id% ("callbackSrv" "response") [$res])
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3])
|
||||
)
|
||||
)
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 4])
|
||||
)
|
@ -1,51 +0,0 @@
|
||||
(xor
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-)
|
||||
(call %init_peer_id% ("getDataSrv" "names") [] names)
|
||||
)
|
||||
(call %init_peer_id% ("getDataSrv" "greet") [] greet)
|
||||
)
|
||||
(call %init_peer_id% ("getDataSrv" "node") [] node)
|
||||
)
|
||||
(call %init_peer_id% ("getDataSrv" "echo_service_id") [] echo_service_id)
|
||||
)
|
||||
(call %init_peer_id% ("getDataSrv" "greeting_service_id") [] greeting_service_id)
|
||||
)
|
||||
(call -relay- ("op" "noop") [])
|
||||
)
|
||||
(xor
|
||||
(seq
|
||||
(seq
|
||||
(call -relay- ("op" "noop") [])
|
||||
(call node (echo_service_id "echo") [names] echo_names)
|
||||
)
|
||||
(fold echo_names result
|
||||
(seq
|
||||
(call node (greeting_service_id "greeting") [result.$.echo! greet] $res)
|
||||
(next result)
|
||||
)
|
||||
)
|
||||
)
|
||||
(seq
|
||||
(call -relay- ("op" "noop") [])
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1])
|
||||
)
|
||||
)
|
||||
)
|
||||
(call -relay- ("op" "noop") [])
|
||||
)
|
||||
(xor
|
||||
(call %init_peer_id% ("callbackSrv" "response") [$res])
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2])
|
||||
)
|
||||
)
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3])
|
||||
)
|
@ -1,57 +0,0 @@
|
||||
(xor
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-)
|
||||
(call %init_peer_id% ("getDataSrv" "names") [] names)
|
||||
)
|
||||
(call %init_peer_id% ("getDataSrv" "greet") [] greet)
|
||||
)
|
||||
(call %init_peer_id% ("getDataSrv" "echo_topo") [] echo_topo)
|
||||
)
|
||||
(call %init_peer_id% ("getDataSrv" "greeting_topo") [] greeting_topo)
|
||||
)
|
||||
(call -relay- ("op" "noop") [])
|
||||
)
|
||||
(xor
|
||||
(seq
|
||||
(call -relay- ("op" "noop") [])
|
||||
(call echo_topo.$.node! (echo_topo.$.service_id! "echo") [names] echo_names)
|
||||
)
|
||||
(seq
|
||||
(seq
|
||||
(call -relay- ("op" "noop") [])
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1])
|
||||
)
|
||||
(call -relay- ("op" "noop") [])
|
||||
)
|
||||
)
|
||||
)
|
||||
(xor
|
||||
(fold echo_names result
|
||||
(seq
|
||||
(call greeting_topo.$.node! (greeting_topo.$.service_id! "greeting") [result.$.echo! greet] $res)
|
||||
(next result)
|
||||
)
|
||||
)
|
||||
(seq
|
||||
(call -relay- ("op" "noop") [])
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2])
|
||||
)
|
||||
)
|
||||
)
|
||||
(call -relay- ("op" "noop") [])
|
||||
)
|
||||
(xor
|
||||
(call %init_peer_id% ("callbackSrv" "response") [$res])
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3])
|
||||
)
|
||||
)
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 4])
|
||||
)
|
@ -17,14 +17,13 @@ func echo(names: []string, node: string, echo_service: string) -> []EchoResult:
|
||||
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:
|
||||
@ -43,25 +42,72 @@ 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 echo service
|
||||
func echo_greeting_par(names: []string, greet: bool, echo_service: EchoServiceInput, greeting_services: []NodeServicePair) -> []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(names)
|
||||
echo_results <- EchoService.echo(echo_service.names)
|
||||
|
||||
for result <- echo_results par:
|
||||
for greeting_service <- greeting_services:
|
||||
for result <- echo_results:
|
||||
par for greeting_service <- greeting_services:
|
||||
GreetingService greeting_service.service_id
|
||||
on greeting_service.node:
|
||||
res_2 <- GreetingService.greeting(result.echo, greet)
|
||||
-- this is super annoying
|
||||
OpString.identity(res_2!2)
|
||||
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
|
||||
|
@ -36,9 +36,23 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
||||
}
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.echo_greeting_par_inverse_greet = exports.echo_greeting_seq_2 = exports.echo_greeting_seq = exports.echo_greeting_par_inverse = exports.echo_greeting_par = exports.echo_greeting_par_greet = void 0;
|
||||
exports.echo_greeting_par_alternative = exports.echo_greeting_seq = exports.greeting = exports.echo = exports.echo_greeting_par = exports.echo_greeting_par_improved = exports.echo_greeting_seq_2 = void 0;
|
||||
var api_unstable_1 = require("@fluencelabs/fluence/dist/api.unstable");
|
||||
function echo_greeting_par_greet(client, echo_service, greeting_services, config) {
|
||||
// Services
|
||||
//OpString
|
||||
//defaultId = "op"
|
||||
//identity: (s: string) => void
|
||||
//END OpString
|
||||
//EchoService
|
||||
//defaultId = undefined
|
||||
//echo: (arg0: string[]) => {echo:string}[]
|
||||
//END EchoService
|
||||
//GreetingService
|
||||
//defaultId = "service-id"
|
||||
//greeting: (arg0: string, arg1: boolean) => string
|
||||
//END GreetingService
|
||||
// Functions
|
||||
function echo_greeting_seq_2(client, names, greet, echo_topo, greeting_topo, config) {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var request, promise;
|
||||
return __generator(this, function (_a) {
|
||||
@ -47,7 +61,53 @@ function echo_greeting_par_greet(client, echo_service, greeting_services, config
|
||||
promise = new Promise(function (resolve, reject) {
|
||||
var r = new api_unstable_1.RequestFlowBuilder()
|
||||
.disableInjections()
|
||||
.withRawScript("\n(xor\n (seq\n (seq\n (seq\n (seq\n (seq\n (seq\n (seq\n (seq\n (call %init_peer_id% (\"getDataSrv\" \"-relay-\") [] -relay-)\n (call %init_peer_id% (\"getDataSrv\" \"echo_service\") [] echo_service)\n )\n (call %init_peer_id% (\"getDataSrv\" \"greeting_services\") [] greeting_services)\n )\n (call -relay- (\"op\" \"noop\") [])\n )\n (xor\n (seq\n (call -relay- (\"op\" \"noop\") [])\n (call echo_service.$.node! (echo_service.$.service_id! \"echo\") [echo_service.$.names!] echo_results)\n )\n (seq\n (call -relay- (\"op\" \"noop\") [])\n (call %init_peer_id% (\"errorHandlingSrv\" \"error\") [%last_error% 1])\n )\n )\n )\n (call -relay- (\"op\" \"noop\") [])\n )\n (fold echo_results result\n (seq\n (fold greeting_services greeting_service\n (seq\n (seq\n (par\n (seq\n (seq\n (xor\n (call greeting_service.$.node! (greeting_service.$.service_id! \"greeting\") [result.$.echo! greeting_service.$.greet!] $res)\n (seq\n (call -relay- (\"op\" \"noop\") [])\n (call %init_peer_id% (\"errorHandlingSrv\" \"error\") [%last_error% 2])\n )\n )\n (call -relay- (\"op\" \"noop\") [])\n )\n (call %init_peer_id% (\"op\" \"noop\") [])\n )\n (null)\n )\n (call -relay- (\"op\" \"noop\") [])\n )\n (next greeting_service)\n )\n )\n (next result)\n )\n )\n )\n (call %init_peer_id% (\"op\" \"identity\") [$res.$.[5]!])\n )\n (xor\n (call %init_peer_id% (\"callbackSrv\" \"response\") [$res])\n (call %init_peer_id% (\"errorHandlingSrv\" \"error\") [%last_error% 3])\n )\n )\n (call %init_peer_id% (\"errorHandlingSrv\" \"error\") [%last_error% 4])\n)\n\n ")
|
||||
.withRawScript("\n(xor\n (seq\n (seq\n (seq\n (seq\n (seq\n (seq\n (seq\n (seq\n (seq\n (call %init_peer_id% (\"getDataSrv\" \"-relay-\") [] -relay-)\n (call %init_peer_id% (\"getDataSrv\" \"names\") [] names)\n )\n (call %init_peer_id% (\"getDataSrv\" \"greet\") [] greet)\n )\n (call %init_peer_id% (\"getDataSrv\" \"echo_topo\") [] echo_topo)\n )\n (call %init_peer_id% (\"getDataSrv\" \"greeting_topo\") [] greeting_topo)\n )\n (call -relay- (\"op\" \"noop\") [])\n )\n (xor\n (seq\n (call -relay- (\"op\" \"noop\") [])\n (call echo_topo.$.node! (echo_topo.$.service_id! \"echo\") [names] echo_names)\n )\n (seq\n (seq\n (call -relay- (\"op\" \"noop\") [])\n (call %init_peer_id% (\"errorHandlingSrv\" \"error\") [%last_error% 1])\n )\n (call -relay- (\"op\" \"noop\") [])\n )\n )\n )\n (xor\n (fold echo_names result\n (seq\n (call greeting_topo.$.node! (greeting_topo.$.service_id! \"greeting\") [result.$.echo! greet] $res)\n (next result)\n )\n )\n (seq\n (call -relay- (\"op\" \"noop\") [])\n (call %init_peer_id% (\"errorHandlingSrv\" \"error\") [%last_error% 2])\n )\n )\n )\n (call -relay- (\"op\" \"noop\") [])\n )\n (xor\n (call %init_peer_id% (\"callbackSrv\" \"response\") [$res])\n (call %init_peer_id% (\"errorHandlingSrv\" \"error\") [%last_error% 3])\n )\n )\n (call %init_peer_id% (\"errorHandlingSrv\" \"error\") [%last_error% 4])\n)\n\n ")
|
||||
.configHandler(function (h) {
|
||||
h.on('getDataSrv', '-relay-', function () {
|
||||
return client.relayPeerId;
|
||||
});
|
||||
h.on('getDataSrv', 'names', function () { return names; });
|
||||
h.on('getDataSrv', 'greet', function () { return greet; });
|
||||
h.on('getDataSrv', 'echo_topo', function () { return echo_topo; });
|
||||
h.on('getDataSrv', 'greeting_topo', function () { return greeting_topo; });
|
||||
h.onEvent('callbackSrv', 'response', function (args) {
|
||||
var res = args[0];
|
||||
resolve(res);
|
||||
});
|
||||
h.onEvent('errorHandlingSrv', 'error', function (args) {
|
||||
// assuming error is the single argument
|
||||
var err = args[0];
|
||||
reject(err);
|
||||
});
|
||||
})
|
||||
.handleScriptError(reject)
|
||||
.handleTimeout(function () {
|
||||
reject('Request timed out for echo_greeting_seq_2');
|
||||
});
|
||||
if (config && config.ttl) {
|
||||
r.withTTL(config.ttl);
|
||||
}
|
||||
request = r.build();
|
||||
});
|
||||
return [4 /*yield*/, client.initiateFlow(request)];
|
||||
case 1:
|
||||
_a.sent();
|
||||
return [2 /*return*/, promise];
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
exports.echo_greeting_seq_2 = echo_greeting_seq_2;
|
||||
function echo_greeting_par_improved(client, echo_service, greeting_services, config) {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var request, promise;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0:
|
||||
promise = new Promise(function (resolve, reject) {
|
||||
var r = new api_unstable_1.RequestFlowBuilder()
|
||||
.disableInjections()
|
||||
.withRawScript("\n(xor\n (seq\n (seq\n (seq\n (seq\n (seq\n (seq\n (seq\n (seq\n (call %init_peer_id% (\"getDataSrv\" \"-relay-\") [] -relay-)\n (call %init_peer_id% (\"getDataSrv\" \"echo_service\") [] echo_service)\n )\n (call %init_peer_id% (\"getDataSrv\" \"greeting_services\") [] greeting_services)\n )\n (call -relay- (\"op\" \"noop\") [])\n )\n (xor\n (seq\n (call -relay- (\"op\" \"noop\") [])\n (call echo_service.$.node! (echo_service.$.service_id! \"echo\") [echo_service.$.names!] echo_results)\n )\n (seq\n (call -relay- (\"op\" \"noop\") [])\n (call %init_peer_id% (\"errorHandlingSrv\" \"error\") [%last_error% 1])\n )\n )\n )\n (call -relay- (\"op\" \"noop\") [])\n )\n (fold echo_results result\n (seq\n (seq\n (par\n (seq\n (seq\n (call -relay- (\"op\" \"noop\") [])\n (fold greeting_services greeting_service\n (seq\n (seq\n (xor\n (call greeting_service.$.node! (greeting_service.$.service_id! \"greeting\") [result.$.echo! greeting_service.$.greet!] $res)\n (seq\n (call -relay- (\"op\" \"noop\") [])\n (call %init_peer_id% (\"errorHandlingSrv\" \"error\") [%last_error% 2])\n )\n )\n (call -relay- (\"op\" \"noop\") [])\n )\n (next greeting_service)\n )\n )\n )\n (call %init_peer_id% (\"op\" \"noop\") [])\n )\n (null)\n )\n (call -relay- (\"op\" \"noop\") [])\n )\n (next result)\n )\n )\n )\n (call %init_peer_id% (\"op\" \"identity\") [$res.$.[5]!])\n )\n (xor\n (call %init_peer_id% (\"callbackSrv\" \"response\") [$res])\n (call %init_peer_id% (\"errorHandlingSrv\" \"error\") [%last_error% 3])\n )\n )\n (call %init_peer_id% (\"errorHandlingSrv\" \"error\") [%last_error% 4])\n)\n\n ")
|
||||
.configHandler(function (h) {
|
||||
h.on('getDataSrv', '-relay-', function () {
|
||||
return client.relayPeerId;
|
||||
@ -66,9 +126,9 @@ function echo_greeting_par_greet(client, echo_service, greeting_services, config
|
||||
})
|
||||
.handleScriptError(reject)
|
||||
.handleTimeout(function () {
|
||||
reject('Request timed out for echo_greeting_par_greet');
|
||||
reject('Request timed out for echo_greeting_par_improved');
|
||||
});
|
||||
if (config === null || config === void 0 ? void 0 : config.ttl) {
|
||||
if (config && config.ttl) {
|
||||
r.withTTL(config.ttl);
|
||||
}
|
||||
request = r.build();
|
||||
@ -81,7 +141,7 @@ function echo_greeting_par_greet(client, echo_service, greeting_services, config
|
||||
});
|
||||
});
|
||||
}
|
||||
exports.echo_greeting_par_greet = echo_greeting_par_greet;
|
||||
exports.echo_greeting_par_improved = echo_greeting_par_improved;
|
||||
function echo_greeting_par(client, greet, echo_service, greeting_services, config) {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var request, promise;
|
||||
@ -91,7 +151,7 @@ function echo_greeting_par(client, greet, echo_service, greeting_services, confi
|
||||
promise = new Promise(function (resolve, reject) {
|
||||
var r = new api_unstable_1.RequestFlowBuilder()
|
||||
.disableInjections()
|
||||
.withRawScript("\n(xor\n (seq\n (seq\n (seq\n (seq\n (seq\n (seq\n (seq\n (seq\n (seq\n (call %init_peer_id% (\"getDataSrv\" \"-relay-\") [] -relay-)\n (call %init_peer_id% (\"getDataSrv\" \"greet\") [] greet)\n )\n (call %init_peer_id% (\"getDataSrv\" \"echo_service\") [] echo_service)\n )\n (call %init_peer_id% (\"getDataSrv\" \"greeting_services\") [] greeting_services)\n )\n (call -relay- (\"op\" \"noop\") [])\n )\n (xor\n (seq\n (call -relay- (\"op\" \"noop\") [])\n (call echo_service.$.node! (echo_service.$.service_id! \"echo\") [echo_service.$.names!] echo_results)\n )\n (seq\n (call -relay- (\"op\" \"noop\") [])\n (call %init_peer_id% (\"errorHandlingSrv\" \"error\") [%last_error% 1])\n )\n )\n )\n (call -relay- (\"op\" \"noop\") [])\n )\n (fold echo_results result\n (seq\n (fold greeting_services greeting_service\n (seq\n (seq\n (par\n (seq\n (seq\n (xor\n (call greeting_service.$.node! (greeting_service.$.service_id! \"greeting\") [result.$.echo! greet] $res)\n (seq\n (call -relay- (\"op\" \"noop\") [])\n (call %init_peer_id% (\"errorHandlingSrv\" \"error\") [%last_error% 2])\n )\n )\n (call -relay- (\"op\" \"noop\") [])\n )\n (call %init_peer_id% (\"op\" \"noop\") [])\n )\n (null)\n )\n (call -relay- (\"op\" \"noop\") [])\n )\n (next greeting_service)\n )\n )\n (next result)\n )\n )\n )\n (call %init_peer_id% (\"op\" \"identity\") [$res.$.[5]!])\n )\n (xor\n (call %init_peer_id% (\"callbackSrv\" \"response\") [$res])\n (call %init_peer_id% (\"errorHandlingSrv\" \"error\") [%last_error% 3])\n )\n )\n (call %init_peer_id% (\"errorHandlingSrv\" \"error\") [%last_error% 4])\n)\n\n ")
|
||||
.withRawScript("\n(xor\n (seq\n (seq\n (seq\n (seq\n (seq\n (seq\n (seq\n (seq\n (seq\n (call %init_peer_id% (\"getDataSrv\" \"-relay-\") [] -relay-)\n (call %init_peer_id% (\"getDataSrv\" \"greet\") [] greet)\n )\n (call %init_peer_id% (\"getDataSrv\" \"echo_service\") [] echo_service)\n )\n (call %init_peer_id% (\"getDataSrv\" \"greeting_services\") [] greeting_services)\n )\n (call -relay- (\"op\" \"noop\") [])\n )\n (xor\n (seq\n (call -relay- (\"op\" \"noop\") [])\n (call echo_service.$.node! (echo_service.$.service_id! \"echo\") [echo_service.$.names!] echo_results)\n )\n (seq\n (call -relay- (\"op\" \"noop\") [])\n (call %init_peer_id% (\"errorHandlingSrv\" \"error\") [%last_error% 1])\n )\n )\n )\n (call -relay- (\"op\" \"noop\") [])\n )\n (fold echo_results result\n (seq\n (seq\n (par\n (seq\n (seq\n (call -relay- (\"op\" \"noop\") [])\n (fold greeting_services greeting_service\n (seq\n (seq\n (xor\n (call greeting_service.$.node! (greeting_service.$.service_id! \"greeting\") [result.$.echo! greet] $res)\n (seq\n (call -relay- (\"op\" \"noop\") [])\n (call %init_peer_id% (\"errorHandlingSrv\" \"error\") [%last_error% 2])\n )\n )\n (call -relay- (\"op\" \"noop\") [])\n )\n (next greeting_service)\n )\n )\n )\n (call %init_peer_id% (\"op\" \"noop\") [])\n )\n (null)\n )\n (call -relay- (\"op\" \"noop\") [])\n )\n (next result)\n )\n )\n )\n (call %init_peer_id% (\"op\" \"identity\") [$res.$.[5]!])\n )\n (xor\n (call %init_peer_id% (\"callbackSrv\" \"response\") [$res])\n (call %init_peer_id% (\"errorHandlingSrv\" \"error\") [%last_error% 3])\n )\n )\n (call %init_peer_id% (\"errorHandlingSrv\" \"error\") [%last_error% 4])\n)\n\n ")
|
||||
.configHandler(function (h) {
|
||||
h.on('getDataSrv', '-relay-', function () {
|
||||
return client.relayPeerId;
|
||||
@ -113,7 +173,7 @@ function echo_greeting_par(client, greet, echo_service, greeting_services, confi
|
||||
.handleTimeout(function () {
|
||||
reject('Request timed out for echo_greeting_par');
|
||||
});
|
||||
if (config === null || config === void 0 ? void 0 : config.ttl) {
|
||||
if (config && config.ttl) {
|
||||
r.withTTL(config.ttl);
|
||||
}
|
||||
request = r.build();
|
||||
@ -127,7 +187,7 @@ function echo_greeting_par(client, greet, echo_service, greeting_services, confi
|
||||
});
|
||||
}
|
||||
exports.echo_greeting_par = echo_greeting_par;
|
||||
function echo_greeting_par_inverse(client, greet, echo_service, greeting_services, config) {
|
||||
function echo(client, names, node, echo_service, config) {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var request, promise;
|
||||
return __generator(this, function (_a) {
|
||||
@ -136,14 +196,14 @@ function echo_greeting_par_inverse(client, greet, echo_service, greeting_service
|
||||
promise = new Promise(function (resolve, reject) {
|
||||
var r = new api_unstable_1.RequestFlowBuilder()
|
||||
.disableInjections()
|
||||
.withRawScript("\n(xor\n (seq\n (seq\n (seq\n (seq\n (seq\n (seq\n (seq\n (seq\n (seq\n (call %init_peer_id% (\"getDataSrv\" \"-relay-\") [] -relay-)\n (call %init_peer_id% (\"getDataSrv\" \"greet\") [] greet)\n )\n (call %init_peer_id% (\"getDataSrv\" \"echo_service\") [] echo_service)\n )\n (call %init_peer_id% (\"getDataSrv\" \"greeting_services\") [] greeting_services)\n )\n (call -relay- (\"op\" \"noop\") [])\n )\n (xor\n (seq\n (call -relay- (\"op\" \"noop\") [])\n (call echo_service.$.node! (echo_service.$.service_id! \"echo\") [echo_service.$.names!] echo_results)\n )\n (seq\n (call -relay- (\"op\" \"noop\") [])\n (call %init_peer_id% (\"errorHandlingSrv\" \"error\") [%last_error% 1])\n )\n )\n )\n (call -relay- (\"op\" \"noop\") [])\n )\n (fold greeting_services greeting_service\n (seq\n (seq\n (par\n (seq\n (seq\n (xor\n (fold echo_results result\n (seq\n (call greeting_service.$.node! (greeting_service.$.service_id! \"greeting\") [result.$.echo! greet] $res)\n (next result)\n )\n )\n (seq\n (call -relay- (\"op\" \"noop\") [])\n (call %init_peer_id% (\"errorHandlingSrv\" \"error\") [%last_error% 2])\n )\n )\n (call -relay- (\"op\" \"noop\") [])\n )\n (call %init_peer_id% (\"op\" \"noop\") [])\n )\n (null)\n )\n (call -relay- (\"op\" \"noop\") [])\n )\n (next greeting_service)\n )\n )\n )\n (call %init_peer_id% (\"op\" \"identity\") [$res.$.[3]!])\n )\n (xor\n (call %init_peer_id% (\"callbackSrv\" \"response\") [$res])\n (call %init_peer_id% (\"errorHandlingSrv\" \"error\") [%last_error% 3])\n )\n )\n (call %init_peer_id% (\"errorHandlingSrv\" \"error\") [%last_error% 4])\n)\n\n ")
|
||||
.withRawScript("\n(xor\n (seq\n (seq\n (seq\n (seq\n (seq\n (seq\n (seq\n (call %init_peer_id% (\"getDataSrv\" \"-relay-\") [] -relay-)\n (call %init_peer_id% (\"getDataSrv\" \"names\") [] names)\n )\n (call %init_peer_id% (\"getDataSrv\" \"node\") [] node)\n )\n (call %init_peer_id% (\"getDataSrv\" \"echo_service\") [] echo_service)\n )\n (call -relay- (\"op\" \"noop\") [])\n )\n (xor\n (seq\n (call -relay- (\"op\" \"noop\") [])\n (call node (echo_service \"echo\") [names] res)\n )\n (seq\n (call -relay- (\"op\" \"noop\") [])\n (call %init_peer_id% (\"errorHandlingSrv\" \"error\") [%last_error% 1])\n )\n )\n )\n (call -relay- (\"op\" \"noop\") [])\n )\n (xor\n (call %init_peer_id% (\"callbackSrv\" \"response\") [res])\n (call %init_peer_id% (\"errorHandlingSrv\" \"error\") [%last_error% 2])\n )\n )\n (call %init_peer_id% (\"errorHandlingSrv\" \"error\") [%last_error% 3])\n)\n\n ")
|
||||
.configHandler(function (h) {
|
||||
h.on('getDataSrv', '-relay-', function () {
|
||||
return client.relayPeerId;
|
||||
});
|
||||
h.on('getDataSrv', 'greet', function () { return greet; });
|
||||
h.on('getDataSrv', 'names', function () { return names; });
|
||||
h.on('getDataSrv', 'node', function () { return node; });
|
||||
h.on('getDataSrv', 'echo_service', function () { return echo_service; });
|
||||
h.on('getDataSrv', 'greeting_services', function () { return greeting_services; });
|
||||
h.onEvent('callbackSrv', 'response', function (args) {
|
||||
var res = args[0];
|
||||
resolve(res);
|
||||
@ -156,9 +216,9 @@ function echo_greeting_par_inverse(client, greet, echo_service, greeting_service
|
||||
})
|
||||
.handleScriptError(reject)
|
||||
.handleTimeout(function () {
|
||||
reject('Request timed out for echo_greeting_par_inverse');
|
||||
reject('Request timed out for echo');
|
||||
});
|
||||
if (config === null || config === void 0 ? void 0 : config.ttl) {
|
||||
if (config && config.ttl) {
|
||||
r.withTTL(config.ttl);
|
||||
}
|
||||
request = r.build();
|
||||
@ -171,7 +231,53 @@ function echo_greeting_par_inverse(client, greet, echo_service, greeting_service
|
||||
});
|
||||
});
|
||||
}
|
||||
exports.echo_greeting_par_inverse = echo_greeting_par_inverse;
|
||||
exports.echo = echo;
|
||||
function greeting(client, name, greet, node, greeting_service_id, config) {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var request, promise;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0:
|
||||
promise = new Promise(function (resolve, reject) {
|
||||
var r = new api_unstable_1.RequestFlowBuilder()
|
||||
.disableInjections()
|
||||
.withRawScript("\n(xor\n (seq\n (seq\n (seq\n (seq\n (seq\n (seq\n (seq\n (seq\n (call %init_peer_id% (\"getDataSrv\" \"-relay-\") [] -relay-)\n (call %init_peer_id% (\"getDataSrv\" \"name\") [] name)\n )\n (call %init_peer_id% (\"getDataSrv\" \"greet\") [] greet)\n )\n (call %init_peer_id% (\"getDataSrv\" \"node\") [] node)\n )\n (call %init_peer_id% (\"getDataSrv\" \"greeting_service_id\") [] greeting_service_id)\n )\n (call -relay- (\"op\" \"noop\") [])\n )\n (xor\n (seq\n (call -relay- (\"op\" \"noop\") [])\n (call node (greeting_service_id \"greeting\") [name greet] res)\n )\n (seq\n (call -relay- (\"op\" \"noop\") [])\n (call %init_peer_id% (\"errorHandlingSrv\" \"error\") [%last_error% 1])\n )\n )\n )\n (call -relay- (\"op\" \"noop\") [])\n )\n (xor\n (call %init_peer_id% (\"callbackSrv\" \"response\") [res])\n (call %init_peer_id% (\"errorHandlingSrv\" \"error\") [%last_error% 2])\n )\n )\n (call %init_peer_id% (\"errorHandlingSrv\" \"error\") [%last_error% 3])\n)\n\n ")
|
||||
.configHandler(function (h) {
|
||||
h.on('getDataSrv', '-relay-', function () {
|
||||
return client.relayPeerId;
|
||||
});
|
||||
h.on('getDataSrv', 'name', function () { return name; });
|
||||
h.on('getDataSrv', 'greet', function () { return greet; });
|
||||
h.on('getDataSrv', 'node', function () { return node; });
|
||||
h.on('getDataSrv', 'greeting_service_id', function () { return greeting_service_id; });
|
||||
h.onEvent('callbackSrv', 'response', function (args) {
|
||||
var res = args[0];
|
||||
resolve(res);
|
||||
});
|
||||
h.onEvent('errorHandlingSrv', 'error', function (args) {
|
||||
// assuming error is the single argument
|
||||
var err = args[0];
|
||||
reject(err);
|
||||
});
|
||||
})
|
||||
.handleScriptError(reject)
|
||||
.handleTimeout(function () {
|
||||
reject('Request timed out for greeting');
|
||||
});
|
||||
if (config && config.ttl) {
|
||||
r.withTTL(config.ttl);
|
||||
}
|
||||
request = r.build();
|
||||
});
|
||||
return [4 /*yield*/, client.initiateFlow(request)];
|
||||
case 1:
|
||||
_a.sent();
|
||||
return [2 /*return*/, promise];
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
exports.greeting = greeting;
|
||||
function echo_greeting_seq(client, names, greet, node, echo_service_id, greeting_service_id, config) {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var request, promise;
|
||||
@ -205,7 +311,7 @@ function echo_greeting_seq(client, names, greet, node, echo_service_id, greeting
|
||||
.handleTimeout(function () {
|
||||
reject('Request timed out for echo_greeting_seq');
|
||||
});
|
||||
if (config === null || config === void 0 ? void 0 : config.ttl) {
|
||||
if (config && config.ttl) {
|
||||
r.withTTL(config.ttl);
|
||||
}
|
||||
request = r.build();
|
||||
@ -219,7 +325,7 @@ function echo_greeting_seq(client, names, greet, node, echo_service_id, greeting
|
||||
});
|
||||
}
|
||||
exports.echo_greeting_seq = echo_greeting_seq;
|
||||
function echo_greeting_seq_2(client, names, greet, echo_topo, greeting_topo, config) {
|
||||
function echo_greeting_par_alternative(client, greet, echo_service, greeting_services, config) {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var request, promise;
|
||||
return __generator(this, function (_a) {
|
||||
@ -228,57 +334,12 @@ function echo_greeting_seq_2(client, names, greet, echo_topo, greeting_topo, con
|
||||
promise = new Promise(function (resolve, reject) {
|
||||
var r = new api_unstable_1.RequestFlowBuilder()
|
||||
.disableInjections()
|
||||
.withRawScript("\n(xor\n (seq\n (seq\n (seq\n (seq\n (seq\n (seq\n (seq\n (seq\n (seq\n (call %init_peer_id% (\"getDataSrv\" \"-relay-\") [] -relay-)\n (call %init_peer_id% (\"getDataSrv\" \"names\") [] names)\n )\n (call %init_peer_id% (\"getDataSrv\" \"greet\") [] greet)\n )\n (call %init_peer_id% (\"getDataSrv\" \"echo_topo\") [] echo_topo)\n )\n (call %init_peer_id% (\"getDataSrv\" \"greeting_topo\") [] greeting_topo)\n )\n (call -relay- (\"op\" \"noop\") [])\n )\n (xor\n (seq\n (call -relay- (\"op\" \"noop\") [])\n (call echo_topo.$.node! (echo_topo.$.service_id! \"echo\") [names] echo_names)\n )\n (seq\n (seq\n (call -relay- (\"op\" \"noop\") [])\n (call %init_peer_id% (\"errorHandlingSrv\" \"error\") [%last_error% 1])\n )\n (call -relay- (\"op\" \"noop\") [])\n )\n )\n )\n (xor\n (fold echo_names result\n (seq\n (call greeting_topo.$.node! (greeting_topo.$.service_id! \"greeting\") [result.$.echo! greet] $res)\n (next result)\n )\n )\n (seq\n (call -relay- (\"op\" \"noop\") [])\n (call %init_peer_id% (\"errorHandlingSrv\" \"error\") [%last_error% 2])\n )\n )\n )\n (call -relay- (\"op\" \"noop\") [])\n )\n (xor\n (call %init_peer_id% (\"callbackSrv\" \"response\") [$res])\n (call %init_peer_id% (\"errorHandlingSrv\" \"error\") [%last_error% 3])\n )\n )\n (call %init_peer_id% (\"errorHandlingSrv\" \"error\") [%last_error% 4])\n)\n\n ")
|
||||
.withRawScript("\n(xor\n (seq\n (seq\n (seq\n (seq\n (seq\n (seq\n (seq\n (seq\n (seq\n (call %init_peer_id% (\"getDataSrv\" \"-relay-\") [] -relay-)\n (call %init_peer_id% (\"getDataSrv\" \"greet\") [] greet)\n )\n (call %init_peer_id% (\"getDataSrv\" \"echo_service\") [] echo_service)\n )\n (call %init_peer_id% (\"getDataSrv\" \"greeting_services\") [] greeting_services)\n )\n (call -relay- (\"op\" \"noop\") [])\n )\n (xor\n (seq\n (call -relay- (\"op\" \"noop\") [])\n (call echo_service.$.node! (echo_service.$.service_id! \"echo\") [echo_service.$.names!] echo_results)\n )\n (seq\n (call -relay- (\"op\" \"noop\") [])\n (call %init_peer_id% (\"errorHandlingSrv\" \"error\") [%last_error% 1])\n )\n )\n )\n (call -relay- (\"op\" \"noop\") [])\n )\n (fold echo_results result\n (seq\n (fold greeting_services greeting_service\n (seq\n (seq\n (par\n (seq\n (seq\n (xor\n (call greeting_service.$.node! (greeting_service.$.service_id! \"greeting\") [result.$.echo! greet] $res)\n (seq\n (call -relay- (\"op\" \"noop\") [])\n (call %init_peer_id% (\"errorHandlingSrv\" \"error\") [%last_error% 2])\n )\n )\n (call -relay- (\"op\" \"noop\") [])\n )\n (call %init_peer_id% (\"op\" \"noop\") [])\n )\n (null)\n )\n (call -relay- (\"op\" \"noop\") [])\n )\n (next greeting_service)\n )\n )\n (next result)\n )\n )\n )\n (call %init_peer_id% (\"op\" \"identity\") [$res.$.[5]!])\n )\n (xor\n (call %init_peer_id% (\"callbackSrv\" \"response\") [$res])\n (call %init_peer_id% (\"errorHandlingSrv\" \"error\") [%last_error% 3])\n )\n )\n (call %init_peer_id% (\"errorHandlingSrv\" \"error\") [%last_error% 4])\n)\n\n ")
|
||||
.configHandler(function (h) {
|
||||
h.on('getDataSrv', '-relay-', function () {
|
||||
return client.relayPeerId;
|
||||
});
|
||||
h.on('getDataSrv', 'names', function () { return names; });
|
||||
h.on('getDataSrv', 'greet', function () { return greet; });
|
||||
h.on('getDataSrv', 'echo_topo', function () { return echo_topo; });
|
||||
h.on('getDataSrv', 'greeting_topo', function () { return greeting_topo; });
|
||||
h.onEvent('callbackSrv', 'response', function (args) {
|
||||
var res = args[0];
|
||||
resolve(res);
|
||||
});
|
||||
h.onEvent('errorHandlingSrv', 'error', function (args) {
|
||||
// assuming error is the single argument
|
||||
var err = args[0];
|
||||
reject(err);
|
||||
});
|
||||
})
|
||||
.handleScriptError(reject)
|
||||
.handleTimeout(function () {
|
||||
reject('Request timed out for echo_greeting_seq_2');
|
||||
});
|
||||
if (config === null || config === void 0 ? void 0 : config.ttl) {
|
||||
r.withTTL(config.ttl);
|
||||
}
|
||||
request = r.build();
|
||||
});
|
||||
return [4 /*yield*/, client.initiateFlow(request)];
|
||||
case 1:
|
||||
_a.sent();
|
||||
return [2 /*return*/, promise];
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
exports.echo_greeting_seq_2 = echo_greeting_seq_2;
|
||||
function echo_greeting_par_inverse_greet(client, echo_service, greeting_services, config) {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var request, promise;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0:
|
||||
promise = new Promise(function (resolve, reject) {
|
||||
var r = new api_unstable_1.RequestFlowBuilder()
|
||||
.disableInjections()
|
||||
.withRawScript("\n(xor\n (seq\n (seq\n (seq\n (seq\n (seq\n (seq\n (seq\n (seq\n (call %init_peer_id% (\"getDataSrv\" \"-relay-\") [] -relay-)\n (call %init_peer_id% (\"getDataSrv\" \"echo_service\") [] echo_service)\n )\n (call %init_peer_id% (\"getDataSrv\" \"greeting_services\") [] greeting_services)\n )\n (call -relay- (\"op\" \"noop\") [])\n )\n (xor\n (seq\n (call -relay- (\"op\" \"noop\") [])\n (call echo_service.$.node! (echo_service.$.service_id! \"echo\") [echo_service.$.names!] echo_results)\n )\n (seq\n (call -relay- (\"op\" \"noop\") [])\n (call %init_peer_id% (\"errorHandlingSrv\" \"error\") [%last_error% 1])\n )\n )\n )\n (call -relay- (\"op\" \"noop\") [])\n )\n (fold greeting_services greeting_service\n (seq\n (seq\n (par\n (seq\n (seq\n (xor\n (fold echo_results result\n (seq\n (call greeting_service.$.node! (greeting_service.$.service_id! \"greeting\") [result.$.echo! greeting_service.$.greet!] $res)\n (next result)\n )\n )\n (seq\n (call -relay- (\"op\" \"noop\") [])\n (call %init_peer_id% (\"errorHandlingSrv\" \"error\") [%last_error% 2])\n )\n )\n (call -relay- (\"op\" \"noop\") [])\n )\n (call %init_peer_id% (\"op\" \"noop\") [])\n )\n (null)\n )\n (call -relay- (\"op\" \"noop\") [])\n )\n (next greeting_service)\n )\n )\n )\n (call %init_peer_id% (\"op\" \"identity\") [$res.$.[3]!])\n )\n (xor\n (call %init_peer_id% (\"callbackSrv\" \"response\") [$res])\n (call %init_peer_id% (\"errorHandlingSrv\" \"error\") [%last_error% 3])\n )\n )\n (call %init_peer_id% (\"errorHandlingSrv\" \"error\") [%last_error% 4])\n)\n\n ")
|
||||
.configHandler(function (h) {
|
||||
h.on('getDataSrv', '-relay-', function () {
|
||||
return client.relayPeerId;
|
||||
});
|
||||
h.on('getDataSrv', 'echo_service', function () { return echo_service; });
|
||||
h.on('getDataSrv', 'greeting_services', function () { return greeting_services; });
|
||||
h.onEvent('callbackSrv', 'response', function (args) {
|
||||
@ -293,9 +354,9 @@ function echo_greeting_par_inverse_greet(client, echo_service, greeting_services
|
||||
})
|
||||
.handleScriptError(reject)
|
||||
.handleTimeout(function () {
|
||||
reject('Request timed out for echo_greeting_par_inverse_greet');
|
||||
reject('Request timed out for echo_greeting_par_alternative');
|
||||
});
|
||||
if (config === null || config === void 0 ? void 0 : config.ttl) {
|
||||
if (config && config.ttl) {
|
||||
r.withTTL(config.ttl);
|
||||
}
|
||||
request = r.build();
|
||||
@ -308,4 +369,4 @@ function echo_greeting_par_inverse_greet(client, echo_service, greeting_services
|
||||
});
|
||||
});
|
||||
}
|
||||
exports.echo_greeting_par_inverse_greet = echo_greeting_par_inverse_greet;
|
||||
exports.echo_greeting_par_alternative = echo_greeting_par_alternative;
|
||||
|
@ -95,38 +95,42 @@ var names = ["Jim", "John", "Jake"];
|
||||
// let greeting_service =
|
||||
function main() {
|
||||
return __awaiter(this, void 0, void 0, function () {
|
||||
var fluence, network_result;
|
||||
var fluence, echo_result, result, _i, echo_result_1, item, greeting_result, seq_result, par_result;
|
||||
return __generator(this, function (_a) {
|
||||
switch (_a.label) {
|
||||
case 0: return [4 /*yield*/, fluence_1.createClient(fluence_network_environment_1.krasnodar[2])];
|
||||
case 1:
|
||||
fluence = _a.sent();
|
||||
console.log("created a fluence client %s with relay %s", fluence.selfPeerId, fluence.relayPeerId);
|
||||
return [4 /*yield*/, echo_greeter_1.echo_greeting_seq(fluence, names, true, echo_topos[0].node, echo_topos[0].service_id, greeting_topos[0].service_id)];
|
||||
return [4 /*yield*/, echo_greeter_1.echo(fluence, names, echo_topos[0].node, echo_topos[0].service_id)];
|
||||
case 2:
|
||||
network_result = _a.sent();
|
||||
console.log("seq result : ", network_result);
|
||||
return [4 /*yield*/, echo_greeter_1.echo_greeting_seq_2(fluence, names, true, echo_topos[0], greeting_topos[0])];
|
||||
echo_result = _a.sent();
|
||||
result = "";
|
||||
for (_i = 0, echo_result_1 = echo_result; _i < echo_result_1.length; _i++) {
|
||||
item = echo_result_1[_i];
|
||||
result += item.echo + ",";
|
||||
}
|
||||
console.log("echo result : ", result);
|
||||
return [4 /*yield*/, echo_greeter_1.greeting(fluence, names[0], true, greeting_topos[0].node, greeting_topos[0].service_id)];
|
||||
case 3:
|
||||
network_result = _a.sent();
|
||||
console.log("seq result with improved signature : ", network_result);
|
||||
return [4 /*yield*/, echo_greeter_1.echo_greeting_par(fluence, true, echo_service, greeting_topos)];
|
||||
greeting_result = _a.sent();
|
||||
console.log("greeting result : ", greeting_result);
|
||||
return [4 /*yield*/, echo_greeter_1.echo_greeting_seq(fluence, names, true, echo_topos[0].node, echo_topos[0].service_id, greeting_topos[0].service_id)];
|
||||
case 4:
|
||||
// echo_greeting_par(greet: bool, echo_service: EchoServiceInput, greeting_services: []NodeServicePair) -> []string:
|
||||
network_result = _a.sent();
|
||||
console.log("par result : ", network_result);
|
||||
return [4 /*yield*/, echo_greeter_1.echo_greeting_par_inverse(fluence, true, echo_service, greeting_services)];
|
||||
seq_result = _a.sent();
|
||||
console.log("seq result : ", seq_result);
|
||||
return [4 /*yield*/, echo_greeter_1.echo_greeting_par(fluence, true, echo_service, greeting_services)];
|
||||
case 5:
|
||||
network_result = _a.sent();
|
||||
console.log("par inverse result : ", network_result);
|
||||
return [4 /*yield*/, echo_greeter_1.echo_greeting_par_greet(fluence, echo_service, greeting_services)];
|
||||
par_result = _a.sent();
|
||||
console.log("par result : ", par_result);
|
||||
return [4 /*yield*/, echo_greeter_1.echo_greeting_par_alternative(fluence, true, echo_service, greeting_services)];
|
||||
case 6:
|
||||
network_result = _a.sent();
|
||||
console.log("par result with greet variation : ", network_result);
|
||||
return [4 /*yield*/, echo_greeter_1.echo_greeting_par_inverse_greet(fluence, echo_service, greeting_services)];
|
||||
par_result = _a.sent();
|
||||
console.log("par alternative result : ", par_result);
|
||||
return [4 /*yield*/, echo_greeter_1.echo_greeting_par_improved(fluence, echo_service, greeting_services)];
|
||||
case 7:
|
||||
network_result = _a.sent();
|
||||
console.log("par inverse result with greet variation : ", network_result);
|
||||
par_result = _a.sent();
|
||||
console.log("par improved signature result : ", par_result);
|
||||
return [2 /*return*/];
|
||||
}
|
||||
});
|
||||
|
1977
aqua-examples/echo-greeter/client-peer/package-lock.json
generated
1977
aqua-examples/echo-greeter/client-peer/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -13,13 +13,13 @@
|
||||
"package-lock.json"
|
||||
],
|
||||
"dependencies": {
|
||||
"@fluencelabs/aqua-lib": "^0.1.9",
|
||||
"@fluencelabs/fluence": "^0.9.53",
|
||||
"@fluencelabs/aqua-lib": "^0.1.14",
|
||||
"@fluencelabs/fluence": "^0.10.1",
|
||||
"@fluencelabs/fluence-network-environment": "^1.0.10",
|
||||
"it-all": "^1.0.5"
|
||||
},
|
||||
"scripts": {
|
||||
"compile-aqua": "aqua-cli -i ../aqua-scripts -o src/",
|
||||
"compile-aqua": "aqua -i ../aqua-scripts -o src/",
|
||||
"prebuild": "npm run compile-aqua",
|
||||
"build": "tsc",
|
||||
"prestart:local": "npm run build",
|
||||
@ -43,7 +43,7 @@
|
||||
},
|
||||
"homepage": "git+https://github.com/fluencelabs/examples/aqua-examples/echo-greeter#readme",
|
||||
"devDependencies": {
|
||||
"@fluencelabs/aqua-cli": "0.1.9-163",
|
||||
"@fluencelabs/aqua": "0.2.2-221",
|
||||
"typescript": "^3.9.5"
|
||||
}
|
||||
}
|
||||
|
@ -3,7 +3,7 @@
|
||||
* This file is auto-generated. Do not edit manually: changes may be erased.
|
||||
* Generated by Aqua compiler: https://github.com/fluencelabs/aqua/.
|
||||
* If you find any bugs, please write an issue on GitHub: https://github.com/fluencelabs/aqua/issues
|
||||
* Aqua version: 0.1.9-163
|
||||
* Aqua version: 0.2.2-221
|
||||
*
|
||||
*/
|
||||
import { FluenceClient, PeerIdB58 } from '@fluencelabs/fluence';
|
||||
@ -11,8 +11,138 @@ import { RequestFlowBuilder } from '@fluencelabs/fluence/dist/api.unstable';
|
||||
import { RequestFlow } from '@fluencelabs/fluence/dist/internal/RequestFlow';
|
||||
|
||||
|
||||
// Services
|
||||
|
||||
export async function echo_greeting_par_greet(client: FluenceClient, echo_service: {names:string[];node:string;service_id:string}, greeting_services: {greet:boolean;node:string;service_id:string}[], config?: {ttl?: number}): Promise<string[]> {
|
||||
//OpString
|
||||
//defaultId = "op"
|
||||
|
||||
//identity: (s: string) => void
|
||||
//END OpString
|
||||
|
||||
|
||||
|
||||
|
||||
//EchoService
|
||||
//defaultId = undefined
|
||||
|
||||
//echo: (arg0: string[]) => {echo:string}[]
|
||||
//END EchoService
|
||||
|
||||
|
||||
|
||||
|
||||
//GreetingService
|
||||
//defaultId = "service-id"
|
||||
|
||||
//greeting: (arg0: string, arg1: boolean) => string
|
||||
//END GreetingService
|
||||
|
||||
|
||||
|
||||
// Functions
|
||||
|
||||
export async function echo_greeting_seq_2(client: FluenceClient, names: string[], greet: boolean, echo_topo: {node:string;service_id:string}, greeting_topo: {node:string;service_id:string}, config?: {ttl?: number}): Promise<string[]> {
|
||||
let request: RequestFlow;
|
||||
const promise = new Promise<string[]>((resolve, reject) => {
|
||||
const r = new RequestFlowBuilder()
|
||||
.disableInjections()
|
||||
.withRawScript(
|
||||
`
|
||||
(xor
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-)
|
||||
(call %init_peer_id% ("getDataSrv" "names") [] names)
|
||||
)
|
||||
(call %init_peer_id% ("getDataSrv" "greet") [] greet)
|
||||
)
|
||||
(call %init_peer_id% ("getDataSrv" "echo_topo") [] echo_topo)
|
||||
)
|
||||
(call %init_peer_id% ("getDataSrv" "greeting_topo") [] greeting_topo)
|
||||
)
|
||||
(call -relay- ("op" "noop") [])
|
||||
)
|
||||
(xor
|
||||
(seq
|
||||
(call -relay- ("op" "noop") [])
|
||||
(call echo_topo.$.node! (echo_topo.$.service_id! "echo") [names] echo_names)
|
||||
)
|
||||
(seq
|
||||
(seq
|
||||
(call -relay- ("op" "noop") [])
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1])
|
||||
)
|
||||
(call -relay- ("op" "noop") [])
|
||||
)
|
||||
)
|
||||
)
|
||||
(xor
|
||||
(fold echo_names result
|
||||
(seq
|
||||
(call greeting_topo.$.node! (greeting_topo.$.service_id! "greeting") [result.$.echo! greet] $res)
|
||||
(next result)
|
||||
)
|
||||
)
|
||||
(seq
|
||||
(call -relay- ("op" "noop") [])
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2])
|
||||
)
|
||||
)
|
||||
)
|
||||
(call -relay- ("op" "noop") [])
|
||||
)
|
||||
(xor
|
||||
(call %init_peer_id% ("callbackSrv" "response") [$res])
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3])
|
||||
)
|
||||
)
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 4])
|
||||
)
|
||||
|
||||
`,
|
||||
)
|
||||
.configHandler((h) => {
|
||||
h.on('getDataSrv', '-relay-', () => {
|
||||
return client.relayPeerId!;
|
||||
});
|
||||
h.on('getDataSrv', 'names', () => {return names;});
|
||||
h.on('getDataSrv', 'greet', () => {return greet;});
|
||||
h.on('getDataSrv', 'echo_topo', () => {return echo_topo;});
|
||||
h.on('getDataSrv', 'greeting_topo', () => {return greeting_topo;});
|
||||
h.onEvent('callbackSrv', 'response', (args) => {
|
||||
const [res] = args;
|
||||
resolve(res);
|
||||
});
|
||||
|
||||
h.onEvent('errorHandlingSrv', 'error', (args) => {
|
||||
// assuming error is the single argument
|
||||
const [err] = args;
|
||||
reject(err);
|
||||
});
|
||||
})
|
||||
.handleScriptError(reject)
|
||||
.handleTimeout(() => {
|
||||
reject('Request timed out for echo_greeting_seq_2');
|
||||
})
|
||||
if(config && config.ttl) {
|
||||
r.withTTL(config.ttl)
|
||||
}
|
||||
request = r.build();
|
||||
});
|
||||
await client.initiateFlow(request!);
|
||||
return promise;
|
||||
}
|
||||
|
||||
|
||||
|
||||
export async function echo_greeting_par_improved(client: FluenceClient, echo_service: {names:string[];node:string;service_id:string}, greeting_services: {greet:boolean;node:string;service_id:string}[], config?: {ttl?: number}): Promise<string[]> {
|
||||
let request: RequestFlow;
|
||||
const promise = new Promise<string[]>((resolve, reject) => {
|
||||
const r = new RequestFlowBuilder()
|
||||
@ -49,11 +179,13 @@ export async function echo_greeting_par_greet(client: FluenceClient, echo_servic
|
||||
(call -relay- ("op" "noop") [])
|
||||
)
|
||||
(fold echo_results result
|
||||
(seq
|
||||
(fold greeting_services greeting_service
|
||||
(seq
|
||||
(seq
|
||||
(par
|
||||
(seq
|
||||
(seq
|
||||
(call -relay- ("op" "noop") [])
|
||||
(fold greeting_services greeting_service
|
||||
(seq
|
||||
(seq
|
||||
(xor
|
||||
@ -65,15 +197,16 @@ export async function echo_greeting_par_greet(client: FluenceClient, echo_servic
|
||||
)
|
||||
(call -relay- ("op" "noop") [])
|
||||
)
|
||||
(next greeting_service)
|
||||
)
|
||||
)
|
||||
)
|
||||
(call %init_peer_id% ("op" "noop") [])
|
||||
)
|
||||
(null)
|
||||
)
|
||||
(call -relay- ("op" "noop") [])
|
||||
)
|
||||
(next greeting_service)
|
||||
)
|
||||
)
|
||||
(next result)
|
||||
)
|
||||
)
|
||||
@ -109,9 +242,9 @@ h.on('getDataSrv', 'greeting_services', () => {return greeting_services;});
|
||||
})
|
||||
.handleScriptError(reject)
|
||||
.handleTimeout(() => {
|
||||
reject('Request timed out for echo_greeting_par_greet');
|
||||
reject('Request timed out for echo_greeting_par_improved');
|
||||
})
|
||||
if(config?.ttl) {
|
||||
if(config && config.ttl) {
|
||||
r.withTTL(config.ttl)
|
||||
}
|
||||
request = r.build();
|
||||
@ -162,11 +295,13 @@ export async function echo_greeting_par(client: FluenceClient, greet: boolean, e
|
||||
(call -relay- ("op" "noop") [])
|
||||
)
|
||||
(fold echo_results result
|
||||
(seq
|
||||
(fold greeting_services greeting_service
|
||||
(seq
|
||||
(seq
|
||||
(par
|
||||
(seq
|
||||
(seq
|
||||
(call -relay- ("op" "noop") [])
|
||||
(fold greeting_services greeting_service
|
||||
(seq
|
||||
(seq
|
||||
(xor
|
||||
@ -178,15 +313,16 @@ export async function echo_greeting_par(client: FluenceClient, greet: boolean, e
|
||||
)
|
||||
(call -relay- ("op" "noop") [])
|
||||
)
|
||||
(next greeting_service)
|
||||
)
|
||||
)
|
||||
)
|
||||
(call %init_peer_id% ("op" "noop") [])
|
||||
)
|
||||
(null)
|
||||
)
|
||||
(call -relay- ("op" "noop") [])
|
||||
)
|
||||
(next greeting_service)
|
||||
)
|
||||
)
|
||||
(next result)
|
||||
)
|
||||
)
|
||||
@ -225,7 +361,7 @@ h.on('getDataSrv', 'greeting_services', () => {return greeting_services;});
|
||||
.handleTimeout(() => {
|
||||
reject('Request timed out for echo_greeting_par');
|
||||
})
|
||||
if(config?.ttl) {
|
||||
if(config && config.ttl) {
|
||||
r.withTTL(config.ttl)
|
||||
}
|
||||
request = r.build();
|
||||
@ -236,9 +372,9 @@ h.on('getDataSrv', 'greeting_services', () => {return greeting_services;});
|
||||
|
||||
|
||||
|
||||
export async function echo_greeting_par_inverse(client: FluenceClient, greet: boolean, echo_service: {names:string[];node:string;service_id:string}, greeting_services: {node:string;service_id:string}[], config?: {ttl?: number}): Promise<string[]> {
|
||||
export async function echo(client: FluenceClient, names: string[], node: string, echo_service: string, config?: {ttl?: number}): Promise<{echo:string}[]> {
|
||||
let request: RequestFlow;
|
||||
const promise = new Promise<string[]>((resolve, reject) => {
|
||||
const promise = new Promise<{echo:string}[]>((resolve, reject) => {
|
||||
const r = new RequestFlowBuilder()
|
||||
.disableInjections()
|
||||
.withRawScript(
|
||||
@ -248,24 +384,22 @@ export async function echo_greeting_par_inverse(client: FluenceClient, greet: bo
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-)
|
||||
(call %init_peer_id% ("getDataSrv" "greet") [] greet)
|
||||
(call %init_peer_id% ("getDataSrv" "names") [] names)
|
||||
)
|
||||
(call %init_peer_id% ("getDataSrv" "node") [] node)
|
||||
)
|
||||
(call %init_peer_id% ("getDataSrv" "echo_service") [] echo_service)
|
||||
)
|
||||
(call %init_peer_id% ("getDataSrv" "greeting_services") [] greeting_services)
|
||||
)
|
||||
(call -relay- ("op" "noop") [])
|
||||
)
|
||||
(xor
|
||||
(seq
|
||||
(call -relay- ("op" "noop") [])
|
||||
(call echo_service.$.node! (echo_service.$.service_id! "echo") [echo_service.$.names!] echo_results)
|
||||
(call node (echo_service "echo") [names] res)
|
||||
)
|
||||
(seq
|
||||
(call -relay- ("op" "noop") [])
|
||||
@ -275,44 +409,12 @@ export async function echo_greeting_par_inverse(client: FluenceClient, greet: bo
|
||||
)
|
||||
(call -relay- ("op" "noop") [])
|
||||
)
|
||||
(fold greeting_services greeting_service
|
||||
(seq
|
||||
(seq
|
||||
(par
|
||||
(seq
|
||||
(seq
|
||||
(xor
|
||||
(fold echo_results result
|
||||
(seq
|
||||
(call greeting_service.$.node! (greeting_service.$.service_id! "greeting") [result.$.echo! greet] $res)
|
||||
(next result)
|
||||
)
|
||||
)
|
||||
(seq
|
||||
(call -relay- ("op" "noop") [])
|
||||
(call %init_peer_id% ("callbackSrv" "response") [res])
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2])
|
||||
)
|
||||
)
|
||||
(call -relay- ("op" "noop") [])
|
||||
)
|
||||
(call %init_peer_id% ("op" "noop") [])
|
||||
)
|
||||
(null)
|
||||
)
|
||||
(call -relay- ("op" "noop") [])
|
||||
)
|
||||
(next greeting_service)
|
||||
)
|
||||
)
|
||||
)
|
||||
(call %init_peer_id% ("op" "identity") [$res.$.[3]!])
|
||||
)
|
||||
(xor
|
||||
(call %init_peer_id% ("callbackSrv" "response") [$res])
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3])
|
||||
)
|
||||
)
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 4])
|
||||
)
|
||||
|
||||
`,
|
||||
@ -321,9 +423,9 @@ export async function echo_greeting_par_inverse(client: FluenceClient, greet: bo
|
||||
h.on('getDataSrv', '-relay-', () => {
|
||||
return client.relayPeerId!;
|
||||
});
|
||||
h.on('getDataSrv', 'greet', () => {return greet;});
|
||||
h.on('getDataSrv', 'names', () => {return names;});
|
||||
h.on('getDataSrv', 'node', () => {return node;});
|
||||
h.on('getDataSrv', 'echo_service', () => {return echo_service;});
|
||||
h.on('getDataSrv', 'greeting_services', () => {return greeting_services;});
|
||||
h.onEvent('callbackSrv', 'response', (args) => {
|
||||
const [res] = args;
|
||||
resolve(res);
|
||||
@ -337,9 +439,93 @@ h.on('getDataSrv', 'greeting_services', () => {return greeting_services;});
|
||||
})
|
||||
.handleScriptError(reject)
|
||||
.handleTimeout(() => {
|
||||
reject('Request timed out for echo_greeting_par_inverse');
|
||||
reject('Request timed out for echo');
|
||||
})
|
||||
if(config?.ttl) {
|
||||
if(config && config.ttl) {
|
||||
r.withTTL(config.ttl)
|
||||
}
|
||||
request = r.build();
|
||||
});
|
||||
await client.initiateFlow(request!);
|
||||
return promise;
|
||||
}
|
||||
|
||||
|
||||
|
||||
export async function greeting(client: FluenceClient, name: string, greet: boolean, node: string, greeting_service_id: string, config?: {ttl?: number}): Promise<string> {
|
||||
let request: RequestFlow;
|
||||
const promise = new Promise<string>((resolve, reject) => {
|
||||
const r = new RequestFlowBuilder()
|
||||
.disableInjections()
|
||||
.withRawScript(
|
||||
`
|
||||
(xor
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-)
|
||||
(call %init_peer_id% ("getDataSrv" "name") [] name)
|
||||
)
|
||||
(call %init_peer_id% ("getDataSrv" "greet") [] greet)
|
||||
)
|
||||
(call %init_peer_id% ("getDataSrv" "node") [] node)
|
||||
)
|
||||
(call %init_peer_id% ("getDataSrv" "greeting_service_id") [] greeting_service_id)
|
||||
)
|
||||
(call -relay- ("op" "noop") [])
|
||||
)
|
||||
(xor
|
||||
(seq
|
||||
(call -relay- ("op" "noop") [])
|
||||
(call node (greeting_service_id "greeting") [name greet] res)
|
||||
)
|
||||
(seq
|
||||
(call -relay- ("op" "noop") [])
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1])
|
||||
)
|
||||
)
|
||||
)
|
||||
(call -relay- ("op" "noop") [])
|
||||
)
|
||||
(xor
|
||||
(call %init_peer_id% ("callbackSrv" "response") [res])
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2])
|
||||
)
|
||||
)
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3])
|
||||
)
|
||||
|
||||
`,
|
||||
)
|
||||
.configHandler((h) => {
|
||||
h.on('getDataSrv', '-relay-', () => {
|
||||
return client.relayPeerId!;
|
||||
});
|
||||
h.on('getDataSrv', 'name', () => {return name;});
|
||||
h.on('getDataSrv', 'greet', () => {return greet;});
|
||||
h.on('getDataSrv', 'node', () => {return node;});
|
||||
h.on('getDataSrv', 'greeting_service_id', () => {return greeting_service_id;});
|
||||
h.onEvent('callbackSrv', 'response', (args) => {
|
||||
const [res] = args;
|
||||
resolve(res);
|
||||
});
|
||||
|
||||
h.onEvent('errorHandlingSrv', 'error', (args) => {
|
||||
// assuming error is the single argument
|
||||
const [err] = args;
|
||||
reject(err);
|
||||
});
|
||||
})
|
||||
.handleScriptError(reject)
|
||||
.handleTimeout(() => {
|
||||
reject('Request timed out for greeting');
|
||||
})
|
||||
if(config && config.ttl) {
|
||||
r.withTTL(config.ttl)
|
||||
}
|
||||
request = r.build();
|
||||
@ -435,7 +621,7 @@ h.on('getDataSrv', 'greeting_service_id', () => {return greeting_service_id;});
|
||||
.handleTimeout(() => {
|
||||
reject('Request timed out for echo_greeting_seq');
|
||||
})
|
||||
if(config?.ttl) {
|
||||
if(config && config.ttl) {
|
||||
r.withTTL(config.ttl)
|
||||
}
|
||||
request = r.build();
|
||||
@ -446,7 +632,7 @@ h.on('getDataSrv', 'greeting_service_id', () => {return greeting_service_id;});
|
||||
|
||||
|
||||
|
||||
export async function echo_greeting_seq_2(client: FluenceClient, names: string[], greet: boolean, echo_topo: {node:string;service_id:string}, greeting_topo: {node:string;service_id:string}, config?: {ttl?: number}): Promise<string[]> {
|
||||
export async function echo_greeting_par_alternative(client: FluenceClient, greet: boolean, echo_service: {names:string[];node:string;service_id:string}, greeting_services: {node:string;service_id:string}[], config?: {ttl?: number}): Promise<string[]> {
|
||||
let request: RequestFlow;
|
||||
const promise = new Promise<string[]>((resolve, reject) => {
|
||||
const r = new RequestFlowBuilder()
|
||||
@ -464,106 +650,8 @@ export async function echo_greeting_seq_2(client: FluenceClient, names: string[]
|
||||
(seq
|
||||
(seq
|
||||
(call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-)
|
||||
(call %init_peer_id% ("getDataSrv" "names") [] names)
|
||||
)
|
||||
(call %init_peer_id% ("getDataSrv" "greet") [] greet)
|
||||
)
|
||||
(call %init_peer_id% ("getDataSrv" "echo_topo") [] echo_topo)
|
||||
)
|
||||
(call %init_peer_id% ("getDataSrv" "greeting_topo") [] greeting_topo)
|
||||
)
|
||||
(call -relay- ("op" "noop") [])
|
||||
)
|
||||
(xor
|
||||
(seq
|
||||
(call -relay- ("op" "noop") [])
|
||||
(call echo_topo.$.node! (echo_topo.$.service_id! "echo") [names] echo_names)
|
||||
)
|
||||
(seq
|
||||
(seq
|
||||
(call -relay- ("op" "noop") [])
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1])
|
||||
)
|
||||
(call -relay- ("op" "noop") [])
|
||||
)
|
||||
)
|
||||
)
|
||||
(xor
|
||||
(fold echo_names result
|
||||
(seq
|
||||
(call greeting_topo.$.node! (greeting_topo.$.service_id! "greeting") [result.$.echo! greet] $res)
|
||||
(next result)
|
||||
)
|
||||
)
|
||||
(seq
|
||||
(call -relay- ("op" "noop") [])
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2])
|
||||
)
|
||||
)
|
||||
)
|
||||
(call -relay- ("op" "noop") [])
|
||||
)
|
||||
(xor
|
||||
(call %init_peer_id% ("callbackSrv" "response") [$res])
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3])
|
||||
)
|
||||
)
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 4])
|
||||
)
|
||||
|
||||
`,
|
||||
)
|
||||
.configHandler((h) => {
|
||||
h.on('getDataSrv', '-relay-', () => {
|
||||
return client.relayPeerId!;
|
||||
});
|
||||
h.on('getDataSrv', 'names', () => {return names;});
|
||||
h.on('getDataSrv', 'greet', () => {return greet;});
|
||||
h.on('getDataSrv', 'echo_topo', () => {return echo_topo;});
|
||||
h.on('getDataSrv', 'greeting_topo', () => {return greeting_topo;});
|
||||
h.onEvent('callbackSrv', 'response', (args) => {
|
||||
const [res] = args;
|
||||
resolve(res);
|
||||
});
|
||||
|
||||
h.onEvent('errorHandlingSrv', 'error', (args) => {
|
||||
// assuming error is the single argument
|
||||
const [err] = args;
|
||||
reject(err);
|
||||
});
|
||||
})
|
||||
.handleScriptError(reject)
|
||||
.handleTimeout(() => {
|
||||
reject('Request timed out for echo_greeting_seq_2');
|
||||
})
|
||||
if(config?.ttl) {
|
||||
r.withTTL(config.ttl)
|
||||
}
|
||||
request = r.build();
|
||||
});
|
||||
await client.initiateFlow(request!);
|
||||
return promise;
|
||||
}
|
||||
|
||||
|
||||
|
||||
export async function echo_greeting_par_inverse_greet(client: FluenceClient, echo_service: {names:string[];node:string;service_id:string}, greeting_services: {greet:boolean;node:string;service_id:string}[], config?: {ttl?: number}): Promise<string[]> {
|
||||
let request: RequestFlow;
|
||||
const promise = new Promise<string[]>((resolve, reject) => {
|
||||
const r = new RequestFlowBuilder()
|
||||
.disableInjections()
|
||||
.withRawScript(
|
||||
`
|
||||
(xor
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-)
|
||||
(call %init_peer_id% ("getDataSrv" "echo_service") [] echo_service)
|
||||
)
|
||||
(call %init_peer_id% ("getDataSrv" "greeting_services") [] greeting_services)
|
||||
@ -583,6 +671,8 @@ export async function echo_greeting_par_inverse_greet(client: FluenceClient, ech
|
||||
)
|
||||
(call -relay- ("op" "noop") [])
|
||||
)
|
||||
(fold echo_results result
|
||||
(seq
|
||||
(fold greeting_services greeting_service
|
||||
(seq
|
||||
(seq
|
||||
@ -590,12 +680,7 @@ export async function echo_greeting_par_inverse_greet(client: FluenceClient, ech
|
||||
(seq
|
||||
(seq
|
||||
(xor
|
||||
(fold echo_results result
|
||||
(seq
|
||||
(call greeting_service.$.node! (greeting_service.$.service_id! "greeting") [result.$.echo! greeting_service.$.greet!] $res)
|
||||
(next result)
|
||||
)
|
||||
)
|
||||
(call greeting_service.$.node! (greeting_service.$.service_id! "greeting") [result.$.echo! greet] $res)
|
||||
(seq
|
||||
(call -relay- ("op" "noop") [])
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2])
|
||||
@ -612,8 +697,11 @@ export async function echo_greeting_par_inverse_greet(client: FluenceClient, ech
|
||||
(next greeting_service)
|
||||
)
|
||||
)
|
||||
(next result)
|
||||
)
|
||||
(call %init_peer_id% ("op" "identity") [$res.$.[3]!])
|
||||
)
|
||||
)
|
||||
(call %init_peer_id% ("op" "identity") [$res.$.[5]!])
|
||||
)
|
||||
(xor
|
||||
(call %init_peer_id% ("callbackSrv" "response") [$res])
|
||||
@ -629,6 +717,7 @@ export async function echo_greeting_par_inverse_greet(client: FluenceClient, ech
|
||||
h.on('getDataSrv', '-relay-', () => {
|
||||
return client.relayPeerId!;
|
||||
});
|
||||
h.on('getDataSrv', 'greet', () => {return greet;});
|
||||
h.on('getDataSrv', 'echo_service', () => {return echo_service;});
|
||||
h.on('getDataSrv', 'greeting_services', () => {return greeting_services;});
|
||||
h.onEvent('callbackSrv', 'response', (args) => {
|
||||
@ -644,9 +733,9 @@ h.on('getDataSrv', 'greeting_services', () => {return greeting_services;});
|
||||
})
|
||||
.handleScriptError(reject)
|
||||
.handleTimeout(() => {
|
||||
reject('Request timed out for echo_greeting_par_inverse_greet');
|
||||
reject('Request timed out for echo_greeting_par_alternative');
|
||||
})
|
||||
if(config?.ttl) {
|
||||
if(config && config.ttl) {
|
||||
r.withTTL(config.ttl)
|
||||
}
|
||||
request = r.build();
|
||||
|
@ -17,14 +17,18 @@
|
||||
import { createClient, setLogLevel, FluenceClient } from "@fluencelabs/fluence";
|
||||
import { krasnodar, Node } from "@fluencelabs/fluence-network-environment";
|
||||
import {
|
||||
echo,
|
||||
greeting,
|
||||
echo_greeting_seq,
|
||||
echo_greeting_seq_2,
|
||||
echo_greeting_par,
|
||||
echo_greeting_par_inverse,
|
||||
echo_greeting_par_greet,
|
||||
echo_greeting_par_inverse_greet,
|
||||
echo_greeting_par_alternative,
|
||||
echo_greeting_par_improved
|
||||
} from "./echo_greeter";
|
||||
|
||||
|
||||
interface EchoResult {
|
||||
echo: string;
|
||||
}
|
||||
interface NodeServicePair {
|
||||
node: string;
|
||||
service_id: string;
|
||||
@ -95,7 +99,31 @@ async function main() {
|
||||
fluence.relayPeerId
|
||||
);
|
||||
|
||||
let network_result = await echo_greeting_seq(
|
||||
let echo_result = await echo(
|
||||
fluence,
|
||||
names,
|
||||
echo_topos[0].node,
|
||||
echo_topos[0].service_id
|
||||
);
|
||||
|
||||
let result = "";
|
||||
|
||||
for (let item of echo_result) {
|
||||
result += item.echo + ","
|
||||
}
|
||||
console.log("echo result : ", result);
|
||||
|
||||
let greeting_result = await greeting(
|
||||
fluence,
|
||||
names[0],
|
||||
true,
|
||||
greeting_topos[0].node,
|
||||
greeting_topos[0].service_id
|
||||
);
|
||||
console.log("greeting result : ", greeting_result);
|
||||
|
||||
// echo_greeting_par(greet: bool, echo_service: EchoServiceInput, greeting_services: []NodeServicePair) -> []string:
|
||||
let seq_result = await echo_greeting_seq(
|
||||
fluence,
|
||||
names,
|
||||
true,
|
||||
@ -103,48 +131,32 @@ async function main() {
|
||||
echo_topos[0].service_id,
|
||||
greeting_topos[0].service_id
|
||||
);
|
||||
console.log("seq result : ", network_result);
|
||||
console.log("seq result : ", seq_result);
|
||||
|
||||
|
||||
network_result = await echo_greeting_seq_2(
|
||||
fluence,
|
||||
names,
|
||||
true,
|
||||
echo_topos[0],
|
||||
greeting_topos[0]
|
||||
);
|
||||
console.log("seq result with improved signature : ", network_result);
|
||||
|
||||
// echo_greeting_par(greet: bool, echo_service: EchoServiceInput, greeting_services: []NodeServicePair) -> []string:
|
||||
network_result = await echo_greeting_par(
|
||||
fluence,
|
||||
true,
|
||||
echo_service,
|
||||
greeting_topos
|
||||
);
|
||||
console.log("par result : ", network_result);
|
||||
|
||||
network_result = await echo_greeting_par_inverse(
|
||||
let par_result = await echo_greeting_par(
|
||||
fluence,
|
||||
true,
|
||||
echo_service,
|
||||
greeting_services
|
||||
);
|
||||
console.log("par inverse result : ", network_result);
|
||||
console.log("par result : ", par_result);
|
||||
|
||||
network_result = await echo_greeting_par_greet(
|
||||
|
||||
par_result = await echo_greeting_par_alternative(
|
||||
fluence,
|
||||
true,
|
||||
echo_service,
|
||||
greeting_services
|
||||
);
|
||||
console.log("par alternative result : ", par_result);
|
||||
|
||||
par_result = await echo_greeting_par_improved(
|
||||
fluence,
|
||||
echo_service,
|
||||
greeting_services
|
||||
);
|
||||
console.log("par result with greet variation : ", network_result);
|
||||
|
||||
network_result = await echo_greeting_par_inverse_greet(
|
||||
fluence,
|
||||
echo_service,
|
||||
greeting_services
|
||||
);
|
||||
console.log("par inverse result with greet variation : ", network_result);
|
||||
console.log("par improved signature result : ", par_result);
|
||||
|
||||
|
||||
return;
|
||||
|
Loading…
x
Reference in New Issue
Block a user