This repository has been archived on 2026-05-29. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
Programmierprojekt/documents/images/docs/networking/commands/sequence_diagram.svg
T
Lars Simon Winzer f971e6ad5b Docs: Write technical deep dive for commands and link to it from README
Includes puml diagrams and exported svgs
2026-04-04 15:51:29 +02:00

1 line
11 KiB
XML

<?plantuml 1.2026.2?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" data-diagram-type="SEQUENCE" height="297px" preserveAspectRatio="none" style="width:1031px;height:297px;" version="1.1" viewBox="0 0 1031 297" width="1031px" zoomAndPan="magnify"><defs/><g><g class="participant-lifeline" data-entity-uid="part1" data-qualified-name="SessionReader" id="part1-lifeline"><g><title>SessionReader</title><rect fill="#000000" fill-opacity="0.00000" height="225.1738" width="8" x="56.8359" y="36.4883"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5,5;" x1="60" x2="60" y1="36.4883" y2="261.6621"/></g></g><g class="participant-lifeline" data-entity-uid="part2" data-qualified-name="Dispatcher" id="part2-lifeline"><g><title>CommandParserDispatcher</title><rect fill="#000000" fill-opacity="0.00000" height="225.1738" width="8" x="230.0313" y="36.4883"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5,5;" x1="233.8521" x2="233.8521" y1="36.4883" y2="261.6621"/></g></g><g class="participant-lifeline" data-entity-uid="part3" data-qualified-name="Parser" id="part3-lifeline"><g><title>CommandParser.T.</title><rect fill="#000000" fill-opacity="0.00000" height="225.1738" width="8" x="417.5264" y="36.4883"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5,5;" x1="421.2104" x2="421.2104" y1="36.4883" y2="261.6621"/></g></g><g class="participant-lifeline" data-entity-uid="part4" data-qualified-name="Router" id="part4-lifeline"><g><title>CommandRouter</title><rect fill="#000000" fill-opacity="0.00000" height="225.1738" width="8" x="570.124" y="36.4883"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5,5;" x1="573.8423" x2="573.8423" y1="36.4883" y2="261.6621"/></g></g><g class="participant-lifeline" data-entity-uid="part5" data-qualified-name="Handler" id="part5-lifeline"><g><title>CommandHandler.T.</title><rect fill="#000000" fill-opacity="0.00000" height="225.1738" width="8" x="755.8306" y="36.4883"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5,5;" x1="758.8989" x2="758.8989" y1="36.4883" y2="261.6621"/></g></g><g class="participant-lifeline" data-entity-uid="part6" data-qualified-name="ResponseDispatcher" id="part6-lifeline"><g><title>ResponseDispatcher</title><rect fill="#000000" fill-opacity="0.00000" height="225.1738" width="8" x="945.7646" y="36.4883"/><line style="stroke:#181818;stroke-width:0.5;stroke-dasharray:5,5;" x1="948.9336" x2="948.9336" y1="36.4883" y2="261.6621"/></g></g><g class="participant participant-head" data-entity-uid="part1" data-qualified-name="SessionReader" id="part1-head"><rect fill="#E2E2F0" height="30.4883" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="111.6719" x="5" y="5"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="97.6719" x="12" y="25.5352">SessionReader</text></g><g class="participant participant-tail" data-entity-uid="part1" data-qualified-name="SessionReader" id="part1-tail"><rect fill="#E2E2F0" height="30.4883" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="111.6719" x="5" y="260.6621"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="97.6719" x="12" y="281.1973">SessionReader</text></g><g class="participant participant-head" data-entity-uid="part2" data-qualified-name="Dispatcher" id="part2-head"><rect fill="#E2E2F0" height="30.4883" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="198.3584" x="134.8521" y="5"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="184.3584" x="141.8521" y="25.5352">CommandParserDispatcher</text></g><g class="participant participant-tail" data-entity-uid="part2" data-qualified-name="Dispatcher" id="part2-tail"><rect fill="#E2E2F0" height="30.4883" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="198.3584" x="134.8521" y="260.6621"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="184.3584" x="141.8521" y="281.1973">CommandParserDispatcher</text></g><g class="participant participant-head" data-entity-uid="part3" data-qualified-name="Parser" id="part3-head"><rect fill="#E2E2F0" height="30.4883" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="156.6318" x="343.2104" y="5"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="142.6318" x="350.2104" y="25.5352">CommandParser&lt;T&gt;</text></g><g class="participant participant-tail" data-entity-uid="part3" data-qualified-name="Parser" id="part3-tail"><rect fill="#E2E2F0" height="30.4883" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="156.6318" x="343.2104" y="260.6621"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="142.6318" x="350.2104" y="281.1973">CommandParser&lt;T&gt;</text></g><g class="participant participant-head" data-entity-uid="part4" data-qualified-name="Router" id="part4-head"><rect fill="#E2E2F0" height="30.4883" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="128.5635" x="509.8423" y="5"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="114.5635" x="516.8423" y="25.5352">CommandRouter</text></g><g class="participant participant-tail" data-entity-uid="part4" data-qualified-name="Router" id="part4-tail"><rect fill="#E2E2F0" height="30.4883" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="128.5635" x="509.8423" y="260.6621"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="114.5635" x="516.8423" y="281.1973">CommandRouter</text></g><g class="participant participant-head" data-entity-uid="part5" data-qualified-name="Handler" id="part5-head"><rect fill="#E2E2F0" height="30.4883" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="167.8633" x="675.8989" y="5"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="153.8633" x="682.8989" y="25.5352">CommandHandler&lt;T&gt;</text></g><g class="participant participant-tail" data-entity-uid="part5" data-qualified-name="Handler" id="part5-tail"><rect fill="#E2E2F0" height="30.4883" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="167.8633" x="675.8989" y="260.6621"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="153.8633" x="682.8989" y="281.1973">CommandHandler&lt;T&gt;</text></g><g class="participant participant-head" data-entity-uid="part6" data-qualified-name="ResponseDispatcher" id="part6-head"><rect fill="#E2E2F0" height="30.4883" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="151.6621" x="873.9336" y="5"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="137.6621" x="880.9336" y="25.5352">ResponseDispatcher</text></g><g class="participant participant-tail" data-entity-uid="part6" data-qualified-name="ResponseDispatcher" id="part6-tail"><rect fill="#E2E2F0" height="30.4883" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="151.6621" x="873.9336" y="260.6621"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="137.6621" x="880.9336" y="281.1973">ResponseDispatcher</text></g><g class="message" data-entity-1="part1" data-entity-2="part2" id="msg1"><polygon fill="#181818" points="222.0313,63.7988,232.0313,67.7988,222.0313,71.7988,226.0313,67.7988" style="stroke:#181818;stroke-width:1;"/><line style="stroke:#181818;stroke-width:1;" x1="60.8359" x2="228.0313" y1="67.7988" y2="67.7988"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="149.1953" x="67.8359" y="63.0566">parse(primitiveRequest)</text></g><g class="message" data-entity-1="part2" data-entity-2="part3" id="msg2"><polygon fill="#181818" points="409.5264,93.1094,419.5264,97.1094,409.5264,101.1094,413.5264,97.1094" style="stroke:#181818;stroke-width:1;"/><line style="stroke:#181818;stroke-width:1;" x1="234.0313" x2="415.5264" y1="97.1094" y2="97.1094"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="149.1953" x="241.0313" y="92.3672">parse(primitiveRequest)</text></g><g class="message" data-entity-1="part3" data-entity-2="part2" id="msg3"><polygon fill="#181818" points="245.0313,122.4199,235.0313,126.4199,245.0313,130.4199,241.0313,126.4199" style="stroke:#181818;stroke-width:1;"/><line style="stroke:#181818;stroke-width:1;stroke-dasharray:2,2;" x1="239.0313" x2="420.5264" y1="126.4199" y2="126.4199"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="103.9619" x="251.0313" y="121.6777">ExampleRequest</text></g><g class="message" data-entity-1="part2" data-entity-2="part1" id="msg4"><polygon fill="#181818" points="71.8359,151.7305,61.8359,155.7305,71.8359,159.7305,67.8359,155.7305" style="stroke:#181818;stroke-width:1;"/><line style="stroke:#181818;stroke-width:1;stroke-dasharray:2,2;" x1="65.8359" x2="233.0313" y1="155.7305" y2="155.7305"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="50.4448" x="77.8359" y="150.9883">Request</text></g><g class="message" data-entity-1="part1" data-entity-2="part4" id="msg5"><polygon fill="#181818" points="562.124,181.041,572.124,185.041,562.124,189.041,566.124,185.041" style="stroke:#181818;stroke-width:1;"/><line style="stroke:#181818;stroke-width:1;" x1="60.8359" x2="568.124" y1="185.041" y2="185.041"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="105.2886" x="67.8359" y="180.2988">execute(request)</text></g><g class="message" data-entity-1="part4" data-entity-2="part5" id="msg6"><polygon fill="#181818" points="747.8306,210.3516,757.8306,214.3516,747.8306,218.3516,751.8306,214.3516" style="stroke:#181818;stroke-width:1;"/><line style="stroke:#181818;stroke-width:1;" x1="574.124" x2="753.8306" y1="214.3516" y2="214.3516"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="161.7065" x="581.124" y="209.6094">execute(ExampleRequest)</text></g><g class="message" data-entity-1="part5" data-entity-2="part6" id="msg7"><polygon fill="#181818" points="937.7646,239.6621,947.7646,243.6621,937.7646,247.6621,941.7646,243.6621" style="stroke:#181818;stroke-width:1;"/><line style="stroke:#181818;stroke-width:1;" x1="759.8306" x2="943.7646" y1="243.6621" y2="243.6621"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="165.9341" x="766.8306" y="238.9199">dispatch(ExampleRequest)</text></g><?plantuml-src VP1DZi8m38NtEON52XPSe49i6AHPZZfp0TDQCn7D3tQAUdnSDHND5B684ilVUtwnNAsFoEZWWitrbqFlsrFe0aDYzA8jyiaOlPDjR4IVu9j4RF0rOKjST4x1EVJj5x8GVrXLf-QF653WMHMAJI4v_1mt8pnLhwphqAV9S7gzDFlKqptTSbcWDKaCNcWHonJ_WlrnaHagY6EcRMJhRB9tgkdMawITMK0gcPA_mJEm_sz_7j35RkOALqNBQ1NCs3fpNb05D52ZpotFatD7cRoG1LHEtvcP60rNcr9TcukLy040?></g></svg>