Pass + Doc
This commit is contained in:
49
docs/diagrams/13_planner_flow.mmd
Normal file
49
docs/diagrams/13_planner_flow.mmd
Normal file
@@ -0,0 +1,49 @@
|
||||
sequenceDiagram
|
||||
title Stream — Session Planner : Pair A demande le plan de Pair B
|
||||
|
||||
participant AppA as App Pair A (oc-booking)
|
||||
participant NATSA as NATS A
|
||||
participant NodeA as Node A
|
||||
participant StreamA as StreamService A
|
||||
participant NodeB as Node B
|
||||
participant StreamB as StreamService B
|
||||
participant DBB as DB Pair B (oc-lib)
|
||||
participant NATSB as NATS B
|
||||
|
||||
%% Ouverture session planner
|
||||
AppA->>NATSA: Publish(PROPALGATION_EVENT, {PB_PLANNER, peer_id:PeerID_B, payload:{}})
|
||||
NATSA->>NodeA: ListenNATS → PB_PLANNER
|
||||
|
||||
NodeA->>NodeA: Unmarshal → {peer_id: PeerID_B, payload: {}}
|
||||
NodeA->>StreamA: PublishCommon(nil, user, PeerID_B, ProtocolSendPlanner, {})
|
||||
Note over StreamA: WaitResponse=true, TTL=24h<br/>Stream long-lived vers Pair B
|
||||
StreamA->>NodeB: TempStream /opencloud/resource/planner/1.0
|
||||
StreamA->>NodeB: json.Encode(Event{Type:planner, From:DID_A, Payload:{}})
|
||||
|
||||
NodeB->>StreamB: HandleResponse → readLoop(ProtocolSendPlanner)
|
||||
StreamB->>StreamB: handleEvent(ProtocolSendPlanner, evt)
|
||||
StreamB->>StreamB: sendPlanner(evt)
|
||||
|
||||
alt evt.Payload vide (requête initiale)
|
||||
StreamB->>DBB: planner.GenerateShallow(AdminRequest)
|
||||
DBB-->>StreamB: plan (shallow booking plan de Pair B)
|
||||
StreamB->>StreamA: PublishCommon(nil, user, DID_A, ProtocolSendPlanner, planJSON)
|
||||
StreamA->>NodeA: json.Encode(Event{plan de B})
|
||||
NodeA->>NATSA: (forwardé à AppA via SEARCH_EVENT ou PLANNER event)
|
||||
NATSA->>AppA: Plan de Pair B
|
||||
else evt.Payload non vide (mise à jour planner)
|
||||
StreamB->>StreamB: m["peer_id"] = evt.From (DID_A)
|
||||
StreamB->>NATSB: SetNATSPub(PROPALGATION_EVENT, {PB_PLANNER, peer_id:DID_A, payload:plan})
|
||||
NATSB->>DBB: (oc-booking traite le plan sur NATS B)
|
||||
end
|
||||
|
||||
%% Fermeture session planner
|
||||
AppA->>NATSA: Publish(PROPALGATION_EVENT, {PB_CLOSE_PLANNER, peer_id:PeerID_B})
|
||||
NATSA->>NodeA: ListenNATS → PB_CLOSE_PLANNER
|
||||
|
||||
NodeA->>NodeA: Unmarshal → {peer_id: PeerID_B}
|
||||
NodeA->>StreamA: Mu.Lock()
|
||||
NodeA->>StreamA: Streams[ProtocolSendPlanner][PeerID_B].Stream.Close()
|
||||
NodeA->>StreamA: delete(Streams[ProtocolSendPlanner], PeerID_B)
|
||||
NodeA->>StreamA: Mu.Unlock()
|
||||
Note over StreamA,NodeB: Stream planner fermé — session terminée
|
||||
Reference in New Issue
Block a user