Statistics
| Branch: | Revision:

urtware / doc / activitydiagrams / subscriber / frtsubscriber / urtFrtSubscriberFetchNextMessage.svg @ f6e5368e

History | View | Annotate | Download (45.457 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="1227px" preserveAspectRatio="none" style="width:3161px;height:1227px;" version="1.1" viewBox="0 0 3161 1227" width="3161px" zoomAndPan="magnify"><defs><filter height="300%" id="f16b2sm6ci0efs" 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="1535" y="26.708">µRtWare</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="324" x="1417.5" y="47.6611">urtFrtSubscriberFetchNextMessage()</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="0" x="1582.5" y="68.6143"/><path d="M1917.75,72.8594 L1917.75,334.9844 L2606.75,334.9844 L2606.75,82.8594 L2596.75,72.8594 L1917.75,72.8594 " fill="#FBFB77" filter="url(#f16b2sm6ci0efs)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M2596.75,72.8594 L2596.75,82.8594 L2606.75,82.8594 L2596.75,72.8594 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="1917.75" x2="2151.25" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="2155.25" y="89.4263"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="78" x="2155.25" y="89.4263">subscriber</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="132" x="2237.25" y="89.4263">: urt_frtsubscriber_t*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="2373.25" x2="2606.75" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="310" x="1923.75" y="105.0591">The FRT subscriber that shall fetch the message.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="76" x="1923.75" y="120.1919">Must not be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="2003.75" y="120.1919">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="2035.75" y="120.1919">.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1917.75" x2="2206.25" y1="130.8242" y2="130.8242"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="2210.25" y="134.8247"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="59" x="2210.25" y="134.8247">payload</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="41" x="2273.25" y="134.8247">: void*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="2318.25" x2="2606.75" y1="130.8242" y2="130.8242"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="238" x="1923.75" 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="1923.75" y="165.5903">May be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="1973.75" y="165.5903">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="195" x="2009.75" y="165.5903">for messages without payload.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1917.75" x2="2213.25" y1="176.2227" y2="176.2227"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="2217.25" y="180.2231"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="41" x="2217.25" y="180.2231">bytes</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="45" x="2262.25" y="180.2231">: size_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="2311.25" x2="2606.75" y1="176.2227" y2="176.2227"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="137" x="1923.75" y="195.856">Payload size in bytes.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1917.75" x2="2186.75" y1="206.4883" y2="206.4883"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="2190.75" y="210.4888"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="53" x="2190.75" y="210.4888">latency</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="2247.75" y="210.4888">: urt_delay_t*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="2337.75" x2="2606.75" y1="206.4883" y2="206.4883"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="267" x="1923.75" 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="1923.75" y="241.2544">May be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="1973.75" y="241.2544">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="2005.75" y="241.2544">.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1917.75" x2="2606.75" y1="249.3203" y2="249.3203"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="1917.75" x2="2606.75" y1="251.3203" y2="251.3203"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="1917.75" x2="2191.25" y1="261.8867" y2="261.8867"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="2195.25" y="265.8872"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="45" x="2195.25" y="265.8872">return</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="85" x="2244.25" y="265.8872">: urt_status_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="2333.25" x2="2606.75" y1="261.8867" y2="261.8867"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="1923.75" y="281.52">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="1976.75" y="281.52">URT_STATUS_OK</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="75" x="2084.75" y="281.52">on success.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="1923.75" y="296.6528">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="192" x="1976.75" y="296.6528">URT_STATUS_FETCH_NOTOPIC</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="282" x="2172.75" 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="1923.75" y="311.7856">Retruns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="208" x="1976.75" y="311.7856">URT_STATUS_FETCH_NOMESSAGE</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="228" x="2188.75" 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="1923.75" y="326.9185">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="208" x="1976.75" y="326.9185">URT_STATUS_JITTERVIOLATION</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="403" x="2188.75" y="326.9185">if the message's latency violated the maximum expected jitter.</text><ellipse cx="2262.25" cy="364.9844" fill="#000000" filter="url(#f16b2sm6ci0efs)" rx="10" ry="10" style="stroke: none; stroke-width: 1.0;"/><polygon fill="#FEFECE" filter="url(#f16b2sm6ci0efs)" points="2199.75,394.9844,2324.75,394.9844,2336.75,406.9844,2324.75,418.9844,2199.75,418.9844,2187.75,406.9844,2199.75,394.9844" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="125" x="2199.75" y="410.7925">Associated to a topic?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="2167.75" y="404.3901">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="2336.75" y="404.3901">no</text><rect fill="#FEFECE" filter="url(#f16b2sm6ci0efs)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="80" x="1362.5" y="428.9844"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="60" x="1372.5" y="450.123">lock topic</text><polygon fill="#FEFECE" filter="url(#f16b2sm6ci0efs)" points="1253,482.9531,1552,482.9531,1564,494.9531,1552,506.9531,1253,506.9531,1241,494.9531,1253,482.9531" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="299" x="1253" y="498.7612">Timestamp of last read message equals local copy?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="1221" y="492.3589">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="1564" y="492.3589">no</text><polygon fill="#FEFECE" filter="url(#f16b2sm6ci0efs)" points="1111.125,516.9531,1263.125,516.9531,1275.125,528.9531,1263.125,540.9531,1111.125,540.9531,1099.125,528.9531,1111.125,516.9531" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="152" x="1111.125" y="532.7612">Next message is younger?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="1079.125" y="526.3589">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="1275.125" y="526.3589">no</text><rect fill="#FEFECE" filter="url(#f16b2sm6ci0efs)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="181" x="882.875" y="550.9531"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="161" x="892.875" y="572.0918">proceed to next message</text><rect fill="#FEFECE" filter="url(#f16b2sm6ci0efs)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="96" x="1352.875" y="550.9531"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="76" x="1362.875" y="572.0918">unlock topic</text><path d="M1083.875,603.3555 L1083.875,628.4883 A0,0 0 0 0 1083.875,628.4883 L1369.875,628.4883 A0,0 0 0 0 1369.875,628.4883 L1369.875,621.3555 L1389.875,615.9219 L1369.875,613.3555 L1369.875,613.3555 L1359.875,603.3555 L1083.875,603.3555 A0,0 0 0 0 1083.875,603.3555 " fill="#FBFB77" filter="url(#f16b2sm6ci0efs)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1359.875,603.3555 L1359.875,613.3555 L1369.875,613.3555 L1359.875,603.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="1089.875" y="620.4224">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="208" x="1142.875" y="620.4224">URT_STATUS_FETCH_NOMESSAGE</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="1350.875" y="620.4224">.</text><ellipse cx="1400.875" cy="615.9219" fill="#FFFFFF" filter="url(#f16b2sm6ci0efs)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="1400.875" cy="615.9219" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><rect fill="#FFFFFF" filter="url(#f16b2sm6ci0efs)" height="181.6992" style="stroke: #000000; stroke-width: 2.0;" width="302" x="1478.875" y="516.9531"/><path d="M1628.875,517.9531 L1628.875,526.25 L1618.875,536.25 L1478.875,536.25 " fill="none" style="stroke: #000000; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="140" x="1481.875" y="530.9482">find oldest message</text><rect fill="#FEFECE" filter="url(#f16b2sm6ci0efs)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="181" x="1527.375" y="608.6836"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="161" x="1537.375" y="629.8223">proceed to next message</text><polygon fill="#FEFECE" filter="url(#f16b2sm6ci0efs)" points="1617.875,553.25,1629.875,565.25,1617.875,577.25,1605.875,565.25,1617.875,553.25" style="stroke: #A80036; stroke-width: 1.5;"/><polygon fill="#FEFECE" filter="url(#f16b2sm6ci0efs)" points="1500.875,662.6523,1734.875,662.6523,1746.875,674.6523,1734.875,686.6523,1500.875,686.6523,1488.875,674.6523,1500.875,662.6523" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="234" x="1500.875" y="678.4604">Timestamp of next message is younger?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="1746.875" y="672.0581">yes</text><polygon fill="#FEFECE" filter="url(#f16b2sm6ci0efs)" points="1402.5,704.6523,1414.5,716.6523,1402.5,728.6523,1390.5,716.6523,1402.5,704.6523" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#000000" filter="url(#f16b2sm6ci0efs)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="2814" x="10" y="748.6523"/><rect fill="#FFFFFF" filter="url(#f16b2sm6ci0efs)" height="142.2656" style="stroke: #000000; stroke-width: 2.0;" width="584" x="22" y="863.3408"/><path d="M135,864.3408 L135,872.6377 L125,882.6377 L22,882.6377 " 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="877.3359">fetch message</text><rect fill="#000000" filter="url(#f16b2sm6ci0efs)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="564" x="32" y="899.6377"/><rect fill="#FEFECE" filter="url(#f16b2sm6ci0efs)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="175" x="46" y="925.6377"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="155" x="56" y="946.7764">update message pointer</text><rect fill="#FEFECE" filter="url(#f16b2sm6ci0efs)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="180" x="231" y="925.6377"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="160" x="241" y="946.7764">copy message origin time</text><rect fill="#FEFECE" filter="url(#f16b2sm6ci0efs)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="163" x="421" y="925.6377"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="143" x="431" y="946.7764">copy message payload</text><rect fill="#000000" filter="url(#f16b2sm6ci0efs)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="564" x="32" y="979.6064"/><path d="M934.5,779.0703 L934.5,804.2031 A0,0 0 0 0 934.5,804.2031 L1254.5,804.2031 A0,0 0 0 0 1254.5,804.2031 L1254.5,797.0703 L1274.5,791.6367 L1254.5,789.0703 L1254.5,789.0703 L1244.5,779.0703 L934.5,779.0703 A0,0 0 0 0 934.5,779.0703 " fill="#FBFB77" filter="url(#f16b2sm6ci0efs)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1244.5,779.0703 L1244.5,789.0703 L1254.5,789.0703 L1244.5,779.0703 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="299" x="940.5" y="796.1372">Can be optimized in case all flags are disabled.</text><rect fill="#FEFECE" filter="url(#f16b2sm6ci0efs)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="187" x="1274.5" y="774.6523"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="167" x="1284.5" y="795.791">calculate message latency</text><rect fill="#000000" filter="url(#f16b2sm6ci0efs)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="1479" x="616" y="828.6211"/><rect fill="#EEEEEE" filter="url(#f16b2sm6ci0efs)" height="47.9375" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="252" x="628" y="944.9893"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="628" x2="638" y1="961.9736" y2="961.9736"/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="232" x="638" y="965.6279">URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="870" x2="880" y1="961.9736" y2="961.9736"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="73" x="638" y="980.0967">accumulate</text><text fill="#000000" font-family="monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="84" x="715" y="980.0967">sumLatencies</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="33" x="803" y="980.0967">value</text><rect fill="#EEEEEE" filter="url(#f16b2sm6ci0efs)" height="220.9219" style="stroke: #000000; stroke-width: 2.0;" width="888" x="908" y="845.4229"/><path d="M1544,846.4229 L1544,854.7197 L1534,864.7197 L908,864.7197 " 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="911" y="859.418">URT_CFG_PUBSUB_QOS_JITTERCHECKS == true || URT_CFG_PUBSUB_PROFILING == true</text><polygon fill="#FEFECE" filter="url(#f16b2sm6ci0efs)" points="930,906.7197,1304,906.7197,1316,918.7197,1304,930.7197,930,930.7197,918,918.7197,930,906.7197" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="1121" y="940.9302">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="121" x="930" y="922.5278">Latency is lower than</text><text fill="#000000" font-family="monospace" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="70" x="1055" y="922.5278">minLatency</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="175" x="1129" y="922.5278">but within allowed jitter range?</text><rect fill="#EEEEEE" filter="url(#f16b2sm6ci0efs)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="176" x="1029" y="963.5244"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="45" x="1039" y="984.6631">update</text><text fill="#000000" font-family="monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="70" x="1088" y="984.6631">minLatency</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="33" x="1162" y="984.6631">value</text><polygon fill="#FEFECE" filter="url(#f16b2sm6ci0efs)" points="1348,906.7197,1733,906.7197,1745,918.7197,1733,930.7197,1348,930.7197,1336,918.7197,1348,906.7197" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="1544.5" y="940.9302">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="132" x="1348" y="922.5278">Latency is greater than</text><text fill="#000000" font-family="monospace" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="70" x="1484" y="922.5278">maxLatency</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="175" x="1558" y="922.5278">but within allowed jitter range?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="1745" y="916.1255">no</text><rect fill="#EEEEEE" filter="url(#f16b2sm6ci0efs)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="176" x="1452.5" y="963.5244"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="45" x="1462.5" y="984.6631">update</text><text fill="#000000" font-family="monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="70" x="1511.5" y="984.6631">maxLatency</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="33" x="1585.5" y="984.6631">value</text><rect fill="#FEFECE" filter="url(#f16b2sm6ci0efs)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="130" x="1872.5" y="951.9736"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="20" x="1882.5" y="973.1123">set</text><text fill="#000000" font-family="monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="49" x="1906.5" y="973.1123">latency</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="33" x="1959.5" y="973.1123">value</text><polygon fill="#FEFECE" filter="url(#f16b2sm6ci0efs)" points="1818,903.5713,2057,903.5713,2069,915.5713,2057,927.5713,1818,927.5713,1806,915.5713,1818,903.5713" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="1941.5" y="937.7817">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="47" x="1818" y="919.3794">Optional</text><text fill="#000000" font-family="monospace" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="49" x="1869" y="919.3794">latency</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="135" x="1922" y="919.3794">output argument given?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="2069" y="912.9771">no</text><polygon fill="#FEFECE" filter="url(#f16b2sm6ci0efs)" points="1937.5,1010.3447,1949.5,1022.3447,1937.5,1034.3447,1925.5,1022.3447,1937.5,1010.3447" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#000000" filter="url(#f16b2sm6ci0efs)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="1479" x="616" y="1086.3447"/><rect fill="#EEEEEE" filter="url(#f16b2sm6ci0efs)" height="142.2656" style="stroke: #000000; stroke-width: 2.0;" width="689" x="2123" y="863.3408"/><path d="M2404,864.3408 L2404,872.6377 L2394,882.6377 L2123,882.6377 " 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="2126" y="877.3359">URT_CFG_PUBSUB_PROFILING == true</text><rect fill="#000000" filter="url(#f16b2sm6ci0efs)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="669" x="2133" y="899.6377"/><rect fill="#EEEEEE" filter="url(#f16b2sm6ci0efs)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="338" x="2147" y="925.6377"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="318" x="2157" y="946.7764">decrement counter of consumers left (@message)</text><rect fill="#EEEEEE" filter="url(#f16b2sm6ci0efs)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="277" x="2513" y="925.6377"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="257" x="2523" y="946.7764">increment counter of received messages</text><rect fill="#000000" filter="url(#f16b2sm6ci0efs)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="669" x="2133" y="979.6064"/><rect fill="#000000" filter="url(#f16b2sm6ci0efs)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="2814" x="10" y="1112.3447"/><rect fill="#FEFECE" filter="url(#f16b2sm6ci0efs)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="96" x="1354.5" y="1138.3447"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="76" x="1364.5" y="1159.4834">unlock topic</text><path d="M960.5,1190.7471 L960.5,1215.8799 A0,0 0 0 0 960.5,1215.8799 L1371.5,1215.8799 A0,0 0 0 0 1371.5,1215.8799 L1371.5,1208.7471 L1391.5,1203.3135 L1371.5,1200.7471 L1371.5,1200.7471 L1361.5,1190.7471 L960.5,1190.7471 A0,0 0 0 0 960.5,1190.7471 " fill="#FBFB77" filter="url(#f16b2sm6ci0efs)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1361.5,1190.7471 L1361.5,1200.7471 L1371.5,1200.7471 L1361.5,1190.7471 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="966.5" y="1207.814">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="1019.5" y="1207.814">URT_STATUS_OK</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="13" x="1127.5" y="1207.814">or</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="208" x="1144.5" y="1207.814">URT_STATUS_JITTERVIOLATION</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="1352.5" y="1207.814">.</text><ellipse cx="1402.5" cy="1203.3135" fill="#FFFFFF" filter="url(#f16b2sm6ci0efs)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="1402.5" cy="1203.3135" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><path d="M2834,428.9844 L2834,454.1172 A0,0 0 0 0 2834,454.1172 L3104,454.1172 A0,0 0 0 0 3104,454.1172 L3104,446.9844 L3124,441.5508 L3104,438.9844 L3104,438.9844 L3094,428.9844 L2834,428.9844 A0,0 0 0 0 2834,428.9844 " fill="#FBFB77" filter="url(#f16b2sm6ci0efs)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M3094,428.9844 L3094,438.9844 L3104,438.9844 L3094,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="2840" y="446.0513">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="192" x="2893" y="446.0513">URT_STATUS_FETCH_NOTOPIC</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="3085" y="446.0513">.</text><ellipse cx="3135" cy="441.5508" fill="#FFFFFF" filter="url(#f16b2sm6ci0efs)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="3135" 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="2262.25" x2="2262.25" y1="334.9844" y2="354.9844"/><polygon fill="#A80036" points="2258.25,344.9844,2262.25,354.9844,2266.25,344.9844,2262.25,348.9844" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1400.875" x2="1400.875" y1="584.9219" y2="604.9219"/><polygon fill="#A80036" points="1396.875,594.9219,1400.875,604.9219,1404.875,594.9219,1400.875,598.9219" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1099.125" x2="973.375" y1="528.9531" y2="528.9531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="973.375" x2="973.375" y1="528.9531" y2="550.9531"/><polygon fill="#A80036" points="969.375,540.9531,973.375,550.9531,977.375,540.9531,973.375,544.9531" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1275.125" x2="1400.875" y1="528.9531" y2="528.9531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1400.875" x2="1400.875" y1="528.9531" y2="550.9531"/><polygon fill="#A80036" points="1396.875,540.9531,1400.875,550.9531,1404.875,540.9531,1400.875,544.9531" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="973.375" x2="973.375" y1="584.9219" y2="716.6523"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="973.375" x2="1390.5" y1="716.6523" y2="716.6523"/><polygon fill="#A80036" points="1380.5,712.6523,1390.5,716.6523,1380.5,720.6523,1384.5,716.6523" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1617.875" x2="1617.875" y1="577.25" y2="608.6836"/><polygon fill="#A80036" points="1613.875,598.6836,1617.875,608.6836,1621.875,598.6836,1617.875,602.6836" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1746.875" x2="1758.875" y1="674.6523" y2="674.6523"/><polygon fill="#A80036" points="1754.875,635.668,1758.875,625.668,1762.875,635.668,1758.875,631.668" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1758.875" x2="1758.875" y1="565.25" y2="674.6523"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1758.875" x2="1629.875" y1="565.25" y2="565.25"/><polygon fill="#A80036" points="1639.875,561.25,1629.875,565.25,1639.875,569.25,1635.875,565.25" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1617.875" x2="1617.875" y1="642.6523" y2="662.6523"/><polygon fill="#A80036" points="1613.875,652.6523,1617.875,662.6523,1621.875,652.6523,1617.875,656.6523" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1241" x2="1187.125" y1="494.9531" y2="494.9531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1187.125" x2="1187.125" y1="494.9531" y2="516.9531"/><polygon fill="#A80036" points="1183.125,506.9531,1187.125,516.9531,1191.125,506.9531,1187.125,510.9531" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1564" x2="1617.875" y1="494.9531" y2="494.9531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1617.875" x2="1617.875" y1="494.9531" y2="553.25"/><polygon fill="#A80036" points="1613.875,543.25,1617.875,553.25,1621.875,543.25,1617.875,547.25" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1617.875" x2="1617.875" y1="686.6523" y2="716.6523"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1617.875" x2="1414.5" y1="716.6523" y2="716.6523"/><polygon fill="#A80036" points="1424.5,712.6523,1414.5,716.6523,1424.5,720.6523,1420.5,716.6523" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1402.5" x2="1402.5" y1="462.9531" y2="482.9531"/><polygon fill="#A80036" points="1398.5,472.9531,1402.5,482.9531,1406.5,472.9531,1402.5,476.9531" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="133.5" x2="133.5" y1="905.6377" y2="925.6377"/><polygon fill="#A80036" points="129.5,915.6377,133.5,925.6377,137.5,915.6377,133.5,919.6377" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="321" x2="321" y1="905.6377" y2="925.6377"/><polygon fill="#A80036" points="317,915.6377,321,925.6377,325,915.6377,321,919.6377" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="502.5" x2="502.5" y1="905.6377" y2="925.6377"/><polygon fill="#A80036" points="498.5,915.6377,502.5,925.6377,506.5,915.6377,502.5,919.6377" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="133.5" x2="133.5" y1="959.6064" y2="979.6064"/><polygon fill="#A80036" points="129.5,969.6064,133.5,979.6064,137.5,969.6064,133.5,973.6064" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="321" x2="321" y1="959.6064" y2="979.6064"/><polygon fill="#A80036" points="317,969.6064,321,979.6064,325,969.6064,321,973.6064" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="502.5" x2="502.5" y1="959.6064" y2="979.6064"/><polygon fill="#A80036" points="498.5,969.6064,502.5,979.6064,506.5,969.6064,502.5,973.6064" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1117" x2="1117" y1="930.7197" y2="963.5244"/><polygon fill="#A80036" points="1113,953.5244,1117,963.5244,1121,953.5244,1117,957.5244" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1117" x2="1117" y1="997.4932" y2="1054.3447"/><polygon fill="#A80036" points="1113,1044.3447,1117,1054.3447,1121,1044.3447,1117,1048.3447" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1540.5" x2="1540.5" y1="930.7197" y2="963.5244"/><polygon fill="#A80036" points="1536.5,953.5244,1540.5,963.5244,1544.5,953.5244,1540.5,957.5244" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1540.5" x2="1540.5" y1="997.4932" y2="1054.3447"/><polygon fill="#A80036" points="1536.5,1044.3447,1540.5,1054.3447,1544.5,1044.3447,1540.5,1048.3447" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1316" x2="1336" y1="918.7197" y2="918.7197"/><polygon fill="#A80036" points="1326,914.7197,1336,918.7197,1326,922.7197,1330,918.7197" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1356.5" x2="1356.5" y1="834.6211" y2="881.7197"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1356.5" x2="1117" y1="881.7197" y2="881.7197"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1117" x2="1117" y1="881.7197" y2="906.7197"/><polygon fill="#A80036" points="1113,896.7197,1117,906.7197,1121,896.7197,1117,900.7197" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1745" x2="1780" y1="918.7197" y2="918.7197"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1780" x2="1780" y1="918.7197" y2="1054.3447"/><polygon fill="#A80036" points="1776,1044.3447,1780,1054.3447,1784,1044.3447,1780,1048.3447" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1117" x2="1780" y1="1054.3447" y2="1054.3447"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1937.5" x2="1937.5" y1="927.5713" y2="951.9736"/><polygon fill="#A80036" points="1933.5,941.9736,1937.5,951.9736,1941.5,941.9736,1937.5,945.9736" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2069" x2="2081" y1="915.5713" y2="915.5713"/><polygon fill="#A80036" points="2077,958.958,2081,968.958,2085,958.958,2081,962.958" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2081" x2="2081" y1="915.5713" y2="1022.3447"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2081" x2="1949.5" y1="1022.3447" y2="1022.3447"/><polygon fill="#A80036" points="1959.5,1018.3447,1949.5,1022.3447,1959.5,1026.3447,1955.5,1022.3447" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1937.5" x2="1937.5" y1="985.9424" y2="1010.3447"/><polygon fill="#A80036" points="1933.5,1000.3447,1937.5,1010.3447,1941.5,1000.3447,1937.5,1004.3447" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="754" x2="754" y1="834.6211" y2="944.9893"/><polygon fill="#A80036" points="750,934.9893,754,944.9893,758,934.9893,754,938.9893" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1937.5" x2="1937.5" y1="834.6211" y2="903.5713"/><polygon fill="#A80036" points="1933.5,893.5713,1937.5,903.5713,1941.5,893.5713,1937.5,897.5713" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="754" x2="754" y1="992.9268" y2="1086.3447"/><polygon fill="#A80036" points="750,1076.3447,754,1086.3447,758,1076.3447,754,1080.3447" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1356.5" x2="1356.5" y1="1054.3447" y2="1086.3447"/><polygon fill="#A80036" points="1352.5,1076.3447,1356.5,1086.3447,1360.5,1076.3447,1356.5,1080.3447" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1937.5" x2="1937.5" y1="1034.3447" y2="1086.3447"/><polygon fill="#A80036" points="1933.5,1076.3447,1937.5,1086.3447,1941.5,1076.3447,1937.5,1080.3447" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1368" x2="1368" y1="808.6211" y2="828.6211"/><polygon fill="#A80036" points="1364,818.6211,1368,828.6211,1372,818.6211,1368,822.6211" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2316" x2="2316" y1="905.6377" y2="925.6377"/><polygon fill="#A80036" points="2312,915.6377,2316,925.6377,2320,915.6377,2316,919.6377" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2651.5" x2="2651.5" y1="905.6377" y2="925.6377"/><polygon fill="#A80036" points="2647.5,915.6377,2651.5,925.6377,2655.5,915.6377,2651.5,919.6377" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2316" x2="2316" y1="959.6064" y2="979.6064"/><polygon fill="#A80036" points="2312,969.6064,2316,979.6064,2320,969.6064,2316,973.6064" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2651.5" x2="2651.5" y1="959.6064" y2="979.6064"/><polygon fill="#A80036" points="2647.5,969.6064,2651.5,979.6064,2655.5,969.6064,2651.5,973.6064" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="315" x2="315" y1="754.6523" y2="899.6377"/><polygon fill="#A80036" points="311,889.6377,315,899.6377,319,889.6377,315,893.6377" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1368" x2="1368" y1="754.6523" y2="774.6523"/><polygon fill="#A80036" points="1364,764.6523,1368,774.6523,1372,764.6523,1368,768.6523" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2468.5" x2="2468.5" y1="754.6523" y2="899.6377"/><polygon fill="#A80036" points="2464.5,889.6377,2468.5,899.6377,2472.5,889.6377,2468.5,893.6377" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="315" x2="315" y1="985.6064" y2="1112.3447"/><polygon fill="#A80036" points="311,1102.3447,315,1112.3447,319,1102.3447,315,1106.3447" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1368" x2="1368" y1="1092.3447" y2="1112.3447"/><polygon fill="#A80036" points="1364,1102.3447,1368,1112.3447,1372,1102.3447,1368,1106.3447" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2468.5" x2="2468.5" y1="985.6064" y2="1112.3447"/><polygon fill="#A80036" points="2464.5,1102.3447,2468.5,1112.3447,2472.5,1102.3447,2468.5,1106.3447" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1402.5" x2="1402.5" y1="728.6523" y2="748.6523"/><polygon fill="#A80036" points="1398.5,738.6523,1402.5,748.6523,1406.5,738.6523,1402.5,742.6523" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1402.5" x2="1402.5" y1="1118.3447" y2="1138.3447"/><polygon fill="#A80036" points="1398.5,1128.3447,1402.5,1138.3447,1406.5,1128.3447,1402.5,1132.3447" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1402.5" x2="1402.5" y1="1172.3135" y2="1192.3135"/><polygon fill="#A80036" points="1398.5,1182.3135,1402.5,1192.3135,1406.5,1182.3135,1402.5,1186.3135" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2187.75" x2="1402.5" y1="406.9844" y2="406.9844"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1402.5" x2="1402.5" y1="406.9844" y2="428.9844"/><polygon fill="#A80036" points="1398.5,418.9844,1402.5,428.9844,1406.5,418.9844,1402.5,422.9844" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2336.75" x2="3135" y1="406.9844" y2="406.9844"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="3135" x2="3135" y1="406.9844" y2="430.5508"/><polygon fill="#A80036" points="3131,420.5508,3135,430.5508,3139,420.5508,3135,424.5508" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2262.25" x2="2262.25" y1="374.9844" y2="394.9844"/><polygon fill="#A80036" points="2258.25,384.9844,2262.25,394.9844,2266.25,384.9844,2262.25,388.9844" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[bc6ec49f6c78931d6c87c944a465c26a]
2
@startuml
3

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

    
6

    
7

    
8

    
9

    
10

    
11

    
12
note
13
  - - **subscriber** : urt_frtsubscriber_t* - -
14
  The FRT 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 (Timestamp of last read message equals local copy?) then (yes)
37
    if (Next message is younger?) then (yes)
38
      :proceed to next message;
39
    else (no)
40
      :unlock topic;
41
      stop
42
      note
43
        Returns ""URT_STATUS_FETCH_NOMESSAGE"".
44
      endnote
45
    endif
46
  else (no)
47
    partition "find oldest message" {
48
      repeat
49
        :proceed to next message;
50
      repeat while (Timestamp of next message is younger?) is (yes)
51
    }
52
  endif
53
  fork
54
      partition "fetch message" {
55
    fork
56
      :update message pointer;
57
    fork again
58
      :copy message origin time;
59
    fork again
60
      :copy message payload;
61
    endfork
62
  }
63
  fork again
64
    :calculate message latency;
65
    note
66
      Can be optimized in case all flags are disabled.
67
    endnote
68
    fork
69
      #EEEEEE:..//URT_CFG_PUBSUB_PROFILING == true//..\naccumulate ""sumLatencies"" value;
70
    fork again
71
      partition "//URT_CFG_PUBSUB_QOS_JITTERCHECKS == true || URT_CFG_PUBSUB_PROFILING == true//" #EEEEEE {
72
        if (Latency is lower than ""minLatency"" but within allowed jitter range?) then (yes)
73
          #EEEEEE:update ""minLatency"" value;
74
        elseif (Latency is greater than ""maxLatency"" but within allowed jitter range?) then (yes)
75
          #EEEEEE:update ""maxLatency"" value;
76
        else (no)
77
        endif
78
      }
