urtware / doc / activitydiagrams / subscriber / hrtsubscriber / urtHrtSubscriberFetchNextMessage.svg @ 67844205
History | View | Annotate | Download (51.632 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="1530px" preserveAspectRatio="none" style="width:1961px;height:1530px;" version="1.1" viewBox="0 0 1961 1530" width="1961px" zoomAndPan="magnify"><defs><filter height="300%" id="f1r23ceqqutp94" 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="935.25" y="26.708">µRtWare</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="328" x="815.75" y="47.6611">urtHrtSubscriberFetchNextMessage()</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="0" x="982.75" y="68.6143"/><path d="M1028.375,72.8594 L1028.375,334.9844 L1717.375,334.9844 L1717.375,82.8594 L1707.375,72.8594 L1028.375,72.8594 " fill="#FBFB77" filter="url(#f1r23ceqqutp94)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1707.375,72.8594 L1707.375,82.8594 L1717.375,82.8594 L1707.375,72.8594 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="1028.375" x2="1259.875" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1263.875" y="89.4263"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="78" x="1263.875" y="89.4263">subscriber</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="136" x="1345.875" y="89.4263">: urt_hrtsubscriber_t*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1485.875" x2="1717.375" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="313" x="1034.375" 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="1034.375" y="120.1919">Must not be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="1114.375" y="120.1919">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="1146.375" y="120.1919">.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1028.375" x2="1316.875" y1="130.8242" y2="130.8242"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1320.875" y="134.8247"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="59" x="1320.875" y="134.8247">payload</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="41" x="1383.875" y="134.8247">: void*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1428.875" x2="1717.375" y1="130.8242" y2="130.8242"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="238" x="1034.375" 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="1034.375" y="165.5903">May be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="1084.375" y="165.5903">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="195" x="1120.375" y="165.5903">for messages without payload.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1028.375" x2="1323.875" y1="176.2227" y2="176.2227"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1327.875" y="180.2231"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="41" x="1327.875" y="180.2231">bytes</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="45" x="1372.875" y="180.2231">: size_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1421.875" x2="1717.375" y1="176.2227" y2="176.2227"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="137" x="1034.375" y="195.856">Payload size in bytes.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1028.375" x2="1297.375" y1="206.4883" y2="206.4883"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1301.375" y="210.4888"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="53" x="1301.375" y="210.4888">latency</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="1358.375" y="210.4888">: urt_delay_t*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1448.375" x2="1717.375" y1="206.4883" y2="206.4883"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="267" x="1034.375" 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="1034.375" y="241.2544">May be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="1084.375" y="241.2544">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="1116.375" y="241.2544">.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1028.375" x2="1717.375" y1="249.3203" y2="249.3203"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="1028.375" x2="1717.375" y1="251.3203" y2="251.3203"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="1028.375" x2="1301.875" y1="261.8867" y2="261.8867"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1305.875" y="265.8872"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="45" x="1305.875" y="265.8872">return</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="85" x="1354.875" y="265.8872">: urt_status_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1443.875" x2="1717.375" y1="261.8867" y2="261.8867"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="1034.375" y="281.52">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="1087.375" y="281.52">URT_STATUS_OK</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="75" x="1195.375" y="281.52">on success.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="1034.375" y="296.6528">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="192" x="1087.375" y="296.6528">URT_STATUS_FETCH_NOTOPIC</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="282" x="1283.375" y="296.6528">if the subscriber is not associated to a topic.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="1034.375" y="311.7856">Retruns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="208" x="1087.375" y="311.7856">URT_STATUS_FETCH_NOMESSAGE</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="228" x="1299.375" y="311.7856">if there is no new message to fetch.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="1034.375" y="326.9185">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="208" x="1087.375" y="326.9185">URT_STATUS_JITTERVIOLATION</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="403" x="1299.375" y="326.9185">if the message's latency violated the maximum expected jitter.</text><ellipse cx="1372.875" cy="364.9844" fill="#000000" filter="url(#f1r23ceqqutp94)" rx="10" ry="10" style="stroke: none; stroke-width: 1.0;"/><polygon fill="#FEFECE" filter="url(#f1r23ceqqutp94)" points="1310.375,394.9844,1435.375,394.9844,1447.375,406.9844,1435.375,418.9844,1310.375,418.9844,1298.375,406.9844,1310.375,394.9844" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="125" x="1310.375" y="410.7925">Associated to a topic?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="1278.375" y="404.3901">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="1447.375" y="404.3901">no</text><rect fill="#FEFECE" filter="url(#f1r23ceqqutp94)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="80" x="770.25" y="428.9844"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="60" x="780.25" y="450.123">lock topic</text><polygon fill="#FEFECE" filter="url(#f1r23ceqqutp94)" points="734.25,482.9531,886.25,482.9531,898.25,494.9531,886.25,506.9531,734.25,506.9531,722.25,494.9531,734.25,482.9531" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="152" x="734.25" y="498.7612">Next message is younger?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="702.25" y="492.3589">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="898.25" y="492.3589">no</text><rect fill="#FEFECE" filter="url(#f1r23ceqqutp94)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="181" x="506" y="516.9531"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="161" x="516" y="538.0918">proceed to next message</text><rect fill="#FEFECE" filter="url(#f1r23ceqqutp94)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="96" x="976" y="516.9531"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="76" x="986" y="538.0918">unlock topic</text><path d="M707,569.3555 L707,594.4883 A0,0 0 0 0 707,594.4883 L993,594.4883 A0,0 0 0 0 993,594.4883 L993,587.3555 L1013,581.9219 L993,579.3555 L993,579.3555 L983,569.3555 L707,569.3555 A0,0 0 0 0 707,569.3555 " fill="#FBFB77" filter="url(#f1r23ceqqutp94)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M983,569.3555 L983,579.3555 L993,579.3555 L983,569.3555 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="713" y="586.4224">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="208" x="766" y="586.4224">URT_STATUS_FETCH_NOMESSAGE</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="974" y="586.4224">.</text><ellipse cx="1024" cy="581.9219" fill="#FFFFFF" filter="url(#f1r23ceqqutp94)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="1024" cy="581.9219" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><rect fill="#000000" filter="url(#f1r23ceqqutp94)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="1604.5" x="10" y="614.4883"/><rect fill="#FEFECE" filter="url(#f1r23ceqqutp94)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="187" x="218" y="640.4883"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="167" x="228" y="661.627">calculate message latency</text><rect fill="#000000" filter="url(#f1r23ceqqutp94)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="581" x="22" y="709.457"/><rect fill="#EEEEEE" filter="url(#f1r23ceqqutp94)" height="47.9375" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="252" x="34" y="776.875"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="34" x2="44" y1="793.8594" y2="793.8594"/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="232" x="44" y="797.5137">URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="276" x2="286" y1="793.8594" y2="793.8594"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="73" x="44" y="811.9824">accumulate</text><text fill="#000000" font-family="monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="84" x="121" y="811.9824">sumLatencies</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="33" x="209" y="811.9824">value</text><rect fill="#FEFECE" filter="url(#f1r23ceqqutp94)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="130" x="380.5" y="783.8594"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="20" x="390.5" y="804.998">set</text><text fill="#000000" font-family="monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="49" x="414.5" y="804.998">latency</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="33" x="467.5" y="804.998">value</text><polygon fill="#FEFECE" filter="url(#f1r23ceqqutp94)" points="326,735.457,565,735.457,577,747.457,565,759.457,326,759.457,314,747.457,326,735.457" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="449.5" y="769.6675">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="47" x="326" y="751.2651">Optional</text><text fill="#000000" font-family="monospace" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="49" x="377" y="751.2651">latency</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="135" x="430" y="751.2651">output argument given?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="577" y="744.8628">no</text><polygon fill="#FEFECE" filter="url(#f1r23ceqqutp94)" points="445.5,842.2305,457.5,854.2305,445.5,866.2305,433.5,854.2305,445.5,842.2305" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#000000" filter="url(#f1r23ceqqutp94)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="581" x="22" y="886.2305"/><rect fill="#FEFECE" filter="url(#f1r23ceqqutp94)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="240" x="631" y="666.4883"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="220" x="641" y="687.627">decrement message's HRT counter</text><rect fill="#FEFECE" filter="url(#f1r23ceqqutp94)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="217" x="642.5" y="783.8594"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="197" x="652.5" y="804.998">signal topic's condition variable</text><polygon fill="#FEFECE" filter="url(#f1r23ceqqutp94)" points="683.5,735.457,818.5,735.457,830.5,747.457,818.5,759.457,683.5,759.457,671.5,747.457,683.5,735.457" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="755" y="769.6675">no</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="135" x="683.5" y="751.2651">HRT counter became 0?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="830.5" y="744.8628">yes</text><polygon fill="#FEFECE" filter="url(#f1r23ceqqutp94)" points="751,842.2305,763,854.2305,751,866.2305,739,854.2305,751,842.2305" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#EEEEEE" filter="url(#f1r23ceqqutp94)" height="142.2656" style="stroke: #000000; stroke-width: 2.0;" width="691" x="909.5" y="695.2266"/><path d="M1190.5,696.2266 L1190.5,704.5234 L1180.5,714.5234 L909.5,714.5234 " fill="none" style="stroke: #000000; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="271" x="912.5" y="709.2217">URT_CFG_PUBSUB_PROFILING == true</text><rect fill="#000000" filter="url(#f1r23ceqqutp94)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="671" x="919.5" y="731.5234"/><rect fill="#EEEEEE" filter="url(#f1r23ceqqutp94)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="338" x="933.5" y="757.5234"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="318" x="943.5" y="778.6621">decrement counter of consumers left (@message)</text><rect fill="#EEEEEE" filter="url(#f1r23ceqqutp94)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="277" x="1299.5" y="757.5234"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="257" x="1309.5" y="778.6621">increment counter of received messages</text><rect fill="#000000" filter="url(#f1r23ceqqutp94)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="671" x="919.5" y="811.4922"/><rect fill="#000000" filter="url(#f1r23ceqqutp94)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="1604.5" x="10" y="912.2305"/><rect fill="#EEEEEE" filter="url(#f1r23ceqqutp94)" height="277.0977" style="stroke: #000000; stroke-width: 2.0;" width="1104.5" x="218.5" y="929.0322"/><path d="M854.5,930.0322 L854.5,938.3291 L844.5,948.3291 L218.5,948.3291 " fill="none" style="stroke: #000000; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="626" x="221.5" y="943.0273">URT_CFG_PUBSUB_QOS_JITTERCHECKS == true || URT_CFG_PUBSUB_PROFILING == true</text><polygon fill="#FEFECE" filter="url(#f1r23ceqqutp94)" points="703.25,965.3291,917.25,965.3291,929.25,977.3291,917.25,989.3291,703.25,989.3291,691.25,977.3291,703.25,965.3291" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="214" x="703.25" y="981.1372">Latency is within allowed jitter range?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="671.25" y="974.7349">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="929.25" y="974.7349">no</text><polygon fill="#FEFECE" filter="url(#f1r23ceqqutp94)" points="250.5,1024.3291,451.5,1024.3291,463.5,1036.3291,451.5,1048.3291,250.5,1048.3291,238.5,1036.3291,250.5,1024.3291" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="355" y="1058.5396">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="121" x="250.5" y="1040.1372">Latency is lower than</text><text fill="#000000" font-family="monospace" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="70" x="375.5" y="1040.1372">minLatency</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="6" x="445.5" y="1040.1372">?</text><rect fill="#EEEEEE" filter="url(#f1r23ceqqutp94)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="176" x="263" y="1081.1338"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="45" x="273" y="1102.2725">update</text><text fill="#000000" font-family="monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="70" x="322" y="1102.2725">minLatency</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="33" x="396" y="1102.2725">value</text><polygon fill="#FEFECE" filter="url(#f1r23ceqqutp94)" points="495.5,1024.3291,707.5,1024.3291,719.5,1036.3291,707.5,1048.3291,495.5,1048.3291,483.5,1036.3291,495.5,1024.3291" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="605.5" y="1058.5396">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="132" x="495.5" y="1040.1372">Latency is greater than</text><text fill="#000000" font-family="monospace" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="70" x="631.5" y="1040.1372">maxLatency</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="6" x="701.5" y="1040.1372">?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="719.5" y="1033.7349">no</text><rect fill="#EEEEEE" filter="url(#f1r23ceqqutp94)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="176" x="513.5" y="1081.1338"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="45" x="523.5" y="1102.2725">update</text><text fill="#000000" font-family="monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="70" x="572.5" y="1102.2725">maxLatency</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="33" x="646.5" y="1102.2725">value</text><rect fill="#EEEEEE" filter="url(#f1r23ceqqutp94)" height="194.8008" style="stroke: #000000; stroke-width: 2.0;" width="513.5" x="789.5" y="999.3291"/><path d="M1136.5,1000.3291 L1136.5,1008.626 L1126.5,1018.626 L789.5,1018.626 " fill="none" style="stroke: #000000; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="337" x="792.5" y="1013.3242">URT_CFG_PUBSUB_QOS_JITTERCHECKS == true</text><rect fill="#EEEEEE" filter="url(#f1r23ceqqutp94)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="96" x="1068.5" y="1035.626"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="76" x="1078.5" y="1056.7646">unlock topic</text><rect fill="#EEEEEE" filter="url(#f1r23ceqqutp94)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="353" x="940" y="1104.5947"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="21" x="950" y="1125.7334">call</text><text fill="#000000" font-family="monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="308" x="975" y="1125.7334">urtCoreStopNodes(URT_STATUS_JITTERVIOLATION)</text><path d="M799.5,1156.9971 L799.5,1182.1299 A0,0 0 0 0 799.5,1182.1299 L1085.5,1182.1299 A0,0 0 0 0 1085.5,1182.1299 L1085.5,1174.9971 L1105.5,1169.5635 L1085.5,1166.9971 L1085.5,1166.9971 L1075.5,1156.9971 L799.5,1156.9971 A0,0 0 0 0 799.5,1156.9971 " fill="#FBFB77" filter="url(#f1r23ceqqutp94)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1075.5,1156.9971 L1075.5,1166.9971 L1085.5,1166.9971 L1075.5,1156.9971 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="805.5" y="1174.064">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="208" x="858.5" y="1174.064">URT_STATUS_JITTERVIOLATION</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="1066.5" y="1174.064">.</text><ellipse cx="1116.5" cy="1169.5635" fill="#FFFFFF" filter="url(#f1r23ceqqutp94)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="1116.5" cy="1169.5635" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><rect fill="#000000" filter="url(#f1r23ceqqutp94)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="1237.5" x="191.5" y="1226.1299"/><rect fill="#FFFFFF" filter="url(#f1r23ceqqutp94)" height="140.2656" style="stroke: #000000; stroke-width: 2.0;" width="622" x="205.5" y="1248.9316"/><path d="M318.5,1249.9316 L318.5,1258.2285 L308.5,1268.2285 L205.5,1268.2285 " fill="none" style="stroke: #000000; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="103" x="208.5" y="1262.9268">fetch message</text><rect fill="#000000" filter="url(#f1r23ceqqutp94)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="602" x="215.5" y="1285.2285"/><rect fill="#FEFECE" filter="url(#f1r23ceqqutp94)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="175" x="229.5" y="1311.2285"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="155" x="239.5" y="1332.3672">update message pointer</text><rect fill="#FEFECE" filter="url(#f1r23ceqqutp94)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="180" x="432.5" y="1311.2285"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="160" x="442.5" y="1332.3672">copy message origin time</text><rect fill="#FEFECE" filter="url(#f1r23ceqqutp94)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="163" x="640.5" y="1311.2285"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="143" x="650.5" y="1332.3672">copy message payload</text><rect fill="#000000" filter="url(#f1r23ceqqutp94)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="602" x="215.5" y="1365.1973"/><rect fill="#EEEEEE" filter="url(#f1r23ceqqutp94)" height="152.2656" style="stroke: #000000; stroke-width: 2.0;" width="559.5" x="855.5" y="1242.9316"/><path d="M1230.5,1243.9316 L1230.5,1252.2285 L1220.5,1262.2285 L855.5,1262.2285 " fill="none" style="stroke: #000000; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="365" x="858.5" y="1256.9268">URT_CFG_PUBSUB_QOS_DEADLINECHECKS == true</text><polygon fill="#FEFECE" filter="url(#f1r23ceqqutp94)" points="1051,1279.2285,1285,1279.2285,1297,1291.2285,1285,1303.2285,1051,1303.2285,1039,1291.2285,1051,1279.2285" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="234" x="1051" y="1295.0366">Timestamp of next message is younger?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="1019" y="1288.6343">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="1297" y="1288.6343">no</text><rect fill="#EEEEEE" filter="url(#f1r23ceqqutp94)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="307" x="875.5" y="1313.2285"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="287" x="885.5" y="1334.3672">update QoS deadline timer wrt. next message</text><rect fill="#EEEEEE" filter="url(#f1r23ceqqutp94)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="176" x="1219" y="1313.2285"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="156" x="1229" y="1334.3672">reset QoS deadline timer</text><polygon fill="#FEFECE" filter="url(#f1r23ceqqutp94)" points="1168,1353.1973,1180,1365.1973,1168,1377.1973,1156,1365.1973,1168,1353.1973" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#000000" filter="url(#f1r23ceqqutp94)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="1237.5" x="191.5" y="1415.1973"/><rect fill="#FEFECE" filter="url(#f1r23ceqqutp94)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="96" x="762.25" y="1441.1973"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="76" x="772.25" y="1462.3359">unlock topic</text><path d="M597.25,1493.5996 L597.25,1518.7324 A0,0 0 0 0 597.25,1518.7324 L779.25,1518.7324 A0,0 0 0 0 779.25,1518.7324 L779.25,1511.5996 L799.25,1506.166 L779.25,1503.5996 L779.25,1503.5996 L769.25,1493.5996 L597.25,1493.5996 A0,0 0 0 0 597.25,1493.5996 " fill="#FBFB77" filter="url(#f1r23ceqqutp94)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M769.25,1493.5996 L769.25,1503.5996 L779.25,1503.5996 L769.25,1493.5996 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="603.25" y="1510.6665">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="656.25" y="1510.6665">URT_STATUS_OK</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="760.25" y="1510.6665">.</text><ellipse cx="810.25" cy="1506.166" fill="#FFFFFF" filter="url(#f1r23ceqqutp94)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="810.25" cy="1506.166" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><path d="M1634.5,428.9844 L1634.5,454.1172 A0,0 0 0 0 1634.5,454.1172 L1904.5,454.1172 A0,0 0 0 0 1904.5,454.1172 L1904.5,446.9844 L1924.5,441.5508 L1904.5,438.9844 L1904.5,438.9844 L1894.5,428.9844 L1634.5,428.9844 A0,0 0 0 0 1634.5,428.9844 " fill="#FBFB77" filter="url(#f1r23ceqqutp94)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1894.5,428.9844 L1894.5,438.9844 L1904.5,438.9844 L1894.5,428.9844 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="1640.5" y="446.0513">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="192" x="1693.5" y="446.0513">URT_STATUS_FETCH_NOTOPIC</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="1885.5" y="446.0513">.</text><ellipse cx="1935.5" cy="441.5508" fill="#FFFFFF" filter="url(#f1r23ceqqutp94)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="1935.5" cy="441.5508" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1372.875" x2="1372.875" y1="334.9844" y2="354.9844"/><polygon fill="#A80036" points="1368.875,344.9844,1372.875,354.9844,1376.875,344.9844,1372.875,348.9844" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1024" x2="1024" y1="550.9219" y2="570.9219"/><polygon fill="#A80036" points="1020,560.9219,1024,570.9219,1028,560.9219,1024,564.9219" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="722.25" x2="596.5" y1="494.9531" y2="494.9531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="596.5" x2="596.5" y1="494.9531" y2="516.9531"/><polygon fill="#A80036" points="592.5,506.9531,596.5,516.9531,600.5,506.9531,596.5,510.9531" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="898.25" x2="1024" y1="494.9531" y2="494.9531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1024" x2="1024" y1="494.9531" y2="516.9531"/><polygon fill="#A80036" points="1020,506.9531,1024,516.9531,1028,506.9531,1024,510.9531" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="596.5" x2="596.5" y1="550.9219" y2="599.4883"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="596.5" x2="810.25" y1="599.4883" y2="599.4883"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="810.25" x2="810.25" y1="599.4883" y2="614.4883"/><polygon fill="#A80036" points="806.25,604.4883,810.25,614.4883,814.25,604.4883,810.25,608.4883" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="810.25" x2="810.25" y1="462.9531" y2="482.9531"/><polygon fill="#A80036" points="806.25,472.9531,810.25,482.9531,814.25,472.9531,810.25,476.9531" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="445.5" x2="445.5" y1="759.457" y2="783.8594"/><polygon fill="#A80036" points="441.5,773.8594,445.5,783.8594,449.5,773.8594,445.5,777.8594" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="577" x2="589" y1="747.457" y2="747.457"/><polygon fill="#A80036" points="585,790.8438,589,800.8438,593,790.8438,589,794.8438" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="589" x2="589" y1="747.457" y2="854.2305"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="589" x2="457.5" y1="854.2305" y2="854.2305"/><polygon fill="#A80036" points="467.5,850.2305,457.5,854.2305,467.5,858.2305,463.5,854.2305" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="445.5" x2="445.5" y1="817.8281" y2="842.2305"/><polygon fill="#A80036" points="441.5,832.2305,445.5,842.2305,449.5,832.2305,445.5,836.2305" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="160" x2="160" y1="715.457" y2="776.875"/><polygon fill="#A80036" points="156,766.875,160,776.875,164,766.875,160,770.875" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="445.5" x2="445.5" y1="715.457" y2="735.457"/><polygon fill="#A80036" points="441.5,725.457,445.5,735.457,449.5,725.457,445.5,729.457" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="160" x2="160" y1="824.8125" y2="886.2305"/><polygon fill="#A80036" points="156,876.2305,160,886.2305,164,876.2305,160,880.2305" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="445.5" x2="445.5" y1="866.2305" y2="886.2305"/><polygon fill="#A80036" points="441.5,876.2305,445.5,886.2305,449.5,876.2305,445.5,880.2305" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="311.5" x2="311.5" y1="674.457" y2="709.457"/><polygon fill="#A80036" points="307.5,699.457,311.5,709.457,315.5,699.457,311.5,703.457" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="751" x2="751" y1="759.457" y2="783.8594"/><polygon fill="#A80036" points="747,773.8594,751,783.8594,755,773.8594,751,777.8594" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="830.5" x2="869.5" y1="747.457" y2="747.457"/><polygon fill="#A80036" points="865.5,790.8438,869.5,800.8438,873.5,790.8438,869.5,794.8438" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="869.5" x2="869.5" y1="747.457" y2="854.2305"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="869.5" x2="763" y1="854.2305" y2="854.2305"/><polygon fill="#A80036" points="773,850.2305,763,854.2305,773,858.2305,769,854.2305" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="751" x2="751" y1="817.8281" y2="842.2305"/><polygon fill="#A80036" points="747,832.2305,751,842.2305,755,832.2305,751,836.2305" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="751" x2="751" y1="700.457" y2="735.457"/><polygon fill="#A80036" points="747,725.457,751,735.457,755,725.457,751,729.457" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1102.5" x2="1102.5" y1="737.5234" y2="757.5234"/><polygon fill="#A80036" points="1098.5,747.5234,1102.5,757.5234,1106.5,747.5234,1102.5,751.5234" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1438" x2="1438" y1="737.5234" y2="757.5234"/><polygon fill="#A80036" points="1434,747.5234,1438,757.5234,1442,747.5234,1438,751.5234" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1102.5" x2="1102.5" y1="791.4922" y2="811.4922"/><polygon fill="#A80036" points="1098.5,801.4922,1102.5,811.4922,1106.5,801.4922,1102.5,805.4922" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1438" x2="1438" y1="791.4922" y2="811.4922"/><polygon fill="#A80036" points="1434,801.4922,1438,811.4922,1442,801.4922,1438,805.4922" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="311.5" x2="311.5" y1="620.4883" y2="640.4883"/><polygon fill="#A80036" points="307.5,630.4883,311.5,640.4883,315.5,630.4883,311.5,634.4883" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="751" x2="751" y1="620.4883" y2="666.4883"/><polygon fill="#A80036" points="747,656.4883,751,666.4883,755,656.4883,751,660.4883" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1255" x2="1255" y1="620.4883" y2="731.5234"/><polygon fill="#A80036" points="1251,721.5234,1255,731.5234,1259,721.5234,1255,725.5234" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="311.5" x2="311.5" y1="892.2305" y2="912.2305"/><polygon fill="#A80036" points="307.5,902.2305,311.5,912.2305,315.5,902.2305,311.5,906.2305" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="751" x2="751" y1="866.2305" y2="912.2305"/><polygon fill="#A80036" points="747,902.2305,751,912.2305,755,902.2305,751,906.2305" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1255" x2="1255" y1="817.4922" y2="912.2305"/><polygon fill="#A80036" points="1251,902.2305,1255,912.2305,1259,902.2305,1255,906.2305" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="351" x2="351" y1="1048.3291" y2="1081.1338"/><polygon fill="#A80036" points="347,1071.1338,351,1081.1338,355,1071.1338,351,1075.1338" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="351" x2="351" y1="1115.1025" y2="1173.5361"/><polygon fill="#A80036" points="347,1163.5361,351,1173.5361,355,1163.5361,351,1167.5361" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="601.5" x2="601.5" y1="1048.3291" y2="1081.1338"/><polygon fill="#A80036" points="597.5,1071.1338,601.5,1081.1338,605.5,1071.1338,601.5,1075.1338" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="601.5" x2="601.5" y1="1115.1025" y2="1173.5361"/><polygon fill="#A80036" points="597.5,1163.5361,601.5,1173.5361,605.5,1163.5361,601.5,1167.5361" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="463.5" x2="483.5" y1="1036.3291" y2="1036.3291"/><polygon fill="#A80036" points="473.5,1032.3291,483.5,1036.3291,473.5,1040.3291,477.5,1036.3291" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="691.25" x2="351" y1="977.3291" y2="977.3291"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="351" x2="351" y1="977.3291" y2="1024.3291"/><polygon fill="#A80036" points="347,1014.3291,351,1024.3291,355,1014.3291,351,1018.3291" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="719.5" x2="754.5" y1="1036.3291" y2="1036.3291"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="754.5" x2="754.5" y1="1036.3291" y2="1173.5361"/><polygon fill="#A80036" points="750.5,1163.5361,754.5,1173.5361,758.5,1163.5361,754.5,1167.5361" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="351" x2="754.5" y1="1173.5361" y2="1173.5361"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1116.5" x2="1116.5" y1="1069.5947" y2="1104.5947"/><polygon fill="#A80036" points="1112.5,1094.5947,1116.5,1104.5947,1120.5,1094.5947,1116.5,1098.5947" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1116.5" x2="1116.5" y1="1138.5635" y2="1158.5635"/><polygon fill="#A80036" points="1112.5,1148.5635,1116.5,1158.5635,1120.5,1148.5635,1116.5,1152.5635" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="929.25" x2="1116.5" y1="977.3291" y2="977.3291"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1116.5" x2="1116.5" y1="977.3291" y2="1035.626"/><polygon fill="#A80036" points="1112.5,1025.626,1116.5,1035.626,1120.5,1025.626,1116.5,1029.626" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="504" x2="504" y1="1173.5361" y2="1199.1299"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="504" x2="810.25" y1="1199.1299" y2="1199.1299"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="810.25" x2="810.25" y1="1199.1299" y2="1226.1299"/><polygon fill="#A80036" points="806.25,1216.1299,810.25,1226.1299,814.25,1216.1299,810.25,1220.1299" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="810.25" x2="810.25" y1="918.2305" y2="965.3291"/><polygon fill="#A80036" points="806.25,955.3291,810.25,965.3291,814.25,955.3291,810.25,959.3291" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="317" x2="317" y1="1291.2285" y2="1311.2285"/><polygon fill="#A80036" points="313,1301.2285,317,1311.2285,321,1301.2285,317,1305.2285" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="522.5" x2="522.5" y1="1291.2285" y2="1311.2285"/><polygon fill="#A80036" points="518.5,1301.2285,522.5,1311.2285,526.5,1301.2285,522.5,1305.2285" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="722" x2="722" y1="1291.2285" y2="1311.2285"/><polygon fill="#A80036" points="718,1301.2285,722,1311.2285,726,1301.2285,722,1305.2285" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="317" x2="317" y1="1345.1973" y2="1365.1973"/><polygon fill="#A80036" points="313,1355.1973,317,1365.1973,321,1355.1973,317,1359.1973" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="522.5" x2="522.5" y1="1345.1973" y2="1365.1973"/><polygon fill="#A80036" points="518.5,1355.1973,522.5,1365.1973,526.5,1355.1973,522.5,1359.1973" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="722" x2="722" y1="1345.1973" y2="1365.1973"/><polygon fill="#A80036" points="718,1355.1973,722,1365.1973,726,1355.1973,722,1359.1973" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1039" x2="1029" y1="1291.2285" y2="1291.2285"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1029" x2="1029" y1="1291.2285" y2="1313.2285"/><polygon fill="#A80036" points="1025,1303.2285,1029,1313.2285,1033,1303.2285,1029,1307.2285" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1297" x2="1307" y1="1291.2285" y2="1291.2285"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1307" x2="1307" y1="1291.2285" y2="1313.2285"/><polygon fill="#A80036" points="1303,1303.2285,1307,1313.2285,1311,1303.2285,1307,1307.2285" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1029" x2="1029" y1="1347.1973" y2="1365.1973"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1029" x2="1156" y1="1365.1973" y2="1365.1973"/><polygon fill="#A80036" points="1146,1361.1973,1156,1365.1973,1146,1369.1973,1150,1365.1973" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1307" x2="1307" y1="1347.1973" y2="1365.1973"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1307" x2="1180" y1="1365.1973" y2="1365.1973"/><polygon fill="#A80036" points="1190,1361.1973,1180,1365.1973,1190,1369.1973,1186,1365.1973" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="516.5" x2="516.5" y1="1232.1299" y2="1285.2285"/><polygon fill="#A80036" points="512.5,1275.2285,516.5,1285.2285,520.5,1275.2285,516.5,1279.2285" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1168" x2="1168" y1="1232.1299" y2="1279.2285"/><polygon fill="#A80036" points="1164,1269.2285,1168,1279.2285,1172,1269.2285,1168,1273.2285" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="516.5" x2="516.5" y1="1371.1973" y2="1415.1973"/><polygon fill="#A80036" points="512.5,1405.1973,516.5,1415.1973,520.5,1405.1973,516.5,1409.1973" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1168" x2="1168" y1="1377.1973" y2="1415.1973"/><polygon fill="#A80036" points="1164,1405.1973,1168,1415.1973,1172,1405.1973,1168,1409.1973" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="810.25" x2="810.25" y1="1421.1973" y2="1441.1973"/><polygon fill="#A80036" points="806.25,1431.1973,810.25,1441.1973,814.25,1431.1973,810.25,1435.1973" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="810.25" x2="810.25" y1="1475.166" y2="1495.166"/><polygon fill="#A80036" points="806.25,1485.166,810.25,1495.166,814.25,1485.166,810.25,1489.166" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1298.375" x2="810.25" y1="406.9844" y2="406.9844"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="810.25" x2="810.25" y1="406.9844" y2="428.9844"/><polygon fill="#A80036" points="806.25,418.9844,810.25,428.9844,814.25,418.9844,810.25,422.9844" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1447.375" x2="1935.5" y1="406.9844" y2="406.9844"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1935.5" x2="1935.5" y1="406.9844" y2="430.5508"/><polygon fill="#A80036" points="1931.5,420.5508,1935.5,430.5508,1939.5,420.5508,1935.5,424.5508" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1372.875" x2="1372.875" y1="374.9844" y2="394.9844"/><polygon fill="#A80036" points="1368.875,384.9844,1372.875,394.9844,1376.875,384.9844,1372.875,388.9844" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[022098509a77a0d8e68ecaed2daf468f] |
---|---|
2 |
@startuml |
3 |
|
4 |
title **µRtWare**\nurtHrtSubscriberFetchNextMessage()\n |
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
note |
13 |
- - **subscriber** : urt_hrtsubscriber_t* - - |
14 |
The HRT subscriber that shall fetch the message. |
15 |
Must not be ""NULL"". |
16 |
- - **payload** : void* - - |
17 |
Pointer where to copy the payload to. |
18 |
May be ""NULL"" for messages without payload. |
19 |
- - **bytes** : size_t - - |
20 |
Payload size in bytes. |
21 |
- - **latency** : urt_delay_t* - - |
22 |
The latency can be returned by reference. |
23 |
May be ""NULL"". |
24 |
==== |
25 |
- - **return** : urt_status_t - - |
26 |
Returns ""URT_STATUS_OK"" on success. |
27 |
Returns ""URT_STATUS_FETCH_NOTOPIC"" if the subscriber is not associated to a topic. |
28 |
Retruns ""URT_STATUS_FETCH_NOMESSAGE"" if there is no new message to fetch. |
29 |
Returns ""URT_STATUS_JITTERVIOLATION"" if the message's latency violated the maximum expected jitter. |
30 |
endnote |
31 |
|
32 |
|
33 |
start |
34 |
if (Associated to a topic?) then (yes) |
35 |
:lock topic; |
36 |
if (Next message is younger?) then (yes) |
37 |
:proceed to next message; |
38 |
else (no) |
39 |
:unlock topic; |
40 |
stop |
41 |
note |
42 |
Returns ""URT_STATUS_FETCH_NOMESSAGE"". |
43 |
endnote |
44 |
endif |
45 |
fork |
46 |
:calculate message latency; |
47 |
fork |
48 |
#EEEEEE:..//URT_CFG_PUBSUB_PROFILING == true//..\naccumulate ""sumLatencies"" value; |
49 |
fork again |
50 |
if (Optional ""latency"" output argument given?) then (yes) |
51 |
:set ""latency"" value; |
52 |
else (no) |
53 |
endif |
54 |
endfork |
55 |
fork again |
56 |
:decrement message's HRT counter; |
57 |
if (HRT counter became 0?) then (yes) |
58 |
else (no) |
59 |
:signal topic's condition variable; |
60 |
endif |
61 |
fork again |
62 |
partition "//URT_CFG_PUBSUB_PROFILING == true//" #EEEEEE { |
63 |
fork |
64 |
#EEEEEE:decrement counter of consumers left (@message); |
65 |
fork again |
66 |
#EEEEEE:increment counter of received messages; |
67 |
endfork |
68 |
} |
69 |
endfork |
70 |
partition "//URT_CFG_PUBSUB_QOS_JITTERCHECKS == true || URT_CFG_PUBSUB_PROFILING == true//" #EEEEEE { |
71 |
if (Latency is within allowed jitter range?) then (yes) |
72 |
if (Latency is lower than ""minLatency""?) then (yes) |
73 |
#EEEEEE:update ""minLatency"" value; |
74 |
elseif (Latency is greater than ""maxLatency""?) then (yes) |
75 |
#EEEEEE:update ""maxLatency"" value; |
76 |
else (no) |
77 |
endif |
78 |
else (no) |
79 |
partition "//URT_CFG_PUBSUB_QOS_JITTERCHECKS == true//" #EEEEEE { |
80 |
#EEEEEE:unlock topic; |
81 |
#EEEEEE:call ""urtCoreStopNodes(URT_STATUS_JITTERVIOLATION)""; |
82 |
stop |
83 |
note |
84 |
Returns ""URT_STATUS_JITTERVIOLATION"". |
85 |
endnote |
86 |
} |
87 |
endif |
88 |
} |
89 |
fork |
90 |
partition "fetch message" { |
91 |
fork |
92 |
:update message pointer; |
93 |
fork again |
94 |
:copy message origin time; |
95 |
fork again |
96 |
:copy message payload; |
97 |
endfork |
98 |
} |
99 |
fork again |
100 |
partition "//URT_CFG_PUBSUB_QOS_DEADLINECHECKS == true//" #EEEEEE { |
101 |
if (Timestamp of next message is younger?) then (yes) |
102 |
#EEEEEE:update QoS deadline timer wrt. next message; |
103 |
else (no) |
104 |
#EEEEEE:reset QoS deadline timer; |
105 |
endif |
106 |
} |
107 |
endfork |
108 |
|
109 |
|
110 |
:unlock topic; |
111 |
stop |
112 |
note |
113 |
Returns ""URT_STATUS_OK"". |
114 |
endnote |
115 |
else (no) |
116 |
stop |
117 |
note |
118 |
Returns ""URT_STATUS_FETCH_NOTOPIC"". |
119 |
endnote |
120 |
endif |
121 |
|
122 |
|
123 |
@enduml |
124 |
|
125 |
PlantUML version 1.2020.00(Sat Jan 11 13:30:53 CET 2020) |
126 |
(GPL source distribution) |
127 |
Java Runtime: OpenJDK Runtime Environment |
128 |
JVM: OpenJDK 64-Bit Server VM |
129 |
Java Version: 11.0.7+10-post-Ubuntu-2ubuntu218.04 |
130 |
Operating System: Linux |
131 |
Default Encoding: UTF-8 |
132 |
Language: en |
133 |
Country: US |
134 |
--></g></svg> |