Files
oc-discovery/docs/diagrams/04_indexer_publish.puml

48 lines
1.8 KiB
Plaintext
Raw Normal View History

2026-02-24 14:31:37 +01:00
@startuml
2026-03-09 14:57:41 +01:00
title Indexer — Peer A publishing, Peer B publishing (handleNodePublish → DHT)
2026-02-24 14:31:37 +01:00
participant "Node A" as NodeA
participant "Node B" as NodeB
2026-03-09 14:57:41 +01:00
participant "IndexerService (shared)" as Indexer
2026-02-24 14:31:37 +01:00
participant "DHT Kademlia" as DHT
2026-03-09 14:57:41 +01:00
note over NodeA: Start after claimInfo or refresh TTL
2026-02-24 14:31:37 +01:00
2026-03-09 14:57:41 +01:00
par Peer A publish its PeerRecord
2026-02-24 14:31:37 +01:00
NodeA -> Indexer: TempStream /opencloud/record/publish/1.0
2026-03-09 14:57:41 +01:00
NodeA -> Indexer: stream.Encode(PeerRecord A {DID_A, PeerID_A, PubKey_A, Expiry, Sig_A})
2026-02-24 14:31:37 +01:00
Indexer -> Indexer: Verify sig_A (reconstruit rec minimal, pubKey_A.Verify)
Indexer -> Indexer: Check StreamRecords[Heartbeat][PeerID_A] existe
2026-03-09 14:57:41 +01:00
alt A active Heartbeat
2026-02-24 14:31:37 +01:00
Indexer -> Indexer: StreamRecord A → DID_A, Record=PeerRecord A, LastSeen=now
Indexer -> DHT: PutValue("/node/"+DID_A, PeerRecord A JSON)
2026-03-09 14:57:41 +01:00
Indexer -> DHT: PutValue("/name/"+name_A, DID_A)
Indexer -> DHT: PutValue("/peer/"+peer_id_A, DID_A)
2026-02-24 14:31:37 +01:00
DHT --> Indexer: ok
else Pas de heartbeat
Indexer -> NodeA: (erreur "no heartbeat", stream close)
end
2026-03-09 14:57:41 +01:00
else Peer B publish its PeerRecord
2026-02-24 14:31:37 +01:00
NodeB -> Indexer: TempStream /opencloud/record/publish/1.0
2026-03-09 14:57:41 +01:00
NodeB -> Indexer: stream.Encode(PeerRecord B {DID_B, PeerID_B, PubKey_B, Expiry, Sig_B})
2026-02-24 14:31:37 +01:00
Indexer -> Indexer: Verify sig_B
Indexer -> Indexer: Check StreamRecords[Heartbeat][PeerID_B] existe
2026-03-09 14:57:41 +01:00
alt B Active Heartbeat
2026-02-24 14:31:37 +01:00
Indexer -> Indexer: StreamRecord B → DID_B, Record=PeerRecord B, LastSeen=now
Indexer -> DHT: PutValue("/node/"+DID_B, PeerRecord B JSON)
2026-03-09 14:57:41 +01:00
Indexer -> DHT: PutValue("/name/"+name_B, DID_B)
Indexer -> DHT: PutValue("/peer/"+peer_id_B, DID_B)
2026-02-24 14:31:37 +01:00
DHT --> Indexer: ok
else Pas de heartbeat
Indexer -> NodeB: (erreur "no heartbeat", stream close)
end
end par
2026-03-09 14:57:41 +01:00
note over DHT: DHT got \n"/node/DID_A" et "/node/DID_B"
2026-02-24 14:31:37 +01:00
@enduml