Pass + Doc
This commit is contained in:
56
docs/diagrams/01_node_init.mmd
Normal file
56
docs/diagrams/01_node_init.mmd
Normal file
@@ -0,0 +1,56 @@
|
||||
sequenceDiagram
|
||||
title Node Initialization — Pair A (InitNode)
|
||||
|
||||
participant MainA as main (Pair A)
|
||||
participant NodeA as Node A
|
||||
participant libp2pA as libp2p (Pair A)
|
||||
participant DBA as DB Pair A (oc-lib)
|
||||
participant NATSA as NATS A
|
||||
participant IndexerA as Indexer (partagé)
|
||||
participant StreamA as StreamService A
|
||||
participant PubSubA as PubSubService A
|
||||
|
||||
MainA->>NodeA: InitNode(isNode, isIndexer, isNativeIndexer)
|
||||
|
||||
NodeA->>NodeA: LoadKeyFromFilePrivate() → priv
|
||||
NodeA->>NodeA: LoadPSKFromFile() → psk
|
||||
|
||||
NodeA->>libp2pA: New(PrivateNetwork(psk), Identity(priv), ListenAddr:4001)
|
||||
libp2pA-->>NodeA: host A (PeerID_A)
|
||||
|
||||
Note over NodeA: isNode == true
|
||||
|
||||
NodeA->>libp2pA: NewGossipSub(ctx, host)
|
||||
libp2pA-->>NodeA: ps (GossipSub)
|
||||
|
||||
NodeA->>IndexerA: ConnectToIndexers → SendHeartbeat /opencloud/heartbeat/1.0
|
||||
Note over IndexerA: Heartbeat long-lived établi<br/>Score qualité calculé (bw + uptime + diversité)
|
||||
IndexerA-->>NodeA: OK
|
||||
|
||||
NodeA->>NodeA: claimInfo(name, hostname)
|
||||
NodeA->>IndexerA: TempStream /opencloud/record/publish/1.0
|
||||
NodeA->>IndexerA: json.Encode(PeerRecord A signé)
|
||||
IndexerA->>IndexerA: DHT.PutValue("/node/"+DID_A, record)
|
||||
|
||||
NodeA->>DBA: NewRequestAdmin(PEER).Search(SELF)
|
||||
DBA-->>NodeA: peer A local (ou UUID généré)
|
||||
|
||||
NodeA->>NodeA: StartGC(30s) — GC sur StreamRecords
|
||||
|
||||
NodeA->>StreamA: InitStream(ctx, host, PeerID_A, 1000, nodeA)
|
||||
StreamA->>StreamA: SetStreamHandler(heartbeat/partner, search, planner, ...)
|
||||
StreamA->>DBA: Search(PEER, PARTNER) → liste partenaires
|
||||
DBA-->>StreamA: [] (aucun partenaire au démarrage)
|
||||
StreamA-->>NodeA: StreamService A
|
||||
|
||||
NodeA->>PubSubA: InitPubSub(ctx, host, ps, nodeA, streamA)
|
||||
PubSubA->>PubSubA: subscribeEvents(PB_SEARCH, timeout=-1)
|
||||
PubSubA-->>NodeA: PubSubService A
|
||||
|
||||
NodeA->>NodeA: SubscribeToSearch(ps, callback)
|
||||
Note over NodeA: callback: GetPeerRecord(evt.From)<br/>→ StreamService.SendResponse
|
||||
|
||||
NodeA->>NATSA: ListenNATS(nodeA)
|
||||
Note over NATSA: Enregistre handlers:<br/>CREATE_RESOURCE, PROPALGATION_EVENT
|
||||
|
||||
NodeA-->>MainA: *Node A prêt
|
||||
Reference in New Issue
Block a user