feat: initial etrelay UDP relay with master heartbeat
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
@startuml
|
||||
skinparam shadowing false
|
||||
title Tasks and data flow
|
||||
|
||||
rectangle "relay loop (main task)" as loop {
|
||||
card "public socket\nrecv_from" as recv
|
||||
card "sessions:\nHashMap<client, Sender>" as map
|
||||
}
|
||||
|
||||
rectangle "session task (one per client)" as st {
|
||||
card "mpsc Receiver\n(queue: 64)" as rx
|
||||
card "upstream socket\n(connected to ET)" as up
|
||||
}
|
||||
|
||||
rectangle "heartbeat task" as hb {
|
||||
card "interval 5 min" as tick
|
||||
card "probe socket" as probe
|
||||
}
|
||||
|
||||
recv --> map : lookup client
|
||||
map --> rx : try_send(packet)\n(full: drop)
|
||||
rx --> up : send
|
||||
up --> recv : recv, then public.send_to(client)
|
||||
tick --> probe : getinfo
|
||||
tick --> recv : heartbeat via public socket
|
||||
@enduml
|
||||
Reference in New Issue
Block a user