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"):
identify: -> ExternalAddresses
func getPeerExternalAddresses() -> []string:
func getPeerExternalAddresses(otherNodePeerId: string) -> []string:
on otherNodePeerId:
res <- Peer.identify()
<- res.external_addresses

View File

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

View File

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