Statistics
| Branch: | Revision:

urtware / doc / activitydiagrams / subscriber / nrtsubscriber / urtNrtSubscriberFetchNextMessage.svg @ 17d978fe

History | View | Annotate | Download (44.331 KB)

1 2d315870 Thomas Schöpping
<?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="1212px" preserveAspectRatio="none" style="width:2842px;height:1212px;" version="1.1" viewBox="0 0 2842 1212" width="2842px" zoomAndPan="magnify"><defs><filter height="300%" id="f1b2x1rhqosozb" 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="1375.5" y="26.708">µRtWare</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="328" x="1256" y="47.6611">urtNrtSubscriberFetchNextMessage()</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="0" x="1423" y="68.6143"/><path d="M1753.75,72.8594 L1753.75,319.8516 L2305.75,319.8516 L2305.75,82.8594 L2295.75,72.8594 L1753.75,72.8594 " fill="#FBFB77" filter="url(#f1b2x1rhqosozb)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M2295.75,72.8594 L2295.75,82.8594 L2305.75,82.8594 L2295.75,72.8594 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="1753.75" x2="1916.75" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1920.75" y="89.4263"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="78" x="1920.75" y="89.4263">subscriber</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="136" x="2002.75" y="89.4263">: urt_nrtsubscriber_t*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="2142.75" x2="2305.75" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="313" x="1759.75" y="105.0591">The NRT subscriber that shall fetch the message.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="76" x="1759.75" y="120.1919">Must not be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="1839.75" y="120.1919">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="1871.75" y="120.1919">.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1753.75" x2="1973.75" y1="130.8242" y2="130.8242"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1977.75" y="134.8247"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="59" x="1977.75" y="134.8247">payload</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="41" x="2040.75" y="134.8247">: void*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="2085.75" x2="2305.75" y1="130.8242" y2="130.8242"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="238" x="1759.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="1759.75" y="165.5903">May be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="1809.75" y="165.5903">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="195" x="1845.75" y="165.5903">for messages without payload.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1753.75" x2="1980.75" y1="176.2227" y2="176.2227"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1984.75" y="180.2231"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="41" x="1984.75" y="180.2231">bytes</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="45" x="2029.75" y="180.2231">: size_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="2078.75" x2="2305.75" y1="176.2227" y2="176.2227"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="137" x="1759.75" y="195.856">Payload size in bytes.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1753.75" x2="1954.25" y1="206.4883" y2="206.4883"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1958.25" y="210.4888"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="53" x="1958.25" y="210.4888">latency</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="2015.25" y="210.4888">: urt_delay_t*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="2105.25" x2="2305.75" y1="206.4883" y2="206.4883"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="267" x="1759.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="1759.75" y="241.2544">May be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="1809.75" y="241.2544">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="1841.75" y="241.2544">.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1753.75" x2="2305.75" y1="249.3203" y2="249.3203"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="1753.75" x2="2305.75" y1="251.3203" y2="251.3203"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="1753.75" x2="1958.75" y1="261.8867" y2="261.8867"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1962.75" y="265.8872"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="45" x="1962.75" y="265.8872">return</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="85" x="2011.75" y="265.8872">: urt_status_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="2100.75" x2="2305.75" y1="261.8867" y2="261.8867"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="1759.75" y="281.52">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="1812.75" y="281.52">URT_STATUS_OK</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="75" x="1920.75" y="281.52">on success.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="1759.75" y="296.6528">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="192" x="1812.75" y="296.6528">URT_STATUS_FETCH_NOTOPIC</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="282" x="2008.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="1759.75" y="311.7856">Retruns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="208" x="1812.75" y="311.7856">URT_STATUS_FETCH_NOMESSAGE</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="228" x="2024.75" y="311.7856">if there is no new message to fetch.</text><ellipse cx="2029.75" cy="349.8516" fill="#000000" filter="url(#f1b2x1rhqosozb)" rx="10" ry="10" style="stroke: none; stroke-width: 1.0;"/><polygon fill="#FEFECE" filter="url(#f1b2x1rhqosozb)" points="1967.25,379.8516,2092.25,379.8516,2104.25,391.8516,2092.25,403.8516,1967.25,403.8516,1955.25,391.8516,1967.25,379.8516" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="125" x="1967.25" y="395.6597">Associated to a topic?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="1935.25" y="389.2573">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="2104.25" y="389.2573">no</text><rect fill="#FEFECE" filter="url(#f1b2x1rhqosozb)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="80" x="1189.5" y="413.8516"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="60" x="1199.5" y="434.9902">lock topic</text><polygon fill="#FEFECE" filter="url(#f1b2x1rhqosozb)" points="1080,467.8203,1379,467.8203,1391,479.8203,1379,491.8203,1080,491.8203,1068,479.8203,1080,467.8203" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="299" x="1080" y="483.6284">Timestamp of last read message equals local copy?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="1048" y="477.2261">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="1391" y="477.2261">no</text><polygon fill="#FEFECE" filter="url(#f1b2x1rhqosozb)" points="938.125,501.8203,1090.125,501.8203,1102.125,513.8203,1090.125,525.8203,938.125,525.8203,926.125,513.8203,938.125,501.8203" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="152" x="938.125" y="517.6284">Next message is younger?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="906.125" y="511.2261">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="1102.125" y="511.2261">no</text><rect fill="#FEFECE" filter="url(#f1b2x1rhqosozb)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="181" x="709.875" y="535.8203"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="161" x="719.875" y="556.959">proceed to next message</text><rect fill="#FEFECE" filter="url(#f1b2x1rhqosozb)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="96" x="1179.875" y="535.8203"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="76" x="1189.875" y="556.959">unlock topic</text><path d="M910.875,588.2227 L910.875,613.3555 A0,0 0 0 0 910.875,613.3555 L1196.875,613.3555 A0,0 0 0 0 1196.875,613.3555 L1196.875,606.2227 L1216.875,600.7891 L1196.875,598.2227 L1196.875,598.2227 L1186.875,588.2227 L910.875,588.2227 A0,0 0 0 0 910.875,588.2227 " fill="#FBFB77" filter="url(#f1b2x1rhqosozb)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1186.875,588.2227 L1186.875,598.2227 L1196.875,598.2227 L1186.875,588.2227 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="916.875" y="605.2896">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="208" x="969.875" y="605.2896">URT_STATUS_FETCH_NOMESSAGE</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="1177.875" y="605.2896">.</text><ellipse cx="1227.875" cy="600.7891" fill="#FFFFFF" filter="url(#f1b2x1rhqosozb)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="1227.875" cy="600.7891" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><rect fill="#FFFFFF" filter="url(#f1b2x1rhqosozb)" height="181.6992" style="stroke: #000000; stroke-width: 2.0;" width="302" x="1305.875" y="501.8203"/><path d="M1455.875,502.8203 L1455.875,511.1172 L1445.875,521.1172 L1305.875,521.1172 " fill="none" style="stroke: #000000; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="140" x="1308.875" y="515.8154">find oldest message</text><rect fill="#FEFECE" filter="url(#f1b2x1rhqosozb)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="181" x="1354.375" y="593.5508"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="161" x="1364.375" y="614.6895">proceed to next message</text><polygon fill="#FEFECE" filter="url(#f1b2x1rhqosozb)" points="1444.875,538.1172,1456.875,550.1172,1444.875,562.1172,1432.875,550.1172,1444.875,538.1172" style="stroke: #A80036; stroke-width: 1.5;"/><polygon fill="#FEFECE" filter="url(#f1b2x1rhqosozb)" points="1327.875,647.5195,1561.875,647.5195,1573.875,659.5195,1561.875,671.5195,1327.875,671.5195,1315.875,659.5195,1327.875,647.5195" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="234" x="1327.875" y="663.3276">Timestamp of next message is younger?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="1573.875" y="656.9253">yes</text><polygon fill="#FEFECE" filter="url(#f1b2x1rhqosozb)" points="1229.5,689.5195,1241.5,701.5195,1229.5,713.5195,1217.5,701.5195,1229.5,689.5195" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#000000" filter="url(#f1b2x1rhqosozb)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="2495" x="10" y="733.5195"/><rect fill="#FFFFFF" filter="url(#f1b2x1rhqosozb)" height="142.2656" style="stroke: #000000; stroke-width: 2.0;" width="584" x="22" y="848.208"/><path d="M135,849.208 L135,857.5049 L125,867.5049 L22,867.5049 " 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="862.2031">fetch message</text><rect fill="#000000" filter="url(#f1b2x1rhqosozb)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="564" x="32" y="884.5049"/><rect fill="#FEFECE" filter="url(#f1b2x1rhqosozb)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="175" x="46" y="910.5049"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="155" x="56" y="931.6436">update message pointer</text><rect fill="#FEFECE" filter="url(#f1b2x1rhqosozb)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="180" x="231" y="910.5049"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="160" x="241" y="931.6436">copy message origin time</text><rect fill="#FEFECE" filter="url(#f1b2x1rhqosozb)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="163" x="421" y="910.5049"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="143" x="431" y="931.6436">copy message payload</text><rect fill="#000000" filter="url(#f1b2x1rhqosozb)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="564" x="32" y="964.4736"/><path d="M761.5,763.9375 L761.5,789.0703 A0,0 0 0 0 761.5,789.0703 L1081.5,789.0703 A0,0 0 0 0 1081.5,789.0703 L1081.5,781.9375 L1101.5,776.5039 L1081.5,773.9375 L1081.5,773.9375 L1071.5,763.9375 L761.5,763.9375 A0,0 0 0 0 761.5,763.9375 " fill="#FBFB77" filter="url(#f1b2x1rhqosozb)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1071.5,763.9375 L1071.5,773.9375 L1081.5,773.9375 L1071.5,763.9375 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="299" x="767.5" y="781.0044">Can be optimized in case all flags are disabled.</text><rect fill="#FEFECE" filter="url(#f1b2x1rhqosozb)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="187" x="1101.5" y="759.5195"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="167" x="1111.5" y="780.6582">calculate message latency</text><rect fill="#000000" filter="url(#f1b2x1rhqosozb)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="1160" x="616" y="813.4883"/><rect fill="#EEEEEE" filter="url(#f1b2x1rhqosozb)" height="47.9375" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="252" x="628" y="929.8564"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="628" x2="638" y1="946.8408" y2="946.8408"/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="232" x="638" y="950.4951">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="946.8408" y2="946.8408"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="73" x="638" y="964.9639">accumulate</text><text fill="#000000" font-family="monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="84" x="715" y="964.9639">sumLatencies</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="33" x="803" y="964.9639">value</text><rect fill="#EEEEEE" filter="url(#f1b2x1rhqosozb)" height="220.9219" style="stroke: #000000; stroke-width: 2.0;" width="551" x="908" y="830.29"/><path d="M1189,831.29 L1189,839.5869 L1179,849.5869 L908,849.5869 " 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="911" y="844.2852">URT_CFG_PUBSUB_PROFILING == true</text><polygon fill="#FEFECE" filter="url(#f1b2x1rhqosozb)" points="930,891.5869,1131,891.5869,1143,903.5869,1131,915.5869,930,915.5869,918,903.5869,930,891.5869" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="1034.5" y="925.7974">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="121" x="930" y="907.395">Latency is lower than</text><text fill="#000000" font-family="monospace" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="70" x="1055" y="907.395">minLatency</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="6" x="1125" y="907.395">?</text><rect fill="#EEEEEE" filter="url(#f1b2x1rhqosozb)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="176" x="942.5" y="948.3916"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="45" x="952.5" y="969.5303">update</text><text fill="#000000" font-family="monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="70" x="1001.5" y="969.5303">minLatency</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="33" x="1075.5" y="969.5303">value</text><polygon fill="#FEFECE" filter="url(#f1b2x1rhqosozb)" points="1175,891.5869,1387,891.5869,1399,903.5869,1387,915.5869,1175,915.5869,1163,903.5869,1175,891.5869" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="1285" y="925.7974">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="132" x="1175" y="907.395">Latency is greater than</text><text fill="#000000" font-family="monospace" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="70" x="1311" y="907.395">maxLatency</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="6" x="1381" y="907.395">?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="1399" y="900.9927">no</text><rect fill="#EEEEEE" filter="url(#f1b2x1rhqosozb)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="176" x="1193" y="948.3916"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="45" x="1203" y="969.5303">update</text><text fill="#000000" font-family="monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="70" x="1252" y="969.5303">maxLatency</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="33" x="1326" y="969.5303">value</text><rect fill="#FEFECE" filter="url(#f1b2x1rhqosozb)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="130" x="1553.5" y="936.8408"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="20" x="1563.5" y="957.9795">set</text><text fill="#000000" font-family="monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="49" x="1587.5" y="957.9795">latency</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="33" x="1640.5" y="957.9795">value</text><polygon fill="#FEFECE" filter="url(#f1b2x1rhqosozb)" points="1499,888.4385,1738,888.4385,1750,900.4385,1738,912.4385,1499,912.4385,1487,900.4385,1499,888.4385" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="1622.5" y="922.6489">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="47" x="1499" y="904.2466">Optional</text><text fill="#000000" font-family="monospace" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="49" x="1550" y="904.2466">latency</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="135" x="1603" y="904.2466">output argument given?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="1750" y="897.8442">no</text><polygon fill="#FEFECE" filter="url(#f1b2x1rhqosozb)" points="1618.5,995.2119,1630.5,1007.2119,1618.5,1019.2119,1606.5,1007.2119,1618.5,995.2119" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#000000" filter="url(#f1b2x1rhqosozb)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="1160" x="616" y="1071.2119"/><rect fill="#EEEEEE" filter="url(#f1b2x1rhqosozb)" height="142.2656" style="stroke: #000000; stroke-width: 2.0;" width="689" x="1804" y="848.208"/><path d="M2085,849.208 L2085,857.5049 L2075,867.5049 L1804,867.5049 " 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="1807" y="862.2031">URT_CFG_PUBSUB_PROFILING == true</text><rect fill="#000000" filter="url(#f1b2x1rhqosozb)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="669" x="1814" y="884.5049"/><rect fill="#EEEEEE" filter="url(#f1b2x1rhqosozb)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="338" x="1828" y="910.5049"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="318" x="1838" y="931.6436">decrement counter of consumers left (@message)</text><rect fill="#EEEEEE" filter="url(#f1b2x1rhqosozb)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="277" x="2194" y="910.5049"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="257" x="2204" y="931.6436">increment counter of received messages</text><rect fill="#000000" filter="url(#f1b2x1rhqosozb)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="669" x="1814" y="964.4736"/><rect fill="#000000" filter="url(#f1b2x1rhqosozb)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="2495" x="10" y="1097.2119"/><rect fill="#FEFECE" filter="url(#f1b2x1rhqosozb)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="96" x="1181.5" y="1123.2119"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="76" x="1191.5" y="1144.3506">unlock topic</text><path d="M1016.5,1175.6143 L1016.5,1200.7471 A0,0 0 0 0 1016.5,1200.7471 L1198.5,1200.7471 A0,0 0 0 0 1198.5,1200.7471 L1198.5,1193.6143 L1218.5,1188.1807 L1198.5,1185.6143 L1198.5,1185.6143 L1188.5,1175.6143 L1016.5,1175.6143 A0,0 0 0 0 1016.5,1175.6143 " fill="#FBFB77" filter="url(#f1b2x1rhqosozb)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1188.5,1175.6143 L1188.5,1185.6143 L1198.5,1185.6143 L1188.5,1175.6143 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="1022.5" y="1192.6812">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="1075.5" y="1192.6812">URT_STATUS_OK</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="1179.5" y="1192.6812">.</text><ellipse cx="1229.5" cy="1188.1807" fill="#FFFFFF" filter="url(#f1b2x1rhqosozb)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="1229.5" cy="1188.1807" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><path d="M2515,413.8516 L2515,438.9844 A0,0 0 0 0 2515,438.9844 L2785,438.9844 A0,0 0 0 0 2785,438.9844 L2785,431.8516 L2805,426.418 L2785,423.8516 L2785,423.8516 L2775,413.8516 L2515,413.8516 A0,0 0 0 0 2515,413.8516 " fill="#FBFB77" filter="url(#f1b2x1rhqosozb)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M2775,413.8516 L2775,423.8516 L2785,423.8516 L2775,413.8516 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="2521" y="430.9185">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="192" x="2574" y="430.9185">URT_STATUS_FETCH_NOTOPIC</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="2766" y="430.9185">.</text><ellipse cx="2816" cy="426.418" fill="#FFFFFF" filter="url(#f1b2x1rhqosozb)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="2816" cy="426.418" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2029.75" x2="2029.75" y1="319.8516" y2="339.8516"/><polygon fill="#A80036" points="2025.75,329.8516,2029.75,339.8516,2033.75,329.8516,2029.75,333.8516" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1227.875" x2="1227.875" y1="569.7891" y2="589.7891"/><polygon fill="#A80036" points="1223.875,579.7891,1227.875,589.7891,1231.875,579.7891,1227.875,583.7891" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="926.125" x2="800.375" y1="513.8203" y2="513.8203"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="800.375" x2="800.375" y1="513.8203" y2="535.8203"/><polygon fill="#A80036" points="796.375,525.8203,800.375,535.8203,804.375,525.8203,800.375,529.8203" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1102.125" x2="1227.875" y1="513.8203" y2="513.8203"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1227.875" x2="1227.875" y1="513.8203" y2="535.8203"/><polygon fill="#A80036" points="1223.875,525.8203,1227.875,535.8203,1231.875,525.8203,1227.875,529.8203" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="800.375" x2="800.375" y1="569.7891" y2="701.5195"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="800.375" x2="1217.5" y1="701.5195" y2="701.5195"/><polygon fill="#A80036" points="1207.5,697.5195,1217.5,701.5195,1207.5,705.5195,1211.5,701.5195" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1444.875" x2="1444.875" y1="562.1172" y2="593.5508"/><polygon fill="#A80036" points="1440.875,583.5508,1444.875,593.5508,1448.875,583.5508,1444.875,587.5508" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1573.875" x2="1585.875" y1="659.5195" y2="659.5195"/><polygon fill="#A80036" points="1581.875,620.5352,1585.875,610.5352,1589.875,620.5352,1585.875,616.5352" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1585.875" x2="1585.875" y1="550.1172" y2="659.5195"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1585.875" x2="1456.875" y1="550.1172" y2="550.1172"/><polygon fill="#A80036" points="1466.875,546.1172,1456.875,550.1172,1466.875,554.1172,1462.875,550.1172" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1444.875" x2="1444.875" y1="627.5195" y2="647.5195"/><polygon fill="#A80036" points="1440.875,637.5195,1444.875,647.5195,1448.875,637.5195,1444.875,641.5195" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1068" x2="1014.125" y1="479.8203" y2="479.8203"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1014.125" x2="1014.125" y1="479.8203" y2="501.8203"/><polygon fill="#A80036" points="1010.125,491.8203,1014.125,501.8203,1018.125,491.8203,1014.125,495.8203" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1391" x2="1444.875" y1="479.8203" y2="479.8203"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1444.875" x2="1444.875" y1="479.8203" y2="538.1172"/><polygon fill="#A80036" points="1440.875,528.1172,1444.875,538.1172,1448.875,528.1172,1444.875,532.1172" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1444.875" x2="1444.875" y1="671.5195" y2="701.5195"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1444.875" x2="1241.5" y1="701.5195" y2="701.5195"/><polygon fill="#A80036" points="1251.5,697.5195,1241.5,701.5195,1251.5,705.5195,1247.5,701.5195" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1229.5" x2="1229.5" y1="447.8203" y2="467.8203"/><polygon fill="#A80036" points="1225.5,457.8203,1229.5,467.8203,1233.5,457.8203,1229.5,461.8203" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="133.5" x2="133.5" y1="890.5049" y2="910.5049"/><polygon fill="#A80036" points="129.5,900.5049,133.5,910.5049,137.5,900.5049,133.5,904.5049" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="321" x2="321" y1="890.5049" y2="910.5049"/><polygon fill="#A80036" points="317,900.5049,321,910.5049,325,900.5049,321,904.5049" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="502.5" x2="502.5" y1="890.5049" y2="910.5049"/><polygon fill="#A80036" points="498.5,900.5049,502.5,910.5049,506.5,900.5049,502.5,904.5049" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="133.5" x2="133.5" y1="944.4736" y2="964.4736"/><polygon fill="#A80036" points="129.5,954.4736,133.5,964.4736,137.5,954.4736,133.5,958.4736" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="321" x2="321" y1="944.4736" y2="964.4736"/><polygon fill="#A80036" points="317,954.4736,321,964.4736,325,954.4736,321,958.4736" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="502.5" x2="502.5" y1="944.4736" y2="964.4736"/><polygon fill="#A80036" points="498.5,954.4736,502.5,964.4736,506.5,954.4736,502.5,958.4736" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1030.5" x2="1030.5" y1="915.5869" y2="948.3916"/><polygon fill="#A80036" points="1026.5,938.3916,1030.5,948.3916,1034.5,938.3916,1030.5,942.3916" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1030.5" x2="1030.5" y1="982.3604" y2="1039.2119"/><polygon fill="#A80036" points="1026.5,1029.2119,1030.5,1039.2119,1034.5,1029.2119,1030.5,1033.2119" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1281" x2="1281" y1="915.5869" y2="948.3916"/><polygon fill="#A80036" points="1277,938.3916,1281,948.3916,1285,938.3916,1281,942.3916" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1281" x2="1281" y1="982.3604" y2="1039.2119"/><polygon fill="#A80036" points="1277,1029.2119,1281,1039.2119,1285,1029.2119,1281,1033.2119" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1143" x2="1163" y1="903.5869" y2="903.5869"/><polygon fill="#A80036" points="1153,899.5869,1163,903.5869,1153,907.5869,1157,903.5869" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1183.5" x2="1183.5" y1="819.4883" y2="866.5869"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1183.5" x2="1030.5" y1="866.5869" y2="866.5869"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1030.5" x2="1030.5" y1="866.5869" y2="891.5869"/><polygon fill="#A80036" points="1026.5,881.5869,1030.5,891.5869,1034.5,881.5869,1030.5,885.5869" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1399" x2="1434" y1="903.5869" y2="903.5869"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1434" x2="1434" y1="903.5869" y2="1039.2119"/><polygon fill="#A80036" points="1430,1029.2119,1434,1039.2119,1438,1029.2119,1434,1033.2119" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1030.5" x2="1434" y1="1039.2119" y2="1039.2119"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1618.5" x2="1618.5" y1="912.4385" y2="936.8408"/><polygon fill="#A80036" points="1614.5,926.8408,1618.5,936.8408,1622.5,926.8408,1618.5,930.8408" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1750" x2="1762" y1="900.4385" y2="900.4385"/><polygon fill="#A80036" points="1758,943.8252,1762,953.8252,1766,943.8252,1762,947.8252" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1762" x2="1762" y1="900.4385" y2="1007.2119"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1762" x2="1630.5" y1="1007.2119" y2="1007.2119"/><polygon fill="#A80036" points="1640.5,1003.2119,1630.5,1007.2119,1640.5,1011.2119,1636.5,1007.2119" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1618.5" x2="1618.5" y1="970.8096" y2="995.2119"/><polygon fill="#A80036" points="1614.5,985.2119,1618.5,995.2119,1622.5,985.2119,1618.5,989.2119" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="754" x2="754" y1="819.4883" y2="929.8564"/><polygon fill="#A80036" points="750,919.8564,754,929.8564,758,919.8564,754,923.8564" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1618.5" x2="1618.5" y1="819.4883" y2="888.4385"/><polygon fill="#A80036" points="1614.5,878.4385,1618.5,888.4385,1622.5,878.4385,1618.5,882.4385" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="754" x2="754" y1="977.7939" y2="1071.2119"/><polygon fill="#A80036" points="750,1061.2119,754,1071.2119,758,1061.2119,754,1065.2119" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1183.5" x2="1183.5" y1="1039.2119" y2="1071.2119"/><polygon fill="#A80036" points="1179.5,1061.2119,1183.5,1071.2119,1187.5,1061.2119,1183.5,1065.2119" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1618.5" x2="1618.5" y1="1019.2119" y2="1071.2119"/><polygon fill="#A80036" points="1614.5,1061.2119,1618.5,1071.2119,1622.5,1061.2119,1618.5,1065.2119" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1195" x2="1195" y1="793.4883" y2="813.4883"/><polygon fill="#A80036" points="1191,803.4883,1195,813.4883,1199,803.4883,1195,807.4883" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1997" x2="1997" y1="890.5049" y2="910.5049"/><polygon fill="#A80036" points="1993,900.5049,1997,910.5049,2001,900.5049,1997,904.5049" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2332.5" x2="2332.5" y1="890.5049" y2="910.5049"/><polygon fill="#A80036" points="2328.5,900.5049,2332.5,910.5049,2336.5,900.5049,2332.5,904.5049" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1997" x2="1997" y1="944.4736" y2="964.4736"/><polygon fill="#A80036" points="1993,954.4736,1997,964.4736,2001,954.4736,1997,958.4736" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2332.5" x2="2332.5" y1="944.4736" y2="964.4736"/><polygon fill="#A80036" points="2328.5,954.4736,2332.5,964.4736,2336.5,954.4736,2332.5,958.4736" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="315" x2="315" y1="739.5195" y2="884.5049"/><polygon fill="#A80036" points="311,874.5049,315,884.5049,319,874.5049,315,878.5049" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1195" x2="1195" y1="739.5195" y2="759.5195"/><polygon fill="#A80036" points="1191,749.5195,1195,759.5195,1199,749.5195,1195,753.5195" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2149.5" x2="2149.5" y1="739.5195" y2="884.5049"/><polygon fill="#A80036" points="2145.5,874.5049,2149.5,884.5049,2153.5,874.5049,2149.5,878.5049" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="315" x2="315" y1="970.4736" y2="1097.2119"/><polygon fill="#A80036" points="311,1087.2119,315,1097.2119,319,1087.2119,315,1091.2119" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1195" x2="1195" y1="1077.2119" y2="1097.2119"/><polygon fill="#A80036" points="1191,1087.2119,1195,1097.2119,1199,1087.2119,1195,1091.2119" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2149.5" x2="2149.5" y1="970.4736" y2="1097.2119"/><polygon fill="#A80036" points="2145.5,1087.2119,2149.5,1097.2119,2153.5,1087.2119,2149.5,1091.2119" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1229.5" x2="1229.5" y1="713.5195" y2="733.5195"/><polygon fill="#A80036" points="1225.5,723.5195,1229.5,733.5195,1233.5,723.5195,1229.5,727.5195" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1229.5" x2="1229.5" y1="1103.2119" y2="1123.2119"/><polygon fill="#A80036" points="1225.5,1113.2119,1229.5,1123.2119,1233.5,1113.2119,1229.5,1117.2119" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1229.5" x2="1229.5" y1="1157.1807" y2="1177.1807"/><polygon fill="#A80036" points="1225.5,1167.1807,1229.5,1177.1807,1233.5,1167.1807,1229.5,1171.1807" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1955.25" x2="1229.5" y1="391.8516" y2="391.8516"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1229.5" x2="1229.5" y1="391.8516" y2="413.8516"/><polygon fill="#A80036" points="1225.5,403.8516,1229.5,413.8516,1233.5,403.8516,1229.5,407.8516" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2104.25" x2="2816" y1="391.8516" y2="391.8516"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2816" x2="2816" y1="391.8516" y2="415.418"/><polygon fill="#A80036" points="2812,405.418,2816,415.418,2820,405.418,2816,409.418" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2029.75" x2="2029.75" y1="359.8516" y2="379.8516"/><polygon fill="#A80036" points="2025.75,369.8516,2029.75,379.8516,2033.75,369.8516,2029.75,373.8516" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[b6c8d1bca4561a01745a9d2059c32413]
2 dd31cb03 Thomas Schöpping
@startuml
3
4
title **µRtWare**\nurtNrtSubscriberFetchNextMessage()\n
5
6
7
8
9
10
11
12
note
13
  - - **subscriber** : urt_nrtsubscriber_t* - -
