diff --git a/aqua/app.aqua b/aqua/app.aqua index dedd51f..ee17a05 100644 --- a/aqua/app.aqua +++ b/aqua/app.aqua @@ -4,14 +4,11 @@ service DashboardEvent("event"): collectPeerInfo(peer: PeerId, ident: Info, services: []Service, blueprints: []Blueprint, modules: []Module) collectServiceInterface(peer: PeerId, serviceId: string, iface: Interface) -func dashboardEvent_collectServiceInterface(peer: PeerId, serviceId: string, iface: Interface): - DashboardEvent.collectServiceInterface(peer, serviceId, iface) - func collectServiceInterfaces(peer: PeerId, services: []Service): - on peer: - for srv <- services par: + for srv <- services par: + on peer: info <- Srv.get_interface(srv.id) - dashboardEvent_collectServiceInterface(peer, srv.id, info.interface) + DashboardEvent.collectServiceInterface(peer, srv.id, info.interface) func askAllAndSend(peer: PeerId): on peer: @@ -19,8 +16,8 @@ func askAllAndSend(peer: PeerId): blueprints <- Dist.list_blueprints() modules <- Dist.list_modules() services <- Srv.list() - DashboardEvent.collectPeerInfo(peer, ident, services, blueprints, modules) collectServiceInterfaces(peer, services) + DashboardEvent.collectPeerInfo(peer, ident, services, blueprints, modules) func findAndAskNeighboursSchema(relayPeerId: PeerId, clientId: PeerId): diff --git a/src/_aqua/app.js b/src/_aqua/app.js index 15f65b0..0c0cab8 100644 --- a/src/_aqua/app.js +++ b/src/_aqua/app.js @@ -10,6 +10,74 @@ import { RequestFlowBuilder } from '@fluencelabs/fluence/dist/api.unstable'; +export async function collectServiceInterfaces(client, peer, services) { + let request; + const promise = new Promise((resolve, reject) => { + request = new RequestFlowBuilder() + .disableInjections() + .withRawScript( + ` +(xor + (seq + (seq + (seq + (call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-) + (call %init_peer_id% ("getDataSrv" "peer") [] peer) + ) + (call %init_peer_id% ("getDataSrv" "services") [] services) + ) + (fold services srv + (par + (seq + (seq + (seq + (call -relay- ("op" "identity") []) + (xor + (call peer ("srv" "get_interface") [srv.$.id!] info) + (seq + (call -relay- ("op" "identity") []) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1]) + ) + ) + ) + (call -relay- ("op" "identity") []) + ) + (call %init_peer_id% ("event" "collectServiceInterface") [peer srv.$.id! info.$.interface!]) + ) + (next srv) + ) + ) + ) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2]) +) + + `, + ) + .configHandler((h) => { + h.on('getDataSrv', '-relay-', () => { + return client.relayPeerId; + }); + h.on('getDataSrv', 'peer', () => {return peer;}); +h.on('getDataSrv', 'services', () => {return services;}); + + h.onEvent('errorHandlingSrv', 'error', (args) => { + // assuming error is the single argument + const [err] = args; + reject(err); + }); + }) + .handleScriptError(reject) + .handleTimeout(() => { + reject('Request timed out for collectServiceInterfaces'); + }) + .build(); + }); + await client.initiateFlow(request); + return Promise.race([promise, Promise.resolve()]); +} + + + export async function askAllAndSend(client, peer) { let request; const promise = new Promise((resolve, reject) => { @@ -24,58 +92,55 @@ export async function askAllAndSend(client, peer) { (seq (seq (seq - (seq - (call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-) - (call %init_peer_id% ("getDataSrv" "peer") [] peer) - ) - (call -relay- ("op" "identity") []) + (call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-) + (call %init_peer_id% ("getDataSrv" "peer") [] peer) ) - (xor + (call -relay- ("op" "identity") []) + ) + (xor + (seq (seq (seq - (seq - (call peer ("peer" "identify") [] ident) - (call peer ("dist" "list_blueprints") [] blueprints) - ) - (call peer ("dist" "list_modules") [] modules) + (call peer ("peer" "identify") [] ident) + (call peer ("dist" "list_blueprints") [] blueprints) ) - (call peer ("srv" "list") [] services) - ) - (seq - (call -relay- ("op" "identity") []) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1]) + (call peer ("dist" "list_modules") [] modules) ) + (call peer ("srv" "list") [] services) + ) + (seq + (call -relay- ("op" "identity") []) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1]) ) ) - (call -relay- ("op" "identity") []) ) - (call %init_peer_id% ("event" "collectPeerInfo") [peer ident services blueprints modules]) + (call -relay- ("op" "identity") []) ) - (call -relay- ("op" "identity") []) - ) - (xor (fold services srv (par (seq - (call peer ("srv" "get_interface") [srv.$.id!] info) - (call peer ("event" "collectServiceInterface") [peer srv.$.id! info.$.interface!]) + (seq + (seq + (call -relay- ("op" "identity") []) + (xor + (call peer ("srv" "get_interface") [srv.$.id!] info) + (seq + (call -relay- ("op" "identity") []) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2]) + ) + ) + ) + (call -relay- ("op" "identity") []) + ) + (call %init_peer_id% ("event" "collectServiceInterface") [peer srv.$.id! info.$.interface!]) ) (next srv) ) ) - (seq - (seq - (call -relay- ("op" "identity") []) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2]) - ) - (call -relay- ("op" "identity") []) - ) ) + (call %init_peer_id% ("event" "collectPeerInfo") [peer ident services blueprints modules]) ) - (seq - (call -relay- ("op" "identity") []) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3]) - ) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3]) ) `, @@ -104,304 +169,6 @@ export async function askAllAndSend(client, peer) { -export async function getAll(client, relayPeerId, knownPeers) { - let request; - const promise = new Promise((resolve, reject) => { - request = new RequestFlowBuilder() - .disableInjections() - .withRawScript( - ` -(xor - (seq - (seq - (seq - (seq - (seq - (call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-) - (call %init_peer_id% ("getDataSrv" "relayPeerId") [] relayPeerId) - ) - (call %init_peer_id% ("getDataSrv" "knownPeers") [] knownPeers) - ) - (par - (seq - (seq - (seq - (seq - (seq - (call -relay- ("op" "identity") []) - (xor - (seq - (seq - (seq - (call relayPeerId ("peer" "identify") [] ident) - (call relayPeerId ("dist" "list_blueprints") [] blueprints) - ) - (call relayPeerId ("dist" "list_modules") [] modules) - ) - (call relayPeerId ("srv" "list") [] services) - ) - (seq - (call -relay- ("op" "identity") []) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1]) - ) - ) - ) - (call -relay- ("op" "identity") []) - ) - (call %init_peer_id% ("event" "collectPeerInfo") [relayPeerId ident services blueprints modules]) - ) - (call -relay- ("op" "identity") []) - ) - (xor - (fold services srv - (par - (seq - (call relayPeerId ("srv" "get_interface") [srv.$.id!] info) - (call relayPeerId ("event" "collectServiceInterface") [relayPeerId srv.$.id! info.$.interface!]) - ) - (next srv) - ) - ) - (seq - (call -relay- ("op" "identity") []) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2]) - ) - ) - ) - (seq - (seq - (seq - (call -relay- ("op" "identity") []) - (fold knownPeers peer - (par - (seq - (seq - (seq - (seq - (seq - (call -relay- ("op" "identity") []) - (xor - (seq - (seq - (seq - (call peer ("peer" "identify") [] ident0) - (call peer ("dist" "list_blueprints") [] blueprints0) - ) - (call peer ("dist" "list_modules") [] modules0) - ) - (call peer ("srv" "list") [] services0) - ) - (seq - (call -relay- ("op" "identity") []) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3]) - ) - ) - ) - (call -relay- ("op" "identity") []) - ) - (call %init_peer_id% ("event" "collectPeerInfo") [peer ident0 services0 blueprints0 modules0]) - ) - (call -relay- ("op" "identity") []) - ) - (xor - (fold services0 srv0 - (par - (seq - (call peer ("srv" "get_interface") [srv0.$.id!] info0) - (call peer ("event" "collectServiceInterface") [peer srv0.$.id! info0.$.interface!]) - ) - (next srv0) - ) - ) - (seq - (call -relay- ("op" "identity") []) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 4]) - ) - ) - ) - (seq - (call -relay- ("op" "identity") []) - (next peer) - ) - ) - ) - ) - (call -relay- ("op" "identity") []) - ) - (call %init_peer_id% ("op" "identity") []) - ) - ) - ) - (call -relay- ("op" "identity") []) - ) - (xor - (seq - (call relayPeerId ("kad" "neighborhood") [%init_peer_id% false] neighbors) - (fold neighbors n - (par - (xor - (seq - (call n ("kad" "neighborhood") [%init_peer_id% false] neighbors2) - (fold neighbors2 n2 - (seq - (seq - (seq - (seq - (seq - (xor - (seq - (seq - (seq - (call n2 ("peer" "identify") [] ident1) - (call n2 ("dist" "list_blueprints") [] blueprints1) - ) - (call n2 ("dist" "list_modules") [] modules1) - ) - (call n2 ("srv" "list") [] services1) - ) - (seq - (call -relay- ("op" "identity") []) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 5]) - ) - ) - (call -relay- ("op" "identity") []) - ) - (call n ("event" "collectPeerInfo") [n2 ident1 services1 blueprints1 modules1]) - ) - (xor - (fold services1 srv1 - (par - (seq - (call n2 ("srv" "get_interface") [srv1.$.id!] info1) - (call n2 ("event" "collectServiceInterface") [n2 srv1.$.id! info1.$.interface!]) - ) - (next srv1) - ) - ) - (seq - (call -relay- ("op" "identity") []) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 6]) - ) - ) - ) - (call -relay- ("op" "identity") []) - ) - (next n2) - ) - ) - ) - (seq - (call -relay- ("op" "identity") []) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 7]) - ) - ) - (seq - (seq - (seq - (call -relay- ("op" "identity") []) - (next n) - ) - (call -relay- ("op" "identity") []) - ) - (call %init_peer_id% ("op" "identity") []) - ) - ) - ) - ) - (seq - (seq - (call -relay- ("op" "identity") []) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 8]) - ) - (call -relay- ("op" "identity") []) - ) - ) - ) - (seq - (call -relay- ("op" "identity") []) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 9]) - ) -) - - `, - ) - .configHandler((h) => { - h.on('getDataSrv', '-relay-', () => { - return client.relayPeerId; - }); - h.on('getDataSrv', 'relayPeerId', () => {return relayPeerId;}); -h.on('getDataSrv', 'knownPeers', () => {return knownPeers;}); - - h.onEvent('errorHandlingSrv', 'error', (args) => { - // assuming error is the single argument - const [err] = args; - reject(err); - }); - }) - .handleScriptError(reject) - .handleTimeout(() => { - reject('Request timed out for getAll'); - }) - .build(); - }); - await client.initiateFlow(request); - return Promise.race([promise, Promise.resolve()]); -} - - - -export async function dashboardEvent_collectServiceInterface(client, peer, serviceId, iface) { - let request; - const promise = new Promise((resolve, reject) => { - request = new RequestFlowBuilder() - .disableInjections() - .withRawScript( - ` -(xor - (seq - (seq - (seq - (seq - (call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-) - (call %init_peer_id% ("getDataSrv" "peer") [] peer) - ) - (call %init_peer_id% ("getDataSrv" "serviceId") [] serviceId) - ) - (call %init_peer_id% ("getDataSrv" "iface") [] iface) - ) - (call %init_peer_id% ("event" "collectServiceInterface") [peer serviceId iface]) - ) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1]) -) - - `, - ) - .configHandler((h) => { - h.on('getDataSrv', '-relay-', () => { - return client.relayPeerId; - }); - h.on('getDataSrv', 'peer', () => {return peer;}); -h.on('getDataSrv', 'serviceId', () => {return serviceId;}); -h.on('getDataSrv', 'iface', () => {return iface;}); - - h.onEvent('errorHandlingSrv', 'error', (args) => { - // assuming error is the single argument - const [err] = args; - reject(err); - }); - }) - .handleScriptError(reject) - .handleTimeout(() => { - reject('Request timed out for dashboardEvent_collectServiceInterface'); - }) - .build(); - }); - await client.initiateFlow(request); - return Promise.race([promise, Promise.resolve()]); -} - - - export async function findAndAskNeighboursSchema(client, relayPeerId, clientId) { let request; const promise = new Promise((resolve, reject) => { @@ -434,44 +201,44 @@ export async function findAndAskNeighboursSchema(client, relayPeerId, clientId) (seq (seq (seq - (seq - (xor + (xor + (seq (seq (seq - (seq - (call n2 ("peer" "identify") [] ident) - (call n2 ("dist" "list_blueprints") [] blueprints) - ) - (call n2 ("dist" "list_modules") [] modules) + (call n2 ("peer" "identify") [] ident) + (call n2 ("dist" "list_blueprints") [] blueprints) ) - (call n2 ("srv" "list") [] services) - ) - (seq - (call -relay- ("op" "identity") []) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1]) + (call n2 ("dist" "list_modules") [] modules) ) + (call n2 ("srv" "list") [] services) + ) + (seq + (call -relay- ("op" "identity") []) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1]) ) - (call -relay- ("op" "identity") []) ) - (call n ("event" "collectPeerInfo") [n2 ident services blueprints modules]) + (call -relay- ("op" "identity") []) ) - (xor - (fold services srv - (par + (fold services srv + (par + (seq (seq - (call n2 ("srv" "get_interface") [srv.$.id!] info) - (call n2 ("event" "collectServiceInterface") [n2 srv.$.id! info.$.interface!]) + (xor + (call n2 ("srv" "get_interface") [srv.$.id!] info) + (seq + (call -relay- ("op" "identity") []) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2]) + ) + ) + (call -relay- ("op" "identity") []) ) - (next srv) + (call n ("event" "collectServiceInterface") [n2 srv.$.id! info.$.interface!]) ) - ) - (seq - (call -relay- ("op" "identity") []) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2]) + (next srv) ) ) ) - (call -relay- ("op" "identity") []) + (call n ("event" "collectPeerInfo") [n2 ident services blueprints modules]) ) (next n2) ) @@ -537,7 +304,7 @@ h.on('getDataSrv', 'clientId', () => {return clientId;}); -export async function collectServiceInterfaces(client, peer, services) { +export async function getAll(client, relayPeerId, knownPeers) { let request; const promise = new Promise((resolve, reject) => { request = new RequestFlowBuilder() @@ -549,27 +316,196 @@ export async function collectServiceInterfaces(client, peer, services) { (seq (seq (seq - (call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-) - (call %init_peer_id% ("getDataSrv" "peer") [] peer) + (seq + (call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-) + (call %init_peer_id% ("getDataSrv" "relayPeerId") [] relayPeerId) + ) + (call %init_peer_id% ("getDataSrv" "knownPeers") [] knownPeers) + ) + (par + (seq + (seq + (seq + (seq + (call -relay- ("op" "identity") []) + (xor + (seq + (seq + (seq + (call relayPeerId ("peer" "identify") [] ident) + (call relayPeerId ("dist" "list_blueprints") [] blueprints) + ) + (call relayPeerId ("dist" "list_modules") [] modules) + ) + (call relayPeerId ("srv" "list") [] services) + ) + (seq + (call -relay- ("op" "identity") []) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1]) + ) + ) + ) + (call -relay- ("op" "identity") []) + ) + (fold services srv + (par + (seq + (seq + (seq + (call -relay- ("op" "identity") []) + (xor + (call relayPeerId ("srv" "get_interface") [srv.$.id!] info) + (seq + (call -relay- ("op" "identity") []) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2]) + ) + ) + ) + (call -relay- ("op" "identity") []) + ) + (call %init_peer_id% ("event" "collectServiceInterface") [relayPeerId srv.$.id! info.$.interface!]) + ) + (next srv) + ) + ) + ) + (call %init_peer_id% ("event" "collectPeerInfo") [relayPeerId ident services blueprints modules]) + ) + (fold knownPeers peer + (par + (seq + (seq + (seq + (seq + (call -relay- ("op" "identity") []) + (xor + (seq + (seq + (seq + (call peer ("peer" "identify") [] ident0) + (call peer ("dist" "list_blueprints") [] blueprints0) + ) + (call peer ("dist" "list_modules") [] modules0) + ) + (call peer ("srv" "list") [] services0) + ) + (seq + (call -relay- ("op" "identity") []) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3]) + ) + ) + ) + (call -relay- ("op" "identity") []) + ) + (fold services0 srv0 + (par + (seq + (seq + (seq + (call -relay- ("op" "identity") []) + (xor + (call peer ("srv" "get_interface") [srv0.$.id!] info0) + (seq + (call -relay- ("op" "identity") []) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 4]) + ) + ) + ) + (call -relay- ("op" "identity") []) + ) + (call %init_peer_id% ("event" "collectServiceInterface") [peer srv0.$.id! info0.$.interface!]) + ) + (next srv0) + ) + ) + ) + (call %init_peer_id% ("event" "collectPeerInfo") [peer ident0 services0 blueprints0 modules0]) + ) + (next peer) + ) + ) ) - (call %init_peer_id% ("getDataSrv" "services") [] services) ) (call -relay- ("op" "identity") []) ) (xor - (fold services srv - (par - (seq - (call peer ("srv" "get_interface") [srv.$.id!] info) - (call peer ("event" "collectServiceInterface") [peer srv.$.id! info.$.interface!]) + (seq + (call relayPeerId ("kad" "neighborhood") [%init_peer_id% false] neighbors) + (fold neighbors n + (par + (xor + (seq + (call n ("kad" "neighborhood") [%init_peer_id% false] neighbors2) + (fold neighbors2 n2 + (seq + (seq + (seq + (seq + (xor + (seq + (seq + (seq + (call n2 ("peer" "identify") [] ident1) + (call n2 ("dist" "list_blueprints") [] blueprints1) + ) + (call n2 ("dist" "list_modules") [] modules1) + ) + (call n2 ("srv" "list") [] services1) + ) + (seq + (call -relay- ("op" "identity") []) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 5]) + ) + ) + (call -relay- ("op" "identity") []) + ) + (fold services1 srv1 + (par + (seq + (seq + (xor + (call n2 ("srv" "get_interface") [srv1.$.id!] info1) + (seq + (call -relay- ("op" "identity") []) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 6]) + ) + ) + (call -relay- ("op" "identity") []) + ) + (call n ("event" "collectServiceInterface") [n2 srv1.$.id! info1.$.interface!]) + ) + (next srv1) + ) + ) + ) + (call n ("event" "collectPeerInfo") [n2 ident1 services1 blueprints1 modules1]) + ) + (next n2) + ) + ) + ) + (seq + (call -relay- ("op" "identity") []) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 7]) + ) + ) + (seq + (seq + (seq + (call -relay- ("op" "identity") []) + (next n) + ) + (call -relay- ("op" "identity") []) + ) + (call %init_peer_id% ("op" "identity") []) + ) ) - (next srv) ) ) (seq (seq (call -relay- ("op" "identity") []) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1]) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 8]) ) (call -relay- ("op" "identity") []) ) @@ -577,7 +513,7 @@ export async function collectServiceInterfaces(client, peer, services) { ) (seq (call -relay- ("op" "identity") []) - (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2]) + (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 9]) ) ) @@ -587,8 +523,8 @@ export async function collectServiceInterfaces(client, peer, services) { h.on('getDataSrv', '-relay-', () => { return client.relayPeerId; }); - h.on('getDataSrv', 'peer', () => {return peer;}); -h.on('getDataSrv', 'services', () => {return services;}); + h.on('getDataSrv', 'relayPeerId', () => {return relayPeerId;}); +h.on('getDataSrv', 'knownPeers', () => {return knownPeers;}); h.onEvent('errorHandlingSrv', 'error', (args) => { // assuming error is the single argument @@ -598,7 +534,7 @@ h.on('getDataSrv', 'services', () => {return services;}); }) .handleScriptError(reject) .handleTimeout(() => { - reject('Request timed out for collectServiceInterfaces'); + reject('Request timed out for getAll'); }) .build(); });