wegen/FrOSCon26/research/diagrams/state-engine.svg

84 lines
4.7 KiB
XML
Raw Normal View History

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.42.4 (0)
-->
<!-- Title: BuffState Pages: 1 -->
<svg width="762pt" height="210pt"
viewBox="0.00 0.00 762.00 209.94" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 205.94)">
<title>BuffState</title>
<text text-anchor="middle" x="377" y="-186.74" font-family="sans-serif" font-size="14.00">Life&#45;cycle of one buffer »slot«</text>
<!-- FREE -->
<g id="node1" class="node">
<title>FREE</title>
<ellipse fill="#dbe9ff" stroke="black" stroke-width="1.4" cx="32.5" cy="-94.44" rx="32.5" ry="32.5"/>
<text text-anchor="middle" x="32.5" y="-91.34" font-family="sans-serif" font-size="12.00">FREE</text>
</g>
<!-- READ -->
<g id="node2" class="node">
<title>READ</title>
<ellipse fill="#ffedcc" stroke="black" stroke-width="1.4" cx="275.5" cy="-94.44" rx="32.5" ry="32.5"/>
<text text-anchor="middle" x="275.5" y="-91.34" font-family="sans-serif" font-size="12.00">READ</text>
</g>
<!-- FREE&#45;&gt;READ -->
<g id="edge1" class="edge">
<title>FREE&#45;&gt;READ</title>
<path fill="none" stroke="black" d="M65.01,-94.44C108.04,-94.44 185.27,-94.44 232.99,-94.44"/>
<polygon fill="black" stroke="black" points="232.99,-97.94 242.99,-94.44 232.99,-90.94 232.99,-97.94"/>
<text text-anchor="start" x="83" y="-108.44" font-family="sans-serif" font-size="10.00"> &#160;submit read</text>
<text text-anchor="start" x="83" y="-97.44" font-family="sans-serif" font-size="10.00"> &#160;addNextReadSubmissions()</text>
</g>
<!-- FEED -->
<g id="node3" class="node">
<title>FEED</title>
<ellipse fill="#d8f0d8" stroke="black" stroke-width="1.4" cx="503.5" cy="-146.44" rx="32.5" ry="32.5"/>
<text text-anchor="middle" x="503.5" y="-143.34" font-family="sans-serif" font-size="12.00">FEED</text>
</g>
<!-- READ&#45;&gt;FEED -->
<g id="edge2" class="edge">
<title>READ&#45;&gt;FEED</title>
<path fill="none" stroke="black" d="M307.45,-101.56C347.49,-110.77 417.35,-126.84 461.69,-137.05"/>
<polygon fill="black" stroke="black" points="461.03,-140.49 471.56,-139.32 462.6,-133.67 461.03,-140.49"/>
<text text-anchor="start" x="326" y="-147.44" font-family="sans-serif" font-size="10.00"> &#160;read completed OK</text>
<text text-anchor="start" x="326" y="-136.44" font-family="sans-serif" font-size="10.00"> &#160;handleCompletedRead()</text>
</g>
<!-- STOP -->
<g id="node5" class="node">
<title>STOP</title>
<ellipse fill="#ffd6d6" stroke="black" stroke-width="1.4" cx="503.5" cy="-61.44" rx="30.5" ry="30.5"/>
<ellipse fill="none" stroke="black" stroke-width="1.4" cx="503.5" cy="-61.44" rx="34.5" ry="34.5"/>
<text text-anchor="middle" x="503.5" y="-58.34" font-family="sans-serif" font-size="12.00">STOP</text>
</g>
<!-- READ&#45;&gt;STOP -->
<g id="edge3" class="edge">
<title>READ&#45;&gt;STOP</title>
<path fill="none" stroke="#a00000" d="M307.92,-89.85C347.22,-84.11 414.71,-74.26 458.97,-67.79"/>
<polygon fill="#a00000" stroke="#a00000" points="459.75,-71.22 469.14,-66.31 458.74,-64.29 459.75,-71.22"/>
<text text-anchor="middle" x="388.5" y="-89.44" font-family="sans-serif" font-size="10.00" fill="#a00000"> &#160;short read / EOF &#160;</text>
</g>
<!-- SHOW -->
<g id="node4" class="node">
<title>SHOW</title>
<ellipse fill="#e7d8ff" stroke="black" stroke-width="1.4" cx="721.5" cy="-146.44" rx="32.5" ry="32.5"/>
<text text-anchor="middle" x="721.5" y="-143.34" font-family="sans-serif" font-size="12.00">SHOW</text>
</g>
<!-- FEED&#45;&gt;SHOW -->
<g id="edge4" class="edge">
<title>FEED&#45;&gt;SHOW</title>
<path fill="none" stroke="black" d="M536.37,-146.44C574.13,-146.44 637.14,-146.44 678.76,-146.44"/>
<polygon fill="black" stroke="black" points="678.85,-149.94 688.85,-146.44 678.85,-142.94 678.85,-149.94"/>
<text text-anchor="start" x="556" y="-160.44" font-family="sans-serif" font-size="10.00"> &#160;publish frame</text>
<text text-anchor="start" x="556" y="-149.44" font-family="sans-serif" font-size="10.00"> &#160;maybeDisplayFrame()</text>
</g>
<!-- SHOW&#45;&gt;FREE -->
<g id="edge5" class="edge">
<title>SHOW&#45;&gt;FREE</title>
<path fill="none" stroke="#5a2ca0" d="M698.02,-123.55C665.91,-92.66 603.51,-39.12 538,-18.44 369.44,34.78 157.11,-41.15 71.68,-77.22"/>
<polygon fill="#5a2ca0" stroke="#5a2ca0" points="70.19,-74.05 62.37,-81.21 72.94,-80.49 70.19,-74.05"/>
<text text-anchor="start" x="328.5" y="-19.44" font-family="sans-serif" font-size="10.00" fill="#5a2ca0"> &#160;GUI released frame</text>
<text text-anchor="start" x="328.5" y="-8.44" font-family="sans-serif" font-size="10.00" fill="#5a2ca0"> &#160;(toDisplay_ == nullptr)</text>
</g>
</g>
</svg>