2020-07-17 12:56:16 +02:00
|
|
|
@startuml
|
|
|
|
|
2020-08-21 15:19:53 +02:00
|
|
|
title DHCP server main loop (Kea 1.8.0)
|
2020-07-17 12:56:16 +02:00
|
|
|
|
|
|
|
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
|
|
|
|
|
2020-07-21 22:27:50 +02:00
|
|
|
footer dashed arrow means priority
|
|
|
|
|
2020-07-17 12:56:16 +02:00
|
|
|
@enduml
|