transition to registry (#82)

This commit is contained in:
Aleksey Proshutisnkiy
2022-02-24 16:37:58 +03:00
committed by GitHub
parent 845705df98
commit ab31e61d1c
43 changed files with 10103 additions and 2986 deletions

View File

@ -1,10 +1,9 @@
-- This file demonstrates how to send events to subscribers of a topic
-- Detailed explanation can be found in the Aqua Book: https://doc.fluence.dev/aqua-book/libraries/aqua-dht#passing-data-to-subscribers
import "@fluencelabs/aqua-dht/pubsub.aqua"
import "@fluencelabs/aqua-dht/dht.aqua"
alias PeerId: string
import "@fluencelabs/registry/routing.aqua"
import "@fluencelabs/registry/registry.aqua"
import PeerId from "@fluencelabs/aqua-lib/builtin.aqua"
-- Application event
data Event:
@ -24,10 +23,10 @@ func call_subscriber(sub: Record, event: Event):
SubscriberAPI.receive_event(event)
-- send event to every subscriber
func send_everyone(topic: string, event: Event):
func send_everyone(route_id: string, event: Event, ack: i16):
on HOST_PEER_ID:
-- retrieve all subscribers of a topic
subscribers <- findSubscribers(topic)
subscribers <- resolveRoute(route_id, ack)
-- iterate through them
for sub <- subscribers par:
call_subscriber(sub, event)

View File

@ -1,3 +1,9 @@
import initTopicAndSubscribeBlocking, findSubscribers from "@fluencelabs/aqua-dht/pubsub.aqua"
module Export
import createRouteAndRegisterBlocking, resolveRoute from "@fluencelabs/registry/routing.aqua"
import Peer from "@fluencelabs/aqua-lib/builtin.aqua"
export createRouteAndRegisterBlocking, resolveRoute, timestamp_sec
export initTopicAndSubscribeBlocking, findSubscribers
func timestamp_sec() -> u64:
result <- Peer.timestamp_sec()
<- result

View File

@ -1,27 +1,53 @@
import { Fluence } from "@fluencelabs/fluence";
import { krasnodar } from "@fluencelabs/fluence-network-environment";
import { initTopicAndSubscribeBlocking, findSubscribers } from "./generated/export";
import {Fluence, KeyPair} from "@fluencelabs/fluence";
import { krasnodar, Node } from "@fluencelabs/fluence-network-environment";
import {createRouteAndRegisterBlocking, resolveRoute, timestamp_sec} from "./generated/export";
let local: Node[] = [
{
peerId: "12D3KooWHBG9oaVx4i3vi6c1rSBUm7MLBmyGmmbHoZ23pmjDCnvK",
multiaddr:
"/ip4/127.0.0.1/tcp/9990/ws/p2p/12D3KooWHBG9oaVx4i3vi6c1rSBUm7MLBmyGmmbHoZ23pmjDCnvK",
},
{
peerId: "12D3KooWRABanQHUn28dxavN9ZS1zZghqoZVAYtFpoN7FdtoGTFv",
multiaddr:
"/ip4/127.0.0.1/tcp/9991/ws/p2p/12D3KooWRABanQHUn28dxavN9ZS1zZghqoZVAYtFpoN7FdtoGTFv",
},
{
peerId: "12D3KooWFpQ7LHxcC9FEBUh3k4nSCC12jBhijJv3gJbi7wsNYzJ5",
multiaddr:
"/ip4/127.0.0.1/tcp/9992/ws/p2p/12D3KooWFpQ7LHxcC9FEBUh3k4nSCC12jBhijJv3gJbi7wsNYzJ5",
},
];
async function main() {
// connect to the Fluence network
await Fluence.start({ connectTo: krasnodar[1] });
let topic = "myTopic" + new Date().valueOf();
let value = "myValue";
console.log("Will create topic", topic);
// create topic (if not exists) and subscribe on it
let relay = Fluence.getStatus().relayPeerId;
await initTopicAndSubscribeBlocking(
topic, value, relay, null,
(s) => console.log(`node ${s} saved the record`)
await Fluence.start({ connectTo: local[0] });
console.log("%s", await timestamp_sec());
console.log(
"📗 created a fluence peer %s with relay %s",
Fluence.getStatus().peerId,
Fluence.getStatus().relayPeerId
);
// find other peers subscribed to that topic
let subscribers = await findSubscribers(topic);
let label = "myTopic";
let value = "myValue";
console.log("Will create topic", label);
// create route (if not exists) and register on it
let relay = Fluence.getStatus().relayPeerId;
let route_id = await createRouteAndRegisterBlocking(
label, value, relay, null,
(s) => console.log(`node ${s} saved the record`),
0
);
// find other peers on this route
console.log("let's find subscribers for %s", route_id);
let subscribers = await resolveRoute(route_id, 0);
console.log("found subscribers:", subscribers);
}
main()
.then(() => process.exit(0))
.catch(error => {
main().then(() => process.exit(0))
.catch(error => {
console.error(error);
process.exit(1);
});