diff options
Diffstat (limited to 'doc/sphinx/uml/main-loop.uml')
-rw-r--r-- | doc/sphinx/uml/main-loop.uml | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/doc/sphinx/uml/main-loop.uml b/doc/sphinx/uml/main-loop.uml new file mode 100644 index 0000000..9e29c9f --- /dev/null +++ b/doc/sphinx/uml/main-loop.uml @@ -0,0 +1,60 @@ +@startuml + +title DHCP server main loop (Kea 1.8.0) + +skinparam linetype ortho + +rectangle "Main Loop" { + agent "Wait for next event" as run + + rectangle "Event Loop" as run_one { + together { + agent "Signal" as signal + + agent "Handle Signal" as handleSignal + } + + together { + agent "External Socket" as external_socket + + agent "Handle External Socket" as handleExternalSocket + } + + together { + agent "DHCP Query" as query + + agent "Process Query" as processQuery + } + + agent "Timeout" as timeout + } + + together { + agent "I/O Service" as poll + + agent "Execute ready handler" as ready + } + + agent "Check Shutdown" as shutdown +} + +run --> run_one : get next event +run_one --> signal +signal -right-> handleSignal : got signal +handleSignal --> poll +signal -[dashed]-> external_socket +external_socket -right-> handleExternalSocket : external socket ready +handleExternalSocket --> poll +external_socket -[dashed]-> query +query -right-> processQuery : DHCP socket ready +processQuery --> poll +query -[dashed]-> timeout +timeout --> poll : timeout expired +poll -> ready : handler ready +poll ---> shutdown : no ready handler +ready -> ready : execute ready handler +shutdown -u-> run + +footer dashed arrow means priority + +@enduml
\ No newline at end of file |