summaryrefslogtreecommitdiffstats
path: root/doc/sphinx/uml/main-loop.uml
diff options
context:
space:
mode:
Diffstat (limited to 'doc/sphinx/uml/main-loop.uml')
-rw-r--r--doc/sphinx/uml/main-loop.uml60
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