Statistics
| Branch: | Revision:

urtware / doc / activitydiagrams / subscriber / urtHrtSubscriberFetchLatestMessage.svg @ ee83a495

History | View | Annotate | Download (30.318 KB)

1
<?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="1073px" preserveAspectRatio="none" style="width:1782px;height:1073px;" version="1.1" viewBox="0 0 1782 1073" width="1782px" zoomAndPan="magnify"><defs><filter height="300%" id="f1amcfo5x9amkf" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><text fill="#000000" font-family="sans-serif" font-size="18" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="89" x="845.5" y="26.708">µRtWare</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="338" x="721" y="47.6611">urtHrtSubscriberFetchLatestMessage()</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="0" x="893" y="68.6143"/><path d="M1009.25,72.8594 L1009.25,304.7188 L1497.25,304.7188 L1497.25,82.8594 L1487.25,72.8594 L1009.25,72.8594 " fill="#FBFB77" filter="url(#f1amcfo5x9amkf)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1487.25,72.8594 L1487.25,82.8594 L1497.25,82.8594 L1487.25,72.8594 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="1009.25" x2="1140.25" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1144.25" y="89.4263"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="78" x="1144.25" y="89.4263">subscriber</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="136" x="1226.25" y="89.4263">: urt_hrtsubscriber_t*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1366.25" x2="1497.25" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="313" x="1015.25" y="105.0591">The HRT subscriber that shall fetch the message.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="76" x="1015.25" y="120.1919">Must not be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="1095.25" y="120.1919">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="1127.25" y="120.1919">.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1009.25" x2="1197.25" y1="130.8242" y2="130.8242"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1201.25" y="134.8247"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="59" x="1201.25" y="134.8247">payload</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="41" x="1264.25" y="134.8247">: void*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1309.25" x2="1497.25" y1="130.8242" y2="130.8242"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="238" x="1015.25" y="150.4575">Pointer where to copy the payload to.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="46" x="1015.25" y="165.5903">May be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="1065.25" y="165.5903">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="195" x="1101.25" y="165.5903">for messages without payload.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1009.25" x2="1204.25" y1="176.2227" y2="176.2227"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1208.25" y="180.2231"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="41" x="1208.25" y="180.2231">bytes</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="45" x="1253.25" y="180.2231">: size_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1302.25" x2="1497.25" y1="176.2227" y2="176.2227"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="137" x="1015.25" y="195.856">Payload size in bytes.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1009.25" x2="1177.75" y1="206.4883" y2="206.4883"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1181.75" y="210.4888"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="53" x="1181.75" y="210.4888">latency</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="1238.75" y="210.4888">: urt_delay_t*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1328.75" x2="1497.25" y1="206.4883" y2="206.4883"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="267" x="1015.25" y="226.1216">The latency can be returned by reference.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="46" x="1015.25" y="241.2544">May be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="1065.25" y="241.2544">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="1097.25" y="241.2544">.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1009.25" x2="1497.25" y1="249.3203" y2="249.3203"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="1009.25" x2="1497.25" y1="251.3203" y2="251.3203"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="1009.25" x2="1182.25" y1="261.8867" y2="261.8867"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1186.25" y="265.8872"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="45" x="1186.25" y="265.8872">return</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="85" x="1235.25" y="265.8872">: urt_status_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1324.25" x2="1497.25" y1="261.8867" y2="261.8867"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="1015.25" y="281.52">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="1068.25" y="281.52">URT_STATUS_OK</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="75" x="1176.25" y="281.52">on success.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="1015.25" y="296.6528">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="128" x="1068.25" y="296.6528">URT_STATUS_ERROR</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="282" x="1200.25" y="296.6528">if the subscriber is not associated to a topic.</text><ellipse cx="1253.25" cy="334.7188" fill="#000000" filter="url(#f1amcfo5x9amkf)" rx="10" ry="10" style="stroke: none; stroke-width: 1.0;"/><polygon fill="#FEFECE" filter="url(#f1amcfo5x9amkf)" points="1190.75,364.7188,1315.75,364.7188,1327.75,376.7188,1315.75,388.7188,1190.75,388.7188,1178.75,376.7188,1190.75,364.7188" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="125" x="1190.75" y="380.5269">Associated to a topic?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="1158.75" y="374.1245">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="1327.75" y="374.1245">no</text><rect fill="#FEFECE" filter="url(#f1amcfo5x9amkf)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="80" x="700.5" y="398.7188"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="60" x="710.5" y="419.8574">lock topic</text><rect fill="#FEFECE" filter="url(#f1amcfo5x9amkf)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="185" x="648" y="452.6875"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="165" x="658" y="473.8262">access last read message</text><rect fill="#000000" filter="url(#f1amcfo5x9amkf)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="508" x="486.5" y="562.3667"/><rect fill="#FEFECE" filter="url(#f1amcfo5x9amkf)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="181" x="500.5" y="588.3667"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="161" x="510.5" y="609.5054">proceed to next message</text><rect fill="#FEFECE" filter="url(#f1amcfo5x9amkf)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="271" x="709.5" y="588.3667"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="251" x="719.5" y="609.5054">decrement next message's HRT counter</text><rect fill="#000000" filter="url(#f1amcfo5x9amkf)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="508" x="486.5" y="642.3354"/><polygon fill="#FEFECE" filter="url(#f1amcfo5x9amkf)" points="623.5,506.6563,857.5,506.6563,869.5,518.6563,857.5,530.6563,623.5,530.6563,611.5,518.6563,623.5,506.6563" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="744.5" y="540.8667">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="234" x="623.5" y="522.4644">Timestamp of next message is younger?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="597.5" y="516.062">no</text><rect fill="#000000" filter="url(#f1amcfo5x9amkf)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="1499" x="10" y="690.3354"/><rect fill="#FFFFFF" filter="url(#f1amcfo5x9amkf)" height="231.0703" style="stroke: #000000; stroke-width: 2.0;" width="970" x="22" y="707.1372"/><path d="M135,708.1372 L135,716.4341 L125,726.4341 L22,726.4341 " fill="none" style="stroke: #000000; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="103" x="25" y="721.1323">fetch message</text><rect fill="#000000" filter="url(#f1amcfo5x9amkf)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="950" x="32" y="743.4341"/><rect fill="#FEFECE" filter="url(#f1amcfo5x9amkf)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="175" x="46" y="817.8364"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="155" x="56" y="838.9751">update message pointer</text><rect fill="#FEFECE" filter="url(#f1amcfo5x9amkf)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="196" x="231" y="817.8364"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="176" x="241" y="838.9751">copy timestamp of message</text><rect fill="#FEFECE" filter="url(#f1amcfo5x9amkf)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="163" x="437" y="817.8364"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="143" x="447" y="838.9751">copy message payload</text><rect fill="#FEFECE" filter="url(#f1amcfo5x9amkf)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="308" x="638" y="817.8364"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="20" x="648" y="838.9751">set</text><text fill="#000000" font-family="monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="49" x="672" y="838.9751">latency</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="211" x="725" y="838.9751">value (now - message origin time)</text><polygon fill="#FEFECE" filter="url(#f1amcfo5x9amkf)" points="672.5,769.4341,911.5,769.4341,923.5,781.4341,911.5,793.4341,672.5,793.4341,660.5,781.4341,672.5,769.4341" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="796" y="803.6445">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="146" x="672.5" y="785.2422">Optional output argument</text><text fill="#000000" font-family="monospace" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="49" x="822.5" y="785.2422">latency</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="36" x="875.5" y="785.2422">given?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="923.5" y="778.8398">no</text><polygon fill="#FEFECE" filter="url(#f1amcfo5x9amkf)" points="792,876.2075,804,888.2075,792,900.2075,780,888.2075,792,876.2075" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#000000" filter="url(#f1amcfo5x9amkf)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="950" x="32" y="920.2075"/><rect fill="#FEFECE" filter="url(#f1amcfo5x9amkf)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="217" x="1051.5" y="809.688"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="197" x="1061.5" y="830.8267">signal topic's condition variable</text><polygon fill="#FEFECE" filter="url(#f1amcfo5x9amkf)" points="1032,761.2856,1288,761.2856,1300,773.2856,1288,785.2856,1032,785.2856,1020,773.2856,1032,761.2856" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="1164" y="795.4961">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="256" x="1032" y="777.0938">The HRT counter of any message became 0?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="1300" y="770.6914">no</text><polygon fill="#FEFECE" filter="url(#f1amcfo5x9amkf)" points="1160,868.0591,1172,880.0591,1160,892.0591,1148,880.0591,1160,868.0591" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#FEFECE" filter="url(#f1amcfo5x9amkf)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="155" x="1340" y="809.688"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="135" x="1350" y="830.8267">reset QoS delay timer</text><rect fill="#000000" filter="url(#f1amcfo5x9amkf)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="1499" x="10" y="958.2075"/><rect fill="#FEFECE" filter="url(#f1amcfo5x9amkf)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="96" x="692.5" y="984.2075"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="76" x="702.5" y="1005.3462">unlock topic</text><path d="M527.5,1036.6099 L527.5,1061.7427 A0,0 0 0 0 527.5,1061.7427 L709.5,1061.7427 A0,0 0 0 0 709.5,1061.7427 L709.5,1054.6099 L729.5,1049.1763 L709.5,1046.6099 L709.5,1046.6099 L699.5,1036.6099 L527.5,1036.6099 A0,0 0 0 0 527.5,1036.6099 " fill="#FBFB77" filter="url(#f1amcfo5x9amkf)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M699.5,1036.6099 L699.5,1046.6099 L709.5,1046.6099 L699.5,1036.6099 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="533.5" y="1053.6768">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="586.5" y="1053.6768">URT_STATUS_OK</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="690.5" y="1053.6768">.</text><ellipse cx="740.5" cy="1049.1763" fill="#FFFFFF" filter="url(#f1amcfo5x9amkf)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="740.5" cy="1049.1763" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><path d="M1519,398.7188 L1519,423.8516 A0,0 0 0 0 1519,423.8516 L1725,423.8516 A0,0 0 0 0 1725,423.8516 L1725,416.7188 L1745,411.2852 L1725,408.7188 L1725,408.7188 L1715,398.7188 L1519,398.7188 A0,0 0 0 0 1519,398.7188 " fill="#FBFB77" filter="url(#f1amcfo5x9amkf)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1715,398.7188 L1715,408.7188 L1725,408.7188 L1715,398.7188 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="1525" y="415.7856">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="128" x="1578" y="415.7856">URT_STATUS_ERROR</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="1706" y="415.7856">.</text><ellipse cx="1756" cy="411.2852" fill="#FFFFFF" filter="url(#f1amcfo5x9amkf)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="1756" cy="411.2852" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1253.25" x2="1253.25" y1="304.7188" y2="324.7188"/><polygon fill="#A80036" points="1249.25,314.7188,1253.25,324.7188,1257.25,314.7188,1253.25,318.7188" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="740.5" x2="740.5" y1="432.6875" y2="452.6875"/><polygon fill="#A80036" points="736.5,442.6875,740.5,452.6875,744.5,442.6875,740.5,446.6875" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="591" x2="591" y1="568.3667" y2="588.3667"/><polygon fill="#A80036" points="587,578.3667,591,588.3667,595,578.3667,591,582.3667" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="845" x2="845" y1="568.3667" y2="588.3667"/><polygon fill="#A80036" points="841,578.3667,845,588.3667,849,578.3667,845,582.3667" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="591" x2="591" y1="622.3354" y2="642.3354"/><polygon fill="#A80036" points="587,632.3354,591,642.3354,595,632.3354,591,636.3354" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="845" x2="845" y1="622.3354" y2="642.3354"/><polygon fill="#A80036" points="841,632.3354,845,642.3354,849,632.3354,845,636.3354" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="740.5" x2="740.5" y1="530.6563" y2="562.3667"/><polygon fill="#A80036" points="736.5,552.3667,740.5,562.3667,744.5,552.3667,740.5,556.3667" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="740.5" x2="740.5" y1="648.3354" y2="658.3354"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="740.5" x2="1006.5" y1="658.3354" y2="658.3354"/><polygon fill="#A80036" points="1002.5,596.9487,1006.5,586.9487,1010.5,596.9487,1006.5,592.9487" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1006.5" x2="1006.5" y1="518.6563" y2="658.3354"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1006.5" x2="869.5" y1="518.6563" y2="518.6563"/><polygon fill="#A80036" points="879.5,514.6563,869.5,518.6563,879.5,522.6563,875.5,518.6563" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="611.5" x2="474.5" y1="518.6563" y2="518.6563"/><polygon fill="#A80036" points="470.5,582.9487,474.5,592.9487,478.5,582.9487,474.5,586.9487" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="474.5" x2="474.5" y1="518.6563" y2="670.3354"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="474.5" x2="740.5" y1="670.3354" y2="670.3354"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="740.5" x2="740.5" y1="670.3354" y2="690.3354"/><polygon fill="#A80036" points="736.5,680.3354,740.5,690.3354,744.5,680.3354,740.5,684.3354" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="740.5" x2="740.5" y1="486.6563" y2="506.6563"/><polygon fill="#A80036" points="736.5,496.6563,740.5,506.6563,744.5,496.6563,740.5,500.6563" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="792" x2="792" y1="793.4341" y2="817.8364"/><polygon fill="#A80036" points="788,807.8364,792,817.8364,796,807.8364,792,811.8364" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="923.5" x2="956" y1="781.4341" y2="781.4341"/><polygon fill="#A80036" points="952,824.8208,956,834.8208,960,824.8208,956,828.8208" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="956" x2="956" y1="781.4341" y2="888.2075"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="956" x2="804" y1="888.2075" y2="888.2075"/><polygon fill="#A80036" points="814,884.2075,804,888.2075,814,892.2075,810,888.2075" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="792" x2="792" y1="851.8052" y2="876.2075"/><polygon fill="#A80036" points="788,866.2075,792,876.2075,796,866.2075,792,870.2075" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="133.5" x2="133.5" y1="749.4341" y2="817.8364"/><polygon fill="#A80036" points="129.5,807.8364,133.5,817.8364,137.5,807.8364,133.5,811.8364" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="329" x2="329" y1="749.4341" y2="817.8364"/><polygon fill="#A80036" points="325,807.8364,329,817.8364,333,807.8364,329,811.8364" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="518.5" x2="518.5" y1="749.4341" y2="817.8364"/><polygon fill="#A80036" points="514.5,807.8364,518.5,817.8364,522.5,807.8364,518.5,811.8364" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="792" x2="792" y1="749.4341" y2="769.4341"/><polygon fill="#A80036" points="788,759.4341,792,769.4341,796,759.4341,792,763.4341" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="133.5" x2="133.5" y1="851.8052" y2="920.2075"/><polygon fill="#A80036" points="129.5,910.2075,133.5,920.2075,137.5,910.2075,133.5,914.2075" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="329" x2="329" y1="851.8052" y2="920.2075"/><polygon fill="#A80036" points="325,910.2075,329,920.2075,333,910.2075,329,914.2075" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="518.5" x2="518.5" y1="851.8052" y2="920.2075"/><polygon fill="#A80036" points="514.5,910.2075,518.5,920.2075,522.5,910.2075,518.5,914.2075" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="792" x2="792" y1="900.2075" y2="920.2075"/><polygon fill="#A80036" points="788,910.2075,792,920.2075,796,910.2075,792,914.2075" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1160" x2="1160" y1="785.2856" y2="809.688"/><polygon fill="#A80036" points="1156,799.688,1160,809.688,1164,799.688,1160,803.688" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1300" x2="1312" y1="773.2856" y2="773.2856"/><polygon fill="#A80036" points="1308,816.6724,1312,826.6724,1316,816.6724,1312,820.6724" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1312" x2="1312" y1="773.2856" y2="880.0591"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1312" x2="1172" y1="880.0591" y2="880.0591"/><polygon fill="#A80036" points="1182,876.0591,1172,880.0591,1182,884.0591,1178,880.0591" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1160" x2="1160" y1="843.6567" y2="868.0591"/><polygon fill="#A80036" points="1156,858.0591,1160,868.0591,1164,858.0591,1160,862.0591" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="489" x2="489" y1="696.3354" y2="743.4341"/><polygon fill="#A80036" points="485,733.4341,489,743.4341,493,733.4341,489,737.4341" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1160" x2="1160" y1="696.3354" y2="761.2856"/><polygon fill="#A80036" points="1156,751.2856,1160,761.2856,1164,751.2856,1160,755.2856" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1417.5" x2="1417.5" y1="696.3354" y2="809.688"/><polygon fill="#A80036" points="1413.5,799.688,1417.5,809.688,1421.5,799.688,1417.5,803.688" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="489" x2="489" y1="926.2075" y2="958.2075"/><polygon fill="#A80036" points="485,948.2075,489,958.2075,493,948.2075,489,952.2075" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1160" x2="1160" y1="892.0591" y2="958.2075"/><polygon fill="#A80036" points="1156,948.2075,1160,958.2075,1164,948.2075,1160,952.2075" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1417.5" x2="1417.5" y1="843.6567" y2="958.2075"/><polygon fill="#A80036" points="1413.5,948.2075,1417.5,958.2075,1421.5,948.2075,1417.5,952.2075" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="740.5" x2="740.5" y1="964.2075" y2="984.2075"/><polygon fill="#A80036" points="736.5,974.2075,740.5,984.2075,744.5,974.2075,740.5,978.2075" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="740.5" x2="740.5" y1="1018.1763" y2="1038.1763"/><polygon fill="#A80036" points="736.5,1028.1763,740.5,1038.1763,744.5,1028.1763,740.5,1032.1763" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1178.75" x2="740.5" y1="376.7188" y2="376.7188"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="740.5" x2="740.5" y1="376.7188" y2="398.7188"/><polygon fill="#A80036" points="736.5,388.7188,740.5,398.7188,744.5,388.7188,740.5,392.7188" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1327.75" x2="1756" y1="376.7188" y2="376.7188"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1756" x2="1756" y1="376.7188" y2="400.2852"/><polygon fill="#A80036" points="1752,390.2852,1756,400.2852,1760,390.2852,1756,394.2852" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1253.25" x2="1253.25" y1="344.7188" y2="364.7188"/><polygon fill="#A80036" points="1249.25,354.7188,1253.25,364.7188,1257.25,354.7188,1253.25,358.7188" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[080eede79bda26c90de47e9a9980273c]
2
@startuml
3

    
4
title **µRtWare**\nurtHrtSubscriberFetchLatestMessage()\n
5

    
6

    
7
note
8
  - - **subscriber** : urt_hrtsubscriber_t* - -
