blob: 9e29c9f7bcccf43e0fa783e7f7d5e55dca50b6f5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
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
|