14
  The NRT 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
endnote
30
31
32
start
33
if (Associated to a topic?) then (yes)
34
  :lock topic;
35
  if (Timestamp of last read message equals local copy?) then (yes)
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
  else (no)
46
    partition "find oldest message" {
47
      repeat
48
        :proceed to next message;
49
      repeat while (Timestamp of next message is younger?) is (yes)
50
    }
51
  endif
52
  fork
53
      partition "fetch message" {
54
    fork
55
      :update message pointer;
56
    fork again
57
      :copy message origin time;
58
    fork again
59
      :copy message payload;
60
    endfork
61
  }
62
  fork again
63
    :calculate message latency;
64
    note
65
      Can be optimized in case all flags are disabled.
66
    endnote
67
    fork
68
      #EEEEEE:..//URT_CFG_PUBSUB_PROFILING == true//..\naccumulate ""sumLatencies"" value;
69
    fork again
70
      partition "//URT_CFG_PUBSUB_PROFILING == true//" #EEEEEE {
71
        if (Latency is lower than ""minLatency""?) then (yes)
72
          #EEEEEE:update ""minLatency"" value;
73
        elseif (Latency is greater than ""maxLatency""?) then (yes)
74
          #EEEEEE:update ""maxLatency"" value;
75
        else (no)