9
  The HRT subscriber that shall fetch the message.
10
  Must not be ""NULL"".
11
  - - **payload** : void* - -
12
  Pointer where to copy the payload to.
13
  May be ""NULL"" for messages without payload.
14
  - - **bytes** : size_t - -
15
  Payload size in bytes.
16
  - - **latency** : urt_delay_t* - -
17
  The latency can be returned by reference.
18
  May be ""NULL"".
19
  ====
20
  - - **return** : urt_status_t - -
21
  Returns ""URT_STATUS_OK"" on success.
22
  Returns ""URT_STATUS_ERROR"" if the subscriber is not associated to a topic.
23
endnote
24

    
25

    
26
start
27
if (Associated to a topic?) then (yes)
28
  :lock topic;
29
  :access last read message;
30
  while (Timestamp of next message is younger?) is (yes)
31
    fork
32
      :proceed to next message;
33
    fork again
34
      :decrement next message's HRT counter;
35
    endfork
36
  endwhile (no)
37
  fork
38

    
39
partition "fetch message" {
40
  fork
41
    :update message pointer;
42
  fork again
43
      :copy timestamp of message;
44
  fork again
45
    :copy message payload;
46
  fork again
47
    if (Optional output argument ""latency"" given?) then (yes)
48
      :set ""latency"" value (now - message origin time);
49
    else (no)
50
    endif
51
  endfork
52
}
53

    
54
  fork again
55
    if (The HRT counter of any message became 0?) then (yes)
56
      :signal topic's condition variable;
57
    else (no)
58
    endif
59
  fork again
60
    :reset QoS delay timer;
61
  endfork
62
  :unlock topic;
63
  stop
64
  note
65
    Returns ""URT_STATUS_OK"".
66
  endnote
67
else (no)
68
  stop
69
  note
70
    Returns ""URT_STATUS_ERROR"".
71
  endnote
72
endif
73

    
74

    
75
@enduml
76

    
77
PlantUML version 1.2020.00(Sat Jan 11 13:30:53 CET 2020)
78
(GPL source distribution)
79
Java Runtime: OpenJDK Runtime Environment
80
JVM: OpenJDK 64-Bit Server VM
81
Java Version: 11.0.6+10-post-Ubuntu-1ubuntu118.04.1
82
Operating System: Linux
83
Default Encoding: UTF-8
84
Language: en
85
Country: US
86
--></g></svg>