79
    fork again
80
      if (Optional ""latency"" output argument given?) then (yes)
81
        :set ""latency"" value;
82
      else (no)
83
      endif
84
    endfork
85
  fork again
86
    partition "//URT_CFG_PUBSUB_PROFILING == true//" #EEEEEE {
87
      fork
88
        #EEEEEE:decrement counter of consumers left (@message);
89
      fork again
90
        #EEEEEE:increment counter of received messages;
91
      endfork
92
    }
93
  endfork
94
  :unlock topic;
95
  stop
96
  note
97
    Returns ""URT_STATUS_OK"" or ""URT_STATUS_JITTERVIOLATION"".
98
  endnote
99
else (no)
100
  stop
101
  note
102
    Returns ""URT_STATUS_FETCH_NOTOPIC"".
103
  endnote
104
endif
105

    
106

    
107
@enduml
108

    
109
PlantUML version 1.2020.00(Sat Jan 11 13:30:53 CET 2020)
110
(GPL source distribution)
111
Java Runtime: OpenJDK Runtime Environment
112
JVM: OpenJDK 64-Bit Server VM
113
Java Version: 11.0.7+10-post-Ubuntu-2ubuntu218.04
114
Operating System: Linux
115
Default Encoding: UTF-8
116
Language: en
117
Country: US
118
--></g></svg>