Remove getAll

This commit is contained in:
folex 2021-08-03 14:59:35 +03:00
parent 25fe108889
commit fb140f666a
5 changed files with 146 additions and 322 deletions

View File

@ -18,7 +18,7 @@ func askAllAndSend(peer: PeerId, collectPeerInfo: PeerInfoCb, collectServiceInte
modules <- Dist.list_modules() modules <- Dist.list_modules()
services <- Srv.list() services <- Srv.list()
collectPeerInfo(peer, ident, services, blueprints, modules) collectPeerInfo(peer, ident, services, blueprints, modules)
collectServiceInterfaces(peer, services, collectServiceInterface) -- collectServiceInterfaces(peer, services, collectServiceInterface)
-- retrieve PeerInfo and ServiceInterface-s from each peer in `peers` -- retrieve PeerInfo and ServiceInterface-s from each peer in `peers`
func getServicesFromPeers( func getServicesFromPeers(
@ -39,16 +39,12 @@ func discoverNeighbourhood(relay: PeerId, collectNeighbors: []string -> ()):
neighbors2 <- Kademlia.neighborhood(%init_peer_id%, nil, nil) neighbors2 <- Kademlia.neighborhood(%init_peer_id%, nil, nil)
collectNeighbors(neighbors2) collectNeighbors(neighbors2)
func getAll( func discoverNeighbourhoodFull(relay: PeerId, knownPeers: []PeerId, collectNeighbors: []string -> ()):
relay: PeerId, for node <- knownPeers par:
knownPeers: []PeerId, on node via relay:
collectPeerInfo: PeerInfoCb, neighbors <- Kademlia.neighborhood(%init_peer_id%, nil, nil)
collectServiceInterface: ServiceInterfaceCb, co collectNeighbors(neighbors)
collectNeighbors: []string -> () for n <- neighbors par:
): on n:
co askAllAndSend(relay, collectPeerInfo, collectServiceInterface) neighbors2 <- Kademlia.neighborhood(%init_peer_id%, nil, nil)
collectNeighbors(neighbors2)
for peer <- knownPeers par:
askAllAndSend(peer, collectPeerInfo, collectServiceInterface)
co discoverNeighbourhood(relay, collectNeighbors)

6
package-lock.json generated
View File

@ -998,9 +998,9 @@
} }
}, },
"@fluencelabs/aqua-cli": { "@fluencelabs/aqua-cli": {
"version": "0.1.9-165", "version": "0.1.10-188",
"resolved": "https://registry.npmjs.org/@fluencelabs/aqua-cli/-/aqua-cli-0.1.9-165.tgz", "resolved": "https://registry.npmjs.org/@fluencelabs/aqua-cli/-/aqua-cli-0.1.10-188.tgz",
"integrity": "sha512-DBcPRxzJiQCdnur2wVgX47CRccTSoXhDPwURh8IW8RuP0vI+F8MWRcqdxT9DDDMe396e9je3f7g2bT8gfif1SQ==", "integrity": "sha512-3StvE+xevgQVsGwHGpSY+OuXx86N89MxUpguvZfwufRuSLIO++aMmUGUC14GFc7LQelcP86h6pFZ5o7pNYEIVw==",
"dev": true "dev": true
}, },
"@fluencelabs/aqua-lib": { "@fluencelabs/aqua-lib": {

View File

@ -38,7 +38,7 @@
"yup": "^0.32.9" "yup": "^0.32.9"
}, },
"devDependencies": { "devDependencies": {
"@fluencelabs/aqua-cli": "0.1.9-165", "@fluencelabs/aqua-cli": "0.1.10-188",
"@fluencelabs/aqua-lib": "0.1.13", "@fluencelabs/aqua-lib": "0.1.13",
"@babel/core": "^7.11.6", "@babel/core": "^7.11.6",
"@babel/preset-env": "^7.11.5", "@babel/preset-env": "^7.11.5",

View File

@ -3,7 +3,7 @@
* This file is auto-generated. Do not edit manually: changes may be erased. * This file is auto-generated. Do not edit manually: changes may be erased.
* Generated by Aqua compiler: https://github.com/fluencelabs/aqua/. * 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 * If you find any bugs, please write an issue on GitHub: https://github.com/fluencelabs/aqua/issues
* Aqua version: 0.1.9-165 * Aqua version: 0.1.10-188
* *
*/ */
import { RequestFlowBuilder } from '@fluencelabs/fluence/dist/api.unstable'; import { RequestFlowBuilder } from '@fluencelabs/fluence/dist/api.unstable';
@ -33,53 +33,24 @@ export async function askAllAndSend(client, peer, collectPeerInfo, collectServic
(seq (seq
(seq (seq
(seq (seq
(seq (call peer ("peer" "identify") [] ident)
(seq (call peer ("dist" "list_blueprints") [] blueprints)
(call peer ("peer" "identify") [] ident)
(call peer ("dist" "list_blueprints") [] blueprints)
)
(call peer ("dist" "list_modules") [] modules)
)
(call peer ("srv" "list") [] services)
) )
(call -relay- ("op" "noop") []) (call peer ("dist" "list_modules") [] modules)
)
(xor
(call %init_peer_id% ("callbackSrv" "collectPeerInfo") [peer ident services blueprints modules])
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1])
) )
(call peer ("srv" "list") [] services)
) )
(call -relay- ("op" "noop") []) (call -relay- ("op" "noop") [])
) )
(fold services srv (xor
(par (call %init_peer_id% ("callbackSrv" "collectPeerInfo") [peer ident services blueprints modules])
(seq (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1])
(call -relay- ("op" "noop") [])
(xor
(seq
(seq
(call peer ("srv" "get_interface") [srv.$.id!] iface)
(call -relay- ("op" "noop") [])
)
(xor
(call %init_peer_id% ("callbackSrv" "collectServiceInterface") [peer srv.$.id! iface])
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2])
)
)
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3])
)
)
(seq
(call -relay- ("op" "noop") [])
(next srv)
)
)
) )
) )
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 4]) (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2])
) )
) )
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 5]) (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3])
) )
`, `,
@ -113,222 +84,6 @@ h.on('callbackSrv', 'collectServiceInterface', (args) => {collectServiceInterfac
export async function getAll(client, relay, knownPeers, collectPeerInfo, collectServiceInterface, collectNeighbors, config) {
let request;
config = config || {};
const promise = new Promise((resolve, reject) => {
var r = new RequestFlowBuilder()
.disableInjections()
.withRawScript(
`
(xor
(seq
(seq
(seq
(seq
(seq
(call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-)
(call %init_peer_id% ("getDataSrv" "relay") [] relay)
)
(call %init_peer_id% ("getDataSrv" "knownPeers") [] knownPeers)
)
(par
(seq
(call -relay- ("op" "noop") [])
(xor
(seq
(seq
(seq
(seq
(seq
(seq
(seq
(call relay ("peer" "identify") [] ident)
(call relay ("dist" "list_blueprints") [] blueprints)
)
(call relay ("dist" "list_modules") [] modules)
)
(call relay ("srv" "list") [] services)
)
(call -relay- ("op" "noop") [])
)
(xor
(call %init_peer_id% ("callbackSrv" "collectPeerInfo") [relay ident services blueprints modules])
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1])
)
)
(call -relay- ("op" "noop") [])
)
(fold services srv
(par
(seq
(call -relay- ("op" "noop") [])
(xor
(seq
(seq
(call relay ("srv" "get_interface") [srv.$.id!] iface)
(call -relay- ("op" "noop") [])
)
(xor
(call %init_peer_id% ("callbackSrv" "collectServiceInterface") [relay srv.$.id! iface])
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2])
)
)
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3])
)
)
(seq
(call -relay- ("op" "noop") [])
(next srv)
)
)
)
)
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 4])
)
)
(null)
)
)
(fold knownPeers peer
(par
(seq
(call -relay- ("op" "noop") [])
(xor
(seq
(seq
(seq
(seq
(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)
)
(call -relay- ("op" "noop") [])
)
(xor
(call %init_peer_id% ("callbackSrv" "collectPeerInfo") [peer ident0 services0 blueprints0 modules0])
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 5])
)
)
(call -relay- ("op" "noop") [])
)
(fold services0 srv0
(par
(seq
(call -relay- ("op" "noop") [])
(xor
(seq
(seq
(call peer ("srv" "get_interface") [srv0.$.id!] iface0)
(call -relay- ("op" "noop") [])
)
(xor
(call %init_peer_id% ("callbackSrv" "collectServiceInterface") [peer srv0.$.id! iface0])
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 6])
)
)
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 7])
)
)
(seq
(call -relay- ("op" "noop") [])
(next srv0)
)
)
)
)
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 8])
)
)
(next peer)
)
)
)
(par
(seq
(call -relay- ("op" "noop") [])
(xor
(seq
(seq
(call relay ("kad" "neighborhood") [%init_peer_id% $nil $nil] neighbors)
(par
(seq
(call -relay- ("op" "noop") [])
(xor
(call %init_peer_id% ("callbackSrv" "collectNeighbors") [neighbors])
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 9])
)
)
(null)
)
)
(fold neighbors n
(par
(xor
(seq
(seq
(call n ("kad" "neighborhood") [%init_peer_id% $nil $nil] neighbors2)
(call -relay- ("op" "noop") [])
)
(xor
(call %init_peer_id% ("callbackSrv" "collectNeighbors") [neighbors2])
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 10])
)
)
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 11])
)
(next n)
)
)
)
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 12])
)
)
(null)
)
)
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 13])
)
`,
)
.configHandler((h) => {
h.on('getDataSrv', '-relay-', () => {
return client.relayPeerId;
});
h.on('getDataSrv', 'relay', () => {return relay;});
h.on('getDataSrv', 'knownPeers', () => {return knownPeers;});
h.on('callbackSrv', 'collectPeerInfo', (args) => {collectPeerInfo(args[0], args[1], args[2], args[3], args[4]); return {};});
h.on('callbackSrv', 'collectServiceInterface', (args) => {collectServiceInterface(args[0], args[1], args[2]); return {};});
h.on('callbackSrv', 'collectNeighbors', (args) => {collectNeighbors(args[0]); return {};});
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');
})
if(config.ttl) {
r.withTTL(config.ttl)
}
request = r.build();
});
await client.initiateFlow(request);
return Promise.race([promise, Promise.resolve()]);
}
export async function getServicesFromPeers(client, peers, collectPeerInfo, collectServiceInterface, config) { export async function getServicesFromPeers(client, peers, collectPeerInfo, collectServiceInterface, config) {
let request; let request;
config = config || {}; config = config || {};
@ -353,57 +108,28 @@ export async function getServicesFromPeers(client, peers, collectPeerInfo, colle
(seq (seq
(seq (seq
(seq (seq
(seq (call peer ("peer" "identify") [] ident)
(seq (call peer ("dist" "list_blueprints") [] blueprints)
(call peer ("peer" "identify") [] ident)
(call peer ("dist" "list_blueprints") [] blueprints)
)
(call peer ("dist" "list_modules") [] modules)
)
(call peer ("srv" "list") [] services)
) )
(call -relay- ("op" "noop") []) (call peer ("dist" "list_modules") [] modules)
)
(xor
(call %init_peer_id% ("callbackSrv" "collectPeerInfo") [peer ident services blueprints modules])
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1])
) )
(call peer ("srv" "list") [] services)
) )
(call -relay- ("op" "noop") []) (call -relay- ("op" "noop") [])
) )
(fold services srv (xor
(par (call %init_peer_id% ("callbackSrv" "collectPeerInfo") [peer ident services blueprints modules])
(seq (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1])
(call -relay- ("op" "noop") [])
(xor
(seq
(seq
(call peer ("srv" "get_interface") [srv.$.id!] iface)
(call -relay- ("op" "noop") [])
)
(xor
(call %init_peer_id% ("callbackSrv" "collectServiceInterface") [peer srv.$.id! iface])
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2])
)
)
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3])
)
)
(seq
(call -relay- ("op" "noop") [])
(next srv)
)
)
) )
) )
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 4]) (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2])
) )
) )
(next peer) (next peer)
) )
) )
) )
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 5]) (call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3])
) )
`, `,
@ -437,6 +163,111 @@ h.on('callbackSrv', 'collectServiceInterface', (args) => {collectServiceInterfac
export async function discoverNeighbourhoodFull(client, relay, knownPeers, collectNeighbors, config) {
let request;
config = config || {};
const promise = new Promise((resolve, reject) => {
var r = new RequestFlowBuilder()
.disableInjections()
.withRawScript(
`
(xor
(seq
(seq
(seq
(call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-)
(call %init_peer_id% ("getDataSrv" "relay") [] relay)
)
(call %init_peer_id% ("getDataSrv" "knownPeers") [] knownPeers)
)
(fold knownPeers node
(par
(seq
(seq
(call -relay- ("op" "noop") [])
(call relay ("op" "noop") [])
)
(xor
(seq
(seq
(call node ("kad" "neighborhood") [%init_peer_id% $nil $nil] neighbors)
(par
(seq
(seq
(call relay ("op" "noop") [])
(call -relay- ("op" "noop") [])
)
(xor
(call %init_peer_id% ("callbackSrv" "collectNeighbors") [neighbors])
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1])
)
)
(null)
)
)
(fold neighbors n
(par
(seq
(call relay ("op" "noop") [])
(xor
(seq
(seq
(call n ("kad" "neighborhood") [%init_peer_id% $nil $nil] neighbors2)
(call -relay- ("op" "noop") [])
)
(xor
(call %init_peer_id% ("callbackSrv" "collectNeighbors") [neighbors2])
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2])
)
)
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3])
)
)
(next n)
)
)
)
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 4])
)
)
(next node)
)
)
)
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 5])
)
`,
)
.configHandler((h) => {
h.on('getDataSrv', '-relay-', () => {
return client.relayPeerId;
});
h.on('getDataSrv', 'relay', () => {return relay;});
h.on('getDataSrv', 'knownPeers', () => {return knownPeers;});
h.on('callbackSrv', 'collectNeighbors', (args) => {collectNeighbors(args[0]); return {};});
h.onEvent('errorHandlingSrv', 'error', (args) => {
// assuming error is the single argument
const [err] = args;
reject(err);
});
})
.handleScriptError(reject)
.handleTimeout(() => {
reject('Request timed out for discoverNeighbourhoodFull');
})
if(config.ttl) {
r.withTTL(config.ttl)
}
request = r.build();
});
await client.initiateFlow(request);
return Promise.race([promise, Promise.resolve()]);
}
export async function discoverNeighbourhood(client, relay, collectNeighbors, config) { export async function discoverNeighbourhood(client, relay, collectNeighbors, config) {
let request; let request;
config = config || {}; config = config || {};

View File

@ -32,7 +32,7 @@ import {
import { Elm } from './Main.elm'; import { Elm } from './Main.elm';
import * as serviceWorker from './serviceWorker'; import * as serviceWorker from './serviceWorker';
import { interfaceInfo, peerInfo } from './types'; import { interfaceInfo, peerInfo } from './types';
import { getAll, getServicesFromPeers } from './_aqua/app'; import { discoverNeighbourhoodFull, getAll, getServicesFromPeers } from './_aqua/app';
const defaultNetworkName = 'krasnodar'; const defaultNetworkName = 'krasnodar';
@ -203,20 +203,17 @@ function genFlags(peerId, relays, relayIdx) {
// clear knownPeersSet to ask these peers again // clear knownPeersSet to ask these peers again
knownPeersSet.clear(); knownPeersSet.clear();
knownPeersSet.add(...flags.knownPeers); await getServicesFromPeers(
knownPeersSet.add(flags.relayPeerId);
await getAll(
client, client,
data.relayPeerId, [data.relayPeerId, ...data.knownPeers],
data.knownPeers,
collectPeerInfo, collectPeerInfo,
collectServiceInterface, collectServiceInterface,
collectNeighbors, { ttl: 1000000 },
{
ttl: 1000000,
},
); );
knownPeersSet.add(...data.knownPeers);
knownPeersSet.add(data.relayPeerId);
await discoverNeighbourhoodFull(client, data.relayPeerId, data.knownPeers, collectNeighbors, { ttl: 1000000 });
}); });
})(); })();