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:
res <- Peer.identify() on otherNodePeerId:
res <- Peer.identify()
<- res.external_addresses <- res.external_addresses

View File

@ -1,53 +1,62 @@
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
let request; ): Promise<string[]> {
const promise = new Promise<string[]>((resolve, reject) => { let request;
request = new RequestFlowBuilder() const promise = new Promise<string[]>((resolve, reject) => {
.withRawScript( request = new RequestFlowBuilder()
` .withRawScript(
`
(seq (seq
(seq (seq
(call %init_peer_id% ("getDataSrv" "relay") [] relay) (seq
(call %init_peer_id% ("peer" "identify") [] res) (seq
) (call %init_peer_id% ("getDataSrv" "otherNodePeerId") [] otherNodePeerId)
(seq (call %init_peer_id% ("getDataSrv" "relay") [] relay)
)
(seq
(call relay ("op" "identity") [])
(call otherNodePeerId ("peer" "identify") [] res)
)
)
(call relay ("op" "identity") []) (call relay ("op" "identity") [])
(call %init_peer_id% ("callbackSrv" "response") [res.$.external_addresses!])
) )
(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", () => {
return client.relayPeerId !== undefined; // Not Used
}); return client.relayPeerId !== undefined;
});
h.on("getDataSrv", "otherNodePeerId", () => {
return otherNodePeerId;
});
h.on("callbackSrv", "response", (args) => {
const [res] = args;
resolve(res);
});
h.on('callbackSrv', 'response', (args) => { h.on("nameOfServiceWhereToSendXorError", "errorProbably", (args) => {
const [res] = args; // assuming error is the single argument
resolve(res); const [err] = args;
}); reject(err);
});
h.on('nameOfServiceWhereToSendXorError', 'errorProbably', (args) => { })
// assuming error is the single argument .handleScriptError(reject)
const [err] = args; .handleTimeout(() => {
reject(err); reject("Request timed out");
}); })
}) .build();
.handleScriptError(reject) });
.handleTimeout(() => { await client.initiateFlow(request);
reject('Request timed out'); return promise;
})
.build();
});
await client.initiateFlow(request);
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();