44 lines
7.0 KiB
XML
44 lines
7.0 KiB
XML
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="466px" preserveAspectRatio="none" style="width:514px;height:466px;" version="1.1" viewBox="0 0 514 466" width="514px" zoomAndPan="magnify"><defs/><g><text fill="#000000" font-family="DejaVu Sans Mono" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="456" x="32.5" y="12.0669">A1 CONTEXT — command producer, timer daemon and callbacks</text><!--MD5=[6e8f311b0aa23032184ffba0ef926f91]
|
|
entity App--><rect fill="#EDF6FA" height="50.2656" style="stroke: #2B6F8E; stroke-width: 1.5;" width="204" x="125" y="23.0728"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="152" x="135" y="45.1397">01 Application task</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="184" x="135" y="60.2725">controller · priority 2</text><!--MD5=[9762e67b79b719797c568dcdd43c32f7]
|
|
entity Queue--><rect fill="#EDF6FA" height="50.2656" style="stroke: #2B6F8E; stroke-width: 1.5;" width="204" x="125" y="150.3328"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="176" x="135" y="172.3997">02 Timer command queue</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="184" x="135" y="187.5325">length 8 · copy command</text><!--MD5=[5a2ce1de96f1d53ac483ace889f38c75]
|
|
entity Daemon--><rect fill="#EDF6FA" height="50.2656" style="stroke: #2B6F8E; stroke-width: 1.5;" width="196" x="129" y="277.6028"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="160" x="139" y="299.6697">03 Timer daemon task</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="176" x="139" y="314.8025">priority 3 · own stack</text><!--MD5=[3feb8a2d146046aaf1f549f8f1affc25]
|
|
entity Lists--><rect fill="#EDF6FA" height="50.2656" style="stroke: #2B6F8E; stroke-width: 1.5;" width="196" x="6" y="404.8628"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="168" x="16" y="426.9297">04 Active timer lists</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="176" x="16" y="442.0625">one-shot + auto-reload</text><!--MD5=[17fd48c9fefe8f6f8ffd333772c9cf11]
|
|
entity Callback--><rect fill="#EDF6FA" height="50.2656" style="stroke: #2B6F8E; stroke-width: 1.5;" width="244" x="259" y="404.8628"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="224" x="269" y="426.9297">05 Callback application code</text><text fill="#000000" font-family="DejaVu Sans Mono" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="160" x="269" y="442.0625">short · non-blocking</text><!--MD5=[e63fa1ea7ceec3c2f7b8dba9091d8ebe]
|
|
link App to Queue--><path d="M227,73.6528 C227,93.6528 227,122.0628 227,143.6228 " fill="none" id="App->Queue" style="stroke: #8295A0; stroke-width: 1.0;"/><polygon fill="#8295A0" points="227,148.5628,231,139.5628,227,143.5628,223,139.5628,227,148.5628" style="stroke: #8295A0; stroke-width: 1.0;"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="232" x="228" y="116.3997">start / reset / change / stop</text><!--MD5=[109ad9d81c1eb39dcbe2ec557768addb]
|
|
link Queue to Daemon--><path d="M227,200.9228 C227,220.9228 227,249.3228 227,270.8928 " fill="none" id="Queue->Daemon" style="stroke: #8295A0; stroke-width: 1.0;"/><polygon fill="#8295A0" points="227,275.8328,231,266.8328,227,270.8328,223,266.8328,227,275.8328" style="stroke: #8295A0; stroke-width: 1.0;"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="120" x="228" y="243.6697">receive command</text><!--MD5=[4702a68ec0270973a53cdef44bd30c10]
|
|
link Daemon to Lists--><path d="M128.55,320.5128 C108.72,328.5428 90.24,340.4028 78,357.8628 C69.42,370.1128 73.6,385.5228 80.89,398.8628 " fill="none" id="Daemon->Lists" style="stroke: #8295A0; stroke-width: 1.0;"/><polygon fill="#8295A0" points="83.41,403.1328,82.2861,393.3483,80.8712,398.8253,75.3941,397.4104,83.41,403.1328" style="stroke: #8295A0; stroke-width: 1.0;"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="79" y="370.9297">update expiry</text><!--MD5=[ce0f57f328c8af3ec94508f093302e28]
|
|
link Lists to Daemon--><path d="M151.17,404.3728 C164.12,396.1528 177.48,386.1628 188,374.8628 C199.09,362.9628 208.11,347.3228 214.67,333.7428 " fill="none" id="Lists->Daemon" style="stroke: #8295A0; stroke-width: 1.0;"/><polygon fill="#8295A0" points="216.69,329.4328,209.2415,335.8764,214.5631,333.9579,216.4816,339.2795,216.69,329.4328" style="stroke: #8295A0; stroke-width: 1.0;"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="112" x="201.26" y="370.9297">expiry at tick</text><!--MD5=[d6c78dd4aa018993876ca7133ea5cd41]
|
|
link Daemon to Callback--><path d="M277.54,328.0928 C292.59,336.4928 308.62,346.6428 322,357.8628 C336.45,369.9928 350.07,385.9828 360.58,399.7328 " fill="none" id="Daemon->Callback" style="stroke: #8295A0; stroke-width: 1.0;"/><polygon fill="#8295A0" points="363.39,403.4728,361.1516,393.8817,360.374,399.4849,354.7709,398.7073,363.39,403.4728" style="stroke: #8295A0; stroke-width: 1.0;"/><text fill="#000000" font-family="DejaVu Sans Mono" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="88" x="339.47" y="370.9297">direct call</text><!--MD5=[65d4178a6a3fbe9bd07d07f6ded3430f]
|
|
@startuml
|
|
scale max 900*520
|
|
skinparam backgroundColor transparent
|
|
skinparam shadowing false
|
|
skinparam defaultFontName "DejaVu Sans Mono"
|
|
skinparam defaultFontSize 13
|
|
skinparam rectangleBorderColor #2b6f8e
|
|
skinparam rectangleBackgroundColor #edf6fa
|
|
skinparam ArrowColor #8295a0
|
|
top to bottom direction
|
|
title A1 CONTEXT — command producer, timer daemon and callbacks
|
|
rectangle "01 Application task\ncontroller · priority 2" as App
|
|
rectangle "02 Timer command queue\nlength 8 · copy command" as Queue
|
|
rectangle "03 Timer daemon task\npriority 3 · own stack" as Daemon
|
|
rectangle "04 Active timer lists\none-shot + auto-reload" as Lists
|
|
rectangle "05 Callback application code\nshort · non-blocking" as Callback
|
|
App - -> Queue : start / reset / change / stop
|
|
Queue - -> Daemon : receive command
|
|
Daemon - -> Lists : update expiry
|
|
Lists - -> Daemon : expiry at tick
|
|
Daemon - -> Callback : direct call
|
|
@enduml
|
|
|
|
PlantUML version 1.2020.02(Sun Mar 01 11:22:07 CET 2020)
|
|
(GPL source distribution)
|
|
Java Runtime: OpenJDK Runtime Environment
|
|
JVM: OpenJDK 64-Bit Server VM
|
|
Java Version: 25.0.4-ea+4-1-Debian
|
|
Operating System: Linux
|
|
Default Encoding: UTF-8
|
|
Language: en
|
|
Country: null
|
|
--></g></svg> |