Example works

This commit is contained in:
Pavel Murygin
2021-04-12 20:45:16 +03:00
parent 5888687263
commit 9330b7f207
3 changed files with 58 additions and 47 deletions

View File

@ -4,6 +4,7 @@ data ExternalAddresses:
service Peer("peer"): service Peer("peer"):
identify: -> ExternalAddresses identify: -> ExternalAddresses
func getPeerExternalAddresses() -> []string: func getPeerExternalAddresses(otherNodePeerId: string) -> []string:
on otherNodePeerId:
res <- Peer.identify() res <- Peer.identify()
<- res.external_addresses <- res.external_addresses

View File

@ -1,9 +1,10 @@
import { FluenceClient, PeerIdB58 } from '@fluencelabs/fluence'; import { FluenceClient, PeerIdB58 } from "@fluencelabs/fluence";
import { RequestFlowBuilder } from '@fluencelabs/fluence/dist/api.unstable'; import { RequestFlowBuilder } from "@fluencelabs/fluence/dist/api.unstable";
export async function getPeerExternalAddresses(
client: FluenceClient,
export async function getPeerExternalAddresses(client: FluenceClient): Promise<string[]> { otherNodePeerId: string
): Promise<string[]> {
let request; let request;
const promise = new Promise<string[]>((resolve, reject) => { const promise = new Promise<string[]>((resolve, reject) => {
request = new RequestFlowBuilder() request = new RequestFlowBuilder()
@ -11,31 +12,40 @@ export async function getPeerExternalAddresses(client: FluenceClient): Promise<s
` `
(seq (seq
(seq (seq
(seq
(seq
(call %init_peer_id% ("getDataSrv" "otherNodePeerId") [] otherNodePeerId)
(call %init_peer_id% ("getDataSrv" "relay") [] relay) (call %init_peer_id% ("getDataSrv" "relay") [] relay)
(call %init_peer_id% ("peer" "identify") [] res)
) )
(seq (seq
(call relay ("op" "identity") []) (call relay ("op" "identity") [])
(call %init_peer_id% ("callbackSrv" "response") [res.$.external_addresses!]) (call otherNodePeerId ("peer" "identify") [] res)
) )
)
(call relay ("op" "identity") [])
)
(call %init_peer_id% ("callbackSrv" "response") [res.$.external_addresses!])
) )
`, `
) )
.configHandler((h) => { .configHandler((h) => {
h.on('getDataSrv', 'relay', () => { h.on("getDataSrv", "relay", () => {
return client.relayPeerId; return client.relayPeerId;
}); });
h.on('getRelayService', 'hasReleay', () => {// Not Used h.on("getRelayService", "hasReleay", () => {
// Not Used
return client.relayPeerId !== undefined; return client.relayPeerId !== undefined;
}); });
h.on("getDataSrv", "otherNodePeerId", () => {
h.on('callbackSrv', 'response', (args) => { return otherNodePeerId;
});
h.on("callbackSrv", "response", (args) => {
const [res] = args; const [res] = args;
resolve(res); resolve(res);
}); });
h.on('nameOfServiceWhereToSendXorError', 'errorProbably', (args) => { h.on("nameOfServiceWhereToSendXorError", "errorProbably", (args) => {
// assuming error is the single argument // assuming error is the single argument
const [err] = args; const [err] = args;
reject(err); reject(err);
@ -43,11 +53,10 @@ export async function getPeerExternalAddresses(client: FluenceClient): Promise<s
}) })
.handleScriptError(reject) .handleScriptError(reject)
.handleTimeout(() => { .handleTimeout(() => {
reject('Request timed out'); reject("Request timed out");
}) })
.build(); .build();
}); });
await client.initiateFlow(request); await client.initiateFlow(request);
return promise; return promise;
} }

View File

@ -6,8 +6,9 @@ import { getPeerExternalAddresses } from "./compiled/helloWorld";
const main = async () => { const main = async () => {
const client = await createClient(testNet[0]); const client = await createClient(testNet[0]);
const addresses = getPeerExternalAddresses(client); const addresses = await getPeerExternalAddresses(client, client.relayPeerId!);
console.log("Relay external addresses: ", addresses); console.log("Relay external addresses: ", addresses);
client.disconnect();
}; };
main(); main();