76
        endif
77
      }
78
    fork again
79
      if (Optional ""latency"" output argument given?) then (yes)
80
        :set ""latency"" value;
81
      else (no)
82
      endif
83
    endfork
84
  fork again
85
    partition "//URT_CFG_PUBSUB_PROFILING == true//" #EEEEEE {
86
      fork
87
        #EEEEEE:decrement counter of consumers left (@message);
88
      fork again
89
        #EEEEEE:increment counter of received messages;
90
      endfork
91
    }
92
  endfork
93
  :unlock topic;
94
  stop
95
  note
96
    Returns ""URT_STATUS_OK"".
97
  endnote
98
else (no)
99
  stop
100
  note
101
    Returns ""URT_STATUS_FETCH_NOTOPIC"".
102
  endnote
103
endif
104
105
106
@enduml
107
108
PlantUML version 1.2020.00(Sat Jan 11 13:30:53 CET 2020)
109
(GPL source distribution)
110
Java Runtime: OpenJDK Runtime Environment
111
JVM: OpenJDK 64-Bit Server VM
112 2d315870 Thomas Schöpping
Java Version: 11.0.7+10-post-Ubuntu-2ubuntu218.04
113 dd31cb03 Thomas Schöpping
Operating System: Linux
114
Default Encoding: UTF-8
115
Language: en
116
Country: US
117
--></g></svg>