Statistics
| Branch: | Revision:

urtware / doc / activitydiagrams / subscriber / nrtsubscriber / urtNrtSubscriberFetchLatestMessage.svg @ 408a606c

History | View | Annotate | Download (42.452 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="1355px" preserveAspectRatio="none" style="width:2576px;height:1355px;" version="1.1" viewBox="0 0 2576 1355" width="2576px" zoomAndPan="magnify"><defs><filter height="300%" id="f1cocy9zwa303s" 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="1242.5" y="26.708">µRtWare</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="338" x="1118" y="47.6611">urtNrtSubscriberFetchLatestMessage()</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="0" x="1290" y="68.6143"/><path d="M1423,72.8594 L1423,319.8516 L1975,319.8516 L1975,82.8594 L1965,72.8594 L1423,72.8594 " fill="#FBFB77" filter="url(#f1cocy9zwa303s)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1965,72.8594 L1965,82.8594 L1975,82.8594 L1965,72.8594 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="1423" x2="1586" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1590" y="89.4263"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="78" x="1590" y="89.4263">subscriber</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="136" x="1672" y="89.4263">: urt_nrtsubscriber_t*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1812" x2="1975" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="313" x="1429" 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="1429" y="120.1919">Must not be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="1509" y="120.1919">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="1541" y="120.1919">.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1423" x2="1643" y1="130.8242" y2="130.8242"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1647" y="134.8247"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="59" x="1647" y="134.8247">payload</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="41" x="1710" y="134.8247">: void*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1755" x2="1975" y1="130.8242" y2="130.8242"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="238" x="1429" 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="1429" y="165.5903">May be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="1479" y="165.5903">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="195" x="1515" y="165.5903">for messages without payload.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1423" x2="1650" y1="176.2227" y2="176.2227"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1654" y="180.2231"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="41" x="1654" y="180.2231">bytes</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="45" x="1699" y="180.2231">: size_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1748" x2="1975" y1="176.2227" y2="176.2227"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="137" x="1429" y="195.856">Payload size in bytes.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1423" x2="1623.5" y1="206.4883" y2="206.4883"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1627.5" y="210.4888"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="53" x="1627.5" y="210.4888">latency</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="1684.5" y="210.4888">: urt_delay_t*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1774.5" x2="1975" y1="206.4883" y2="206.4883"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="267" x="1429" 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="1429" y="241.2544">May be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="1479" y="241.2544">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="1511" y="241.2544">.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1423" x2="1975" y1="249.3203" y2="249.3203"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="1423" x2="1975" y1="251.3203" y2="251.3203"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="1423" x2="1628" y1="261.8867" y2="261.8867"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1632" y="265.8872"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="45" x="1632" y="265.8872">return</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="85" x="1681" y="265.8872">: urt_status_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1770" x2="1975" y1="261.8867" y2="261.8867"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="1429" y="281.52">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="1482" y="281.52">URT_STATUS_OK</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="75" x="1590" y="281.52">on success.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="1429" y="296.6528">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="192" x="1482" y="296.6528">URT_STATUS_FETCH_NOTOPIC</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="282" x="1678" 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="1429" y="311.7856">Retruns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="208" x="1482" y="311.7856">URT_STATUS_FETCH_NOMESSAGE</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="228" x="1694" y="311.7856">if there is no new message to fetch.</text><ellipse cx="1699" cy="349.8516" fill="#000000" filter="url(#f1cocy9zwa303s)" rx="10" ry="10" style="stroke: none; stroke-width: 1.0;"/><polygon fill="#FEFECE" filter="url(#f1cocy9zwa303s)" points="1636.5,379.8516,1761.5,379.8516,1773.5,391.8516,1761.5,403.8516,1636.5,403.8516,1624.5,391.8516,1636.5,379.8516" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="125" x="1636.5" y="395.6597">Associated to a topic?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="1604.5" y="389.2573">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="1773.5" y="389.2573">no</text><rect fill="#FEFECE" filter="url(#f1cocy9zwa303s)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="80" x="776" y="413.8516"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="60" x="786" y="434.9902">lock topic</text><rect fill="#FFFFFF" filter="url(#f1cocy9zwa303s)" height="348.8823" style="stroke: #000000; stroke-width: 2.0;" width="736" x="446.5" y="458.6221"/><path d="M591.5,459.6221 L591.5,467.9189 L581.5,477.9189 L446.5,477.9189 " fill="none" style="stroke: #000000; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="135" x="449.5" y="472.6172">find latest message</text><rect fill="#FEFECE" filter="url(#f1cocy9zwa303s)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="145" x="743.5" y="494.9189"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="44" x="753.5" y="516.0576">access</text><text fill="#000000" font-family="monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="77" x="801.5" y="516.0576">lastMessage</text><rect fill="#000000" filter="url(#f1cocy9zwa303s)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="671" x="480.5" y="604.5981"/><rect fill="#FEFECE" filter="url(#f1cocy9zwa303s)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="181" x="573" y="630.5981"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="161" x="583" y="651.7368">proceed to next message</text><rect fill="#EEEEEE" filter="url(#f1cocy9zwa303s)" height="47.9375" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="338" x="494.5" y="699.5669"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="494.5" x2="547.5" y1="716.5513" y2="716.5513"/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="232" x="547.5" y="720.2056">URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="779.5" x2="832.5" y1="716.5513" y2="716.5513"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="318" x="504.5" y="734.6743">decrement counter of consumers left (@message)</text><rect fill="#EEEEEE" filter="url(#f1cocy9zwa303s)" height="47.9375" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="277" x="860.5" y="665.0825"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="860.5" x2="883" y1="682.0669" y2="682.0669"/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="232" x="883" y="685.7212">URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1115" x2="1137.5" y1="682.0669" y2="682.0669"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="257" x="870.5" y="700.1899">increment counter of received messages</text><rect fill="#000000" filter="url(#f1cocy9zwa303s)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="671" x="480.5" y="767.5044"/><polygon fill="#FEFECE" filter="url(#f1cocy9zwa303s)" points="699,548.8877,933,548.8877,945,560.8877,933,572.8877,699,572.8877,687,560.8877,699,548.8877" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="820" y="583.0981">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="234" x="699" y="564.6958">Timestamp of next message is younger?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="673" y="558.2935">no</text><polygon fill="#FEFECE" filter="url(#f1cocy9zwa303s)" points="730,827.5044,902,827.5044,914,839.5044,902,851.5044,730,851.5044,718,839.5044,730,827.5044" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="172" x="730" y="843.3125">Timestamp equals local copy?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="698" y="836.9102">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="914" y="836.9102">no</text><rect fill="#FEFECE" filter="url(#f1cocy9zwa303s)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="96" x="279" y="861.5044"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="76" x="289" y="882.6431">unlock topic</text><path d="M10,930.4731 L10,955.606 A0,0 0 0 0 10,955.606 L296,955.606 A0,0 0 0 0 296,955.606 L296,948.4731 L316,943.0396 L296,940.4731 L296,940.4731 L286,930.4731 L10,930.4731 A0,0 0 0 0 10,930.4731 " fill="#FBFB77" filter="url(#f1cocy9zwa303s)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M286,930.4731 L286,940.4731 L296,940.4731 L286,930.4731 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="16" y="947.54">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="208" x="69" y="947.54">URT_STATUS_FETCH_NOMESSAGE</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="277" y="947.54">.</text><ellipse cx="327" cy="943.0396" fill="#FFFFFF" filter="url(#f1cocy9zwa303s)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="327" cy="943.0396" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><rect fill="#000000" filter="url(#f1cocy9zwa303s)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="1854" x="385" y="861.5044"/><rect fill="#FFFFFF" filter="url(#f1cocy9zwa303s)" height="142.2656" style="stroke: #000000; stroke-width: 2.0;" width="622" x="397" y="991.1929"/><path d="M510,992.1929 L510,1000.4897 L500,1010.4897 L397,1010.4897 " fill="none" style="stroke: #000000; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="103" x="400" y="1005.188">fetch message</text><rect fill="#000000" filter="url(#f1cocy9zwa303s)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="602" x="407" y="1027.4897"/><rect fill="#FEFECE" filter="url(#f1cocy9zwa303s)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="175" x="421" y="1053.4897"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="155" x="431" y="1074.6284">update message pointer</text><rect fill="#FEFECE" filter="url(#f1cocy9zwa303s)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="180" x="624" y="1053.4897"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="160" x="634" y="1074.6284">copy message origin time</text><rect fill="#FEFECE" filter="url(#f1cocy9zwa303s)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="163" x="832" y="1053.4897"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="143" x="842" y="1074.6284">copy message payload</text><rect fill="#000000" filter="url(#f1cocy9zwa303s)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="602" x="407" y="1107.4585"/><path d="M1208.5,891.9224 L1208.5,917.0552 A0,0 0 0 0 1208.5,917.0552 L1528.5,917.0552 A0,0 0 0 0 1528.5,917.0552 L1528.5,909.9224 L1548.5,904.4888 L1528.5,901.9224 L1528.5,901.9224 L1518.5,891.9224 L1208.5,891.9224 A0,0 0 0 0 1208.5,891.9224 " fill="#FBFB77" filter="url(#f1cocy9zwa303s)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1518.5,891.9224 L1518.5,901.9224 L1528.5,901.9224 L1518.5,891.9224 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="299" x="1214.5" y="908.9893">Can be optimized in case all flags are disabled.</text><rect fill="#FEFECE" filter="url(#f1cocy9zwa303s)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="187" x="1548.5" y="887.5044"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="167" x="1558.5" y="908.6431">calculate message latency</text><rect fill="#000000" filter="url(#f1cocy9zwa303s)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="1180" x="1047" y="956.4731"/><rect fill="#EEEEEE" filter="url(#f1cocy9zwa303s)" height="47.9375" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="252" x="1061" y="1072.8413"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1061" x2="1071" y1="1089.8257" y2="1089.8257"/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="232" x="1071" y="1093.48">URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1303" x2="1313" y1="1089.8257" y2="1089.8257"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="73" x="1071" y="1107.9487">accumulate</text><text fill="#000000" font-family="monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="84" x="1148" y="1107.9487">sumLatencies</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="33" x="1236" y="1107.9487">value</text><rect fill="#EEEEEE" filter="url(#f1cocy9zwa303s)" height="220.9219" style="stroke: #000000; stroke-width: 2.0;" width="551" x="1341" y="973.2749"/><path d="M1622,974.2749 L1622,982.5718 L1612,992.5718 L1341,992.5718 " 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="1344" y="987.27">URT_CFG_PUBSUB_PROFILING == true</text><polygon fill="#FEFECE" filter="url(#f1cocy9zwa303s)" points="1363,1034.5718,1564,1034.5718,1576,1046.5718,1564,1058.5718,1363,1058.5718,1351,1046.5718,1363,1034.5718" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="1467.5" y="1068.7822">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="121" x="1363" y="1050.3799">Latency is lower than</text><text fill="#000000" font-family="monospace" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="70" x="1488" y="1050.3799">minLatency</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="6" x="1558" y="1050.3799">?</text><rect fill="#EEEEEE" filter="url(#f1cocy9zwa303s)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="176" x="1375.5" y="1091.3765"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="45" x="1385.5" y="1112.5151">update</text><text fill="#000000" font-family="monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="70" x="1434.5" y="1112.5151">minLatency</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="33" x="1508.5" y="1112.5151">value</text><polygon fill="#FEFECE" filter="url(#f1cocy9zwa303s)" points="1608,1034.5718,1820,1034.5718,1832,1046.5718,1820,1058.5718,1608,1058.5718,1596,1046.5718,1608,1034.5718" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="1718" y="1068.7822">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="132" x="1608" y="1050.3799">Latency is greater than</text><text fill="#000000" font-family="monospace" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="70" x="1744" y="1050.3799">maxLatency</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="6" x="1814" y="1050.3799">?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="1832" y="1043.9775">no</text><rect fill="#EEEEEE" filter="url(#f1cocy9zwa303s)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="176" x="1626" y="1091.3765"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="45" x="1636" y="1112.5151">update</text><text fill="#000000" font-family="monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="70" x="1685" y="1112.5151">maxLatency</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="33" x="1759" y="1112.5151">value</text><rect fill="#FEFECE" filter="url(#f1cocy9zwa303s)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="130" x="1986.5" y="1079.8257"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="20" x="1996.5" y="1100.9644">set</text><text fill="#000000" font-family="monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="49" x="2020.5" y="1100.9644">latency</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="33" x="2073.5" y="1100.9644">value</text><polygon fill="#FEFECE" filter="url(#f1cocy9zwa303s)" points="1932,1031.4233,2171,1031.4233,2183,1043.4233,2171,1055.4233,1932,1055.4233,1920,1043.4233,1932,1031.4233" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="2055.5" y="1065.6338">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="47" x="1932" y="1047.2314">Optional</text><text fill="#000000" font-family="monospace" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="49" x="1983" y="1047.2314">latency</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="135" x="2036" y="1047.2314">output argument given?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="2183" y="1040.8291">no</text><polygon fill="#FEFECE" filter="url(#f1cocy9zwa303s)" points="2051.5,1138.1968,2063.5,1150.1968,2051.5,1162.1968,2039.5,1150.1968,2051.5,1138.1968" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#000000" filter="url(#f1cocy9zwa303s)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="1180" x="1047" y="1214.1968"/><rect fill="#000000" filter="url(#f1cocy9zwa303s)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="1854" x="385" y="1240.1968"/><rect fill="#FEFECE" filter="url(#f1cocy9zwa303s)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="96" x="1269" y="1266.1968"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="76" x="1279" y="1287.3354">unlock topic</text><path d="M1104,1318.5991 L1104,1343.7319 A0,0 0 0 0 1104,1343.7319 L1286,1343.7319 A0,0 0 0 0 1286,1343.7319 L1286,1336.5991 L1306,1331.1655 L1286,1328.5991 L1286,1328.5991 L1276,1318.5991 L1104,1318.5991 A0,0 0 0 0 1104,1318.5991 " fill="#FBFB77" filter="url(#f1cocy9zwa303s)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1276,1318.5991 L1276,1328.5991 L1286,1328.5991 L1276,1318.5991 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="1110" y="1335.666">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="1163" y="1335.666">URT_STATUS_OK</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="1267" y="1335.666">.</text><ellipse cx="1317" cy="1331.1655" fill="#FFFFFF" filter="url(#f1cocy9zwa303s)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="1317" cy="1331.1655" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><path d="M2249,413.8516 L2249,438.9844 A0,0 0 0 0 2249,438.9844 L2519,438.9844 A0,0 0 0 0 2519,438.9844 L2519,431.8516 L2539,426.418 L2519,423.8516 L2519,423.8516 L2509,413.8516 L2249,413.8516 A0,0 0 0 0 2249,413.8516 " fill="#FBFB77" filter="url(#f1cocy9zwa303s)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M2509,413.8516 L2509,423.8516 L2519,423.8516 L2509,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="2255" y="430.9185">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="192" x="2308" y="430.9185">URT_STATUS_FETCH_NOTOPIC</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="2500" y="430.9185">.</text><ellipse cx="2550" cy="426.418" fill="#FFFFFF" filter="url(#f1cocy9zwa303s)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="2550" 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="1699" x2="1699" y1="319.8516" y2="339.8516"/><polygon fill="#A80036" points="1695,329.8516,1699,339.8516,1703,329.8516,1699,333.8516" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="663.5" x2="663.5" y1="664.5669" y2="699.5669"/><polygon fill="#A80036" points="659.5,689.5669,663.5,699.5669,667.5,689.5669,663.5,693.5669" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="663.5" x2="663.5" y1="610.5981" y2="630.5981"/><polygon fill="#A80036" points="659.5,620.5981,663.5,630.5981,667.5,620.5981,663.5,624.5981" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="999" x2="999" y1="610.5981" y2="665.0825"/><polygon fill="#A80036" points="995,655.0825,999,665.0825,1003,655.0825,999,659.0825" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="663.5" x2="663.5" y1="747.5044" y2="767.5044"/><polygon fill="#A80036" points="659.5,757.5044,663.5,767.5044,667.5,757.5044,663.5,761.5044" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="999" x2="999" y1="713.02" y2="767.5044"/><polygon fill="#A80036" points="995,757.5044,999,767.5044,1003,757.5044,999,761.5044" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="816" x2="816" y1="572.8877" y2="604.5981"/><polygon fill="#A80036" points="812,594.5981,816,604.5981,820,594.5981,816,598.5981" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="816" x2="816" y1="773.5044" y2="783.5044"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="816" x2="1163.5" y1="783.5044" y2="783.5044"/><polygon fill="#A80036" points="1159.5,680.6489,1163.5,670.6489,1167.5,680.6489,1163.5,676.6489" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1163.5" x2="1163.5" y1="560.8877" y2="783.5044"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1163.5" x2="945" y1="560.8877" y2="560.8877"/><polygon fill="#A80036" points="955,556.8877,945,560.8877,955,564.8877,951,560.8877" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="687" x2="468.5" y1="560.8877" y2="560.8877"/><polygon fill="#A80036" points="464.5,666.6489,468.5,676.6489,472.5,666.6489,468.5,670.6489" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="468.5" x2="468.5" y1="560.8877" y2="795.5044"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="468.5" x2="816" y1="795.5044" y2="795.5044"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="816" x2="816" y1="795.5044" y2="827.5044"/><polygon fill="#A80036" points="812,817.5044,816,827.5044,820,817.5044,816,821.5044" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="816" x2="816" y1="528.8877" y2="548.8877"/><polygon fill="#A80036" points="812,538.8877,816,548.8877,820,538.8877,816,542.8877" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="816" x2="816" y1="447.8203" y2="494.9189"/><polygon fill="#A80036" points="812,484.9189,816,494.9189,820,484.9189,816,488.9189" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="327" x2="327" y1="895.4731" y2="932.0396"/><polygon fill="#A80036" points="323,922.0396,327,932.0396,331,922.0396,327,926.0396" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="508.5" x2="508.5" y1="1033.4897" y2="1053.4897"/><polygon fill="#A80036" points="504.5,1043.4897,508.5,1053.4897,512.5,1043.4897,508.5,1047.4897" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="714" x2="714" y1="1033.4897" y2="1053.4897"/><polygon fill="#A80036" points="710,1043.4897,714,1053.4897,718,1043.4897,714,1047.4897" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="913.5" x2="913.5" y1="1033.4897" y2="1053.4897"/><polygon fill="#A80036" points="909.5,1043.4897,913.5,1053.4897,917.5,1043.4897,913.5,1047.4897" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="508.5" x2="508.5" y1="1087.4585" y2="1107.4585"/><polygon fill="#A80036" points="504.5,1097.4585,508.5,1107.4585,512.5,1097.4585,508.5,1101.4585" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="714" x2="714" y1="1087.4585" y2="1107.4585"/><polygon fill="#A80036" points="710,1097.4585,714,1107.4585,718,1097.4585,714,1101.4585" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="913.5" x2="913.5" y1="1087.4585" y2="1107.4585"/><polygon fill="#A80036" points="909.5,1097.4585,913.5,1107.4585,917.5,1097.4585,913.5,1101.4585" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1463.5" x2="1463.5" y1="1058.5718" y2="1091.3765"/><polygon fill="#A80036" points="1459.5,1081.3765,1463.5,1091.3765,1467.5,1081.3765,1463.5,1085.3765" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1463.5" x2="1463.5" y1="1125.3452" y2="1182.1968"/><polygon fill="#A80036" points="1459.5,1172.1968,1463.5,1182.1968,1467.5,1172.1968,1463.5,1176.1968" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1714" x2="1714" y1="1058.5718" y2="1091.3765"/><polygon fill="#A80036" points="1710,1081.3765,1714,1091.3765,1718,1081.3765,1714,1085.3765" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1714" x2="1714" y1="1125.3452" y2="1182.1968"/><polygon fill="#A80036" points="1710,1172.1968,1714,1182.1968,1718,1172.1968,1714,1176.1968" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1576" x2="1596" y1="1046.5718" y2="1046.5718"/><polygon fill="#A80036" points="1586,1042.5718,1596,1046.5718,1586,1050.5718,1590,1046.5718" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1616.5" x2="1616.5" y1="962.4731" y2="1009.5718"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1616.5" x2="1463.5" y1="1009.5718" y2="1009.5718"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1463.5" x2="1463.5" y1="1009.5718" y2="1034.5718"/><polygon fill="#A80036" points="1459.5,1024.5718,1463.5,1034.5718,1467.5,1024.5718,1463.5,1028.5718" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1832" x2="1867" y1="1046.5718" y2="1046.5718"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1867" x2="1867" y1="1046.5718" y2="1182.1968"/><polygon fill="#A80036" points="1863,1172.1968,1867,1182.1968,1871,1172.1968,1867,1176.1968" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1463.5" x2="1867" y1="1182.1968" y2="1182.1968"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2051.5" x2="2051.5" y1="1055.4233" y2="1079.8257"/><polygon fill="#A80036" points="2047.5,1069.8257,2051.5,1079.8257,2055.5,1069.8257,2051.5,1073.8257" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2183" x2="2195" y1="1043.4233" y2="1043.4233"/><polygon fill="#A80036" points="2191,1086.8101,2195,1096.8101,2199,1086.8101,2195,1090.8101" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2195" x2="2195" y1="1043.4233" y2="1150.1968"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2195" x2="2063.5" y1="1150.1968" y2="1150.1968"/><polygon fill="#A80036" points="2073.5,1146.1968,2063.5,1150.1968,2073.5,1154.1968,2069.5,1150.1968" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2051.5" x2="2051.5" y1="1113.7944" y2="1138.1968"/><polygon fill="#A80036" points="2047.5,1128.1968,2051.5,1138.1968,2055.5,1128.1968,2051.5,1132.1968" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1187" x2="1187" y1="962.4731" y2="1072.8413"/><polygon fill="#A80036" points="1183,1062.8413,1187,1072.8413,1191,1062.8413,1187,1066.8413" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2051.5" x2="2051.5" y1="962.4731" y2="1031.4233"/><polygon fill="#A80036" points="2047.5,1021.4233,2051.5,1031.4233,2055.5,1021.4233,2051.5,1025.4233" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2213" x2="2213" y1="962.4731" y2="1214.1968"/><polygon fill="#A80036" points="2209,1204.1968,2213,1214.1968,2217,1204.1968,2213,1208.1968" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1187" x2="1187" y1="1120.7788" y2="1214.1968"/><polygon fill="#A80036" points="1183,1204.1968,1187,1214.1968,1191,1204.1968,1187,1208.1968" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1616.5" x2="1616.5" y1="1182.1968" y2="1214.1968"/><polygon fill="#A80036" points="1612.5,1204.1968,1616.5,1214.1968,1620.5,1204.1968,1616.5,1208.1968" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2051.5" x2="2051.5" y1="1162.1968" y2="1214.1968"/><polygon fill="#A80036" points="2047.5,1204.1968,2051.5,1214.1968,2055.5,1204.1968,2051.5,1208.1968" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1642" x2="1642" y1="921.4731" y2="956.4731"/><polygon fill="#A80036" points="1638,946.4731,1642,956.4731,1646,946.4731,1642,950.4731" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="708" x2="708" y1="867.5044" y2="1027.4897"/><polygon fill="#A80036" points="704,1017.4897,708,1027.4897,712,1017.4897,708,1021.4897" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1642" x2="1642" y1="867.5044" y2="887.5044"/><polygon fill="#A80036" points="1638,877.5044,1642,887.5044,1646,877.5044,1642,881.5044" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="708" x2="708" y1="1113.4585" y2="1240.1968"/><polygon fill="#A80036" points="704,1230.1968,708,1240.1968,712,1230.1968,708,1234.1968" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1642" x2="1642" y1="1220.1968" y2="1240.1968"/><polygon fill="#A80036" points="1638,1230.1968,1642,1240.1968,1646,1230.1968,1642,1234.1968" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1317" x2="1317" y1="1246.1968" y2="1266.1968"/><polygon fill="#A80036" points="1313,1256.1968,1317,1266.1968,1321,1256.1968,1317,1260.1968" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1317" x2="1317" y1="1300.1655" y2="1320.1655"/><polygon fill="#A80036" points="1313,1310.1655,1317,1320.1655,1321,1310.1655,1317,1314.1655" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="718" x2="327" y1="839.5044" y2="839.5044"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="327" x2="327" y1="839.5044" y2="861.5044"/><polygon fill="#A80036" points="323,851.5044,327,861.5044,331,851.5044,327,855.5044" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="914" x2="1317" y1="839.5044" y2="839.5044"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1317" x2="1317" y1="839.5044" y2="861.5044"/><polygon fill="#A80036" points="1313,851.5044,1317,861.5044,1321,851.5044,1317,855.5044" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1624.5" x2="816" y1="391.8516" y2="391.8516"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="816" x2="816" y1="391.8516" y2="413.8516"/><polygon fill="#A80036" points="812,403.8516,816,413.8516,820,403.8516,816,407.8516" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1773.5" x2="2550" y1="391.8516" y2="391.8516"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2550" x2="2550" y1="391.8516" y2="415.418"/><polygon fill="#A80036" points="2546,405.418,2550,415.418,2554,405.418,2550,409.418" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1699" x2="1699" y1="359.8516" y2="379.8516"/><polygon fill="#A80036" points="1695,369.8516,1699,379.8516,1703,369.8516,1699,373.8516" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[1192334a2232d3ea671bdb4421c41a6b]
2 dd31cb03 Thomas Schöpping
@startuml
3
4
title **µRtWare**\nurtNrtSubscriberFetchLatestMessage()\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
    partition "find latest message" {
36
    :access ""lastMessage"";
37
    while (Timestamp of next message is younger?) is (yes)
38
      fork
39
        :proceed to next message;
40
        #EEEEEE:..//URT_CFG_PUBSUB_PROFILING == true//..\ndecrement counter of consumers left (@message);
41
      fork again
42
        #EEEEEE:..//URT_CFG_PUBSUB_PROFILING == true//..\nincrement counter of received messages;
43
      endfork
44
    endwhile (no)
45
  }
46
  if (Timestamp equals local copy?) then (yes)
47
    :unlock topic;
48
    stop
49
    note
50
      Returns ""URT_STATUS_FETCH_NOMESSAGE"".
51
    endnote
52
  else (no)
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_PROFILING == true//" #EEEEEE {
72
          if (Latency is lower than ""minLatency""?) then (yes)
73
            #EEEEEE:update ""minLatency"" value;
74
          elseif (Latency is greater than ""maxLatency""?) then (yes)
75
            #EEEEEE:update ""maxLatency"" value;
76
          else (no)
77
          endif
78
        }
79
      fork again
80
        if (Optional ""latency"" output argument given?) then (yes)
81
          :set ""latency"" value;
82
        else (no)
83
        endif
84
      fork again
85
      endfork
86
    endfork
87
    :unlock topic;
88
    stop
89
    note
90
      Returns ""URT_STATUS_OK"".
91
    endnote
92
  endif
93
else (no)
94
  stop
95
  note
96
    Returns ""URT_STATUS_FETCH_NOTOPIC"".
97
  endnote
98
endif
99
100
101
@enduml
102
103
PlantUML version 1.2020.00(Sat Jan 11 13:30:53 CET 2020)
104
(GPL source distribution)
105
Java Runtime: OpenJDK Runtime Environment
106
JVM: OpenJDK 64-Bit Server VM
107 2d315870 Thomas Schöpping
Java Version: 11.0.7+10-post-Ubuntu-2ubuntu218.04
108 dd31cb03 Thomas Schöpping
Operating System: Linux
109
Default Encoding: UTF-8
110
Language: en
111
Country: US
112
--></g></svg>