urtware / doc / activitydiagrams / subscriber / frtsubscriber / urtFrtSubscriberFetchLatestMessage.svg @ e360ce71
History | View | Annotate | Download (43.903 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="1370px" preserveAspectRatio="none" style="width:2922px;height:1370px;" version="1.1" viewBox="0 0 2922 1370" width="2922px" zoomAndPan="magnify"><defs><filter height="300%" id="f12n62kzuquswy" 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="1415.5" y="26.708">µRtWare</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="334" x="1293" y="47.6611">urtFrtSubscriberFetchLatestMessage()</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="0" x="1463" y="68.6143"/><path d="M1570.75,72.8594 L1570.75,334.9844 L2259.75,334.9844 L2259.75,82.8594 L2249.75,72.8594 L1570.75,72.8594 " fill="#FBFB77" filter="url(#f12n62kzuquswy)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M2249.75,72.8594 L2249.75,82.8594 L2259.75,82.8594 L2249.75,72.8594 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="1570.75" x2="1804.25" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1808.25" y="89.4263"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="78" x="1808.25" y="89.4263">subscriber</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="132" x="1890.25" y="89.4263">: urt_frtsubscriber_t*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="2026.25" x2="2259.75" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="350" x="1576.75" y="105.0591">The FRT subscriber that shall fetch the latest message.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="76" x="1576.75" y="120.1919">Must not be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="1656.75" y="120.1919">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="1688.75" y="120.1919">.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1570.75" x2="1859.25" y1="130.8242" y2="130.8242"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1863.25" y="134.8247"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="59" x="1863.25" y="134.8247">payload</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="41" x="1926.25" y="134.8247">: void*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1971.25" x2="2259.75" y1="130.8242" y2="130.8242"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="238" x="1576.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="1576.75" y="165.5903">May be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="1626.75" y="165.5903">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="195" x="1662.75" y="165.5903">for messages without payload.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1570.75" x2="1866.25" y1="176.2227" y2="176.2227"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1870.25" y="180.2231"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="41" x="1870.25" y="180.2231">bytes</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="45" x="1915.25" y="180.2231">: size_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1964.25" x2="2259.75" y1="176.2227" y2="176.2227"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="137" x="1576.75" y="195.856">Payload size in bytes.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1570.75" x2="1839.75" y1="206.4883" y2="206.4883"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1843.75" y="210.4888"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="53" x="1843.75" y="210.4888">latency</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="1900.75" y="210.4888">: urt_delay_t*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1990.75" x2="2259.75" y1="206.4883" y2="206.4883"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="267" x="1576.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="1576.75" y="241.2544">May be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="1626.75" y="241.2544">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="1658.75" y="241.2544">.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1570.75" x2="2259.75" y1="249.3203" y2="249.3203"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="1570.75" x2="2259.75" y1="251.3203" y2="251.3203"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="1570.75" x2="1844.25" y1="261.8867" y2="261.8867"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1848.25" y="265.8872"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="45" x="1848.25" y="265.8872">return</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="85" x="1897.25" y="265.8872">: urt_status_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1986.25" x2="2259.75" y1="261.8867" y2="261.8867"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="1576.75" y="281.52">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="1629.75" y="281.52">URT_STATUS_OK</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="75" x="1737.75" y="281.52">on success.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="1576.75" y="296.6528">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="192" x="1629.75" y="296.6528">URT_STATUS_FETCH_NOTOPIC</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="282" x="1825.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="1576.75" y="311.7856">Retruns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="208" x="1629.75" y="311.7856">URT_STATUS_FETCH_NOMESSAGE</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="228" x="1841.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="1576.75" y="326.9185">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="208" x="1629.75" y="326.9185">URT_STATUS_JITTERVIOLATION</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="403" x="1841.75" y="326.9185">if the message's latency violated the maximum expected jitter.</text><ellipse cx="1915.25" cy="364.9844" fill="#000000" filter="url(#f12n62kzuquswy)" rx="10" ry="10" style="stroke: none; stroke-width: 1.0;"/><polygon fill="#FEFECE" filter="url(#f12n62kzuquswy)" points="1852.75,394.9844,1977.75,394.9844,1989.75,406.9844,1977.75,418.9844,1852.75,418.9844,1840.75,406.9844,1852.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="1852.75" y="410.7925">Associated to a topic?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="1820.75" y="404.3901">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="1989.75" y="404.3901">no</text><rect fill="#FEFECE" filter="url(#f12n62kzuquswy)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="80" x="862.5" y="428.9844"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="60" x="872.5" y="450.123">lock topic</text><rect fill="#FFFFFF" filter="url(#f12n62kzuquswy)" height="348.8823" style="stroke: #000000; stroke-width: 2.0;" width="736" x="533" y="473.7549"/><path d="M678,474.7549 L678,483.0518 L668,493.0518 L533,493.0518 " fill="none" style="stroke: #000000; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="135" x="536" y="487.75">find latest message</text><rect fill="#FEFECE" filter="url(#f12n62kzuquswy)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="145" x="830" y="510.0518"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="44" x="840" y="531.1904">access</text><text fill="#000000" font-family="monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="77" x="888" y="531.1904">lastMessage</text><rect fill="#000000" filter="url(#f12n62kzuquswy)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="671" x="567" y="619.731"/><rect fill="#FEFECE" filter="url(#f12n62kzuquswy)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="181" x="659.5" y="645.731"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="161" x="669.5" y="666.8696">proceed to next message</text><rect fill="#EEEEEE" filter="url(#f12n62kzuquswy)" height="47.9375" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="338" x="581" y="714.6997"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="581" x2="634" y1="731.6841" y2="731.6841"/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="232" x="634" y="735.3384">URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="866" x2="919" y1="731.6841" y2="731.6841"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="318" x="591" y="749.8071">decrement counter of consumers left (@message)</text><rect fill="#EEEEEE" filter="url(#f12n62kzuquswy)" height="47.9375" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="277" x="947" y="680.2153"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="947" x2="969.5" y1="697.1997" y2="697.1997"/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="232" x="969.5" y="700.854">URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1201.5" x2="1224" y1="697.1997" y2="697.1997"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="257" x="957" y="715.3228">increment counter of received messages</text><rect fill="#000000" filter="url(#f12n62kzuquswy)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="671" x="567" y="782.6372"/><polygon fill="#FEFECE" filter="url(#f12n62kzuquswy)" points="785.5,564.0205,1019.5,564.0205,1031.5,576.0205,1019.5,588.0205,785.5,588.0205,773.5,576.0205,785.5,564.0205" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="906.5" y="598.231">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="234" x="785.5" y="579.8286">Timestamp of next message is younger?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="759.5" y="573.4263">no</text><polygon fill="#FEFECE" filter="url(#f12n62kzuquswy)" points="816.5,842.6372,988.5,842.6372,1000.5,854.6372,988.5,866.6372,816.5,866.6372,804.5,854.6372,816.5,842.6372" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="172" x="816.5" y="858.4453">Timestamp equals local copy?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="784.5" y="852.043">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="1000.5" y="852.043">no</text><rect fill="#FEFECE" filter="url(#f12n62kzuquswy)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="96" x="279" y="876.6372"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="76" x="289" y="897.7759">unlock topic</text><path d="M10,945.606 L10,970.7388 A0,0 0 0 0 10,970.7388 L296,970.7388 A0,0 0 0 0 296,970.7388 L296,963.606 L316,958.1724 L296,955.606 L296,955.606 L286,945.606 L10,945.606 A0,0 0 0 0 10,945.606 " fill="#FBFB77" filter="url(#f12n62kzuquswy)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M286,945.606 L286,955.606 L296,955.606 L286,945.606 " 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="962.6729">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="208" x="69" y="962.6729">URT_STATUS_FETCH_NOMESSAGE</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="277" y="962.6729">.</text><ellipse cx="327" cy="958.1724" fill="#FFFFFF" filter="url(#f12n62kzuquswy)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="327" cy="958.1724" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><rect fill="#000000" filter="url(#f12n62kzuquswy)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="2200" x="385" y="876.6372"/><rect fill="#FFFFFF" filter="url(#f12n62kzuquswy)" height="142.2656" style="stroke: #000000; stroke-width: 2.0;" width="622" x="397" y="1006.3257"/><path d="M510,1007.3257 L510,1015.6226 L500,1025.6226 L397,1025.6226 " 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="1020.3208">fetch message</text><rect fill="#000000" filter="url(#f12n62kzuquswy)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="602" x="407" y="1042.6226"/><rect fill="#FEFECE" filter="url(#f12n62kzuquswy)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="175" x="421" y="1068.6226"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="155" x="431" y="1089.7612">update message pointer</text><rect fill="#FEFECE" filter="url(#f12n62kzuquswy)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="180" x="624" y="1068.6226"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="160" x="634" y="1089.7612">copy message origin time</text><rect fill="#FEFECE" filter="url(#f12n62kzuquswy)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="163" x="832" y="1068.6226"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="143" x="842" y="1089.7612">copy message payload</text><rect fill="#000000" filter="url(#f12n62kzuquswy)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="602" x="407" y="1122.5913"/><path d="M1381.5,907.0552 L1381.5,932.188 A0,0 0 0 0 1381.5,932.188 L1701.5,932.188 A0,0 0 0 0 1701.5,932.188 L1701.5,925.0552 L1721.5,919.6216 L1701.5,917.0552 L1701.5,917.0552 L1691.5,907.0552 L1381.5,907.0552 A0,0 0 0 0 1381.5,907.0552 " fill="#FBFB77" filter="url(#f12n62kzuquswy)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1691.5,907.0552 L1691.5,917.0552 L1701.5,917.0552 L1691.5,907.0552 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="299" x="1387.5" y="924.1221">Can be optimized in case all flags are disabled.</text><rect fill="#FEFECE" filter="url(#f12n62kzuquswy)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="187" x="1721.5" y="902.6372"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="167" x="1731.5" y="923.7759">calculate message latency</text><rect fill="#000000" filter="url(#f12n62kzuquswy)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="1526" x="1047" y="971.606"/><rect fill="#EEEEEE" filter="url(#f12n62kzuquswy)" height="47.9375" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="252" x="1061" y="1087.9741"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1061" x2="1071" y1="1104.9585" y2="1104.9585"/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="232" x="1071" y="1108.6128">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="1104.9585" y2="1104.9585"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="73" x="1071" y="1123.0815">accumulate</text><text fill="#000000" font-family="monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="84" x="1148" y="1123.0815">sumLatencies</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="33" x="1236" y="1123.0815">value</text><rect fill="#EEEEEE" filter="url(#f12n62kzuquswy)" height="220.9219" style="stroke: #000000; stroke-width: 2.0;" width="897" x="1341" y="988.4077"/><path d="M1977,989.4077 L1977,997.7046 L1967,1007.7046 L1341,1007.7046 " 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="1344" y="1002.4028">URT_CFG_PUBSUB_QOS_JITTERCHECKS == true || URT_CFG_PUBSUB_PROFILING == true</text><polygon fill="#FEFECE" filter="url(#f12n62kzuquswy)" points="1363,1049.7046,1737,1049.7046,1749,1061.7046,1737,1073.7046,1363,1073.7046,1351,1061.7046,1363,1049.7046" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="1554" y="1083.915">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="121" x="1363" y="1065.5127">Latency is lower than</text><text fill="#000000" font-family="monospace" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="70" x="1488" y="1065.5127">minLatency</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="175" x="1562" y="1065.5127">but within allowed jitter range?</text><rect fill="#EEEEEE" filter="url(#f12n62kzuquswy)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="176" x="1462" y="1106.5093"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="45" x="1472" y="1127.6479">update</text><text fill="#000000" font-family="monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="70" x="1521" y="1127.6479">minLatency</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="33" x="1595" y="1127.6479">value</text><polygon fill="#FEFECE" filter="url(#f12n62kzuquswy)" points="1781,1049.7046,2166,1049.7046,2178,1061.7046,2166,1073.7046,1781,1073.7046,1769,1061.7046,1781,1049.7046" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="1977.5" y="1083.915">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="132" x="1781" y="1065.5127">Latency is greater than</text><text fill="#000000" font-family="monospace" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="70" x="1917" y="1065.5127">maxLatency</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="175" x="1991" y="1065.5127">but within allowed jitter range?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="2178" y="1059.1104">no</text><rect fill="#EEEEEE" filter="url(#f12n62kzuquswy)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="176" x="1885.5" y="1106.5093"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="45" x="1895.5" y="1127.6479">update</text><text fill="#000000" font-family="monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="70" x="1944.5" y="1127.6479">maxLatency</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="33" x="2018.5" y="1127.6479">value</text><rect fill="#FEFECE" filter="url(#f12n62kzuquswy)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="130" x="2332.5" y="1094.9585"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="20" x="2342.5" y="1116.0972">set</text><text fill="#000000" font-family="monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="49" x="2366.5" y="1116.0972">latency</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="33" x="2419.5" y="1116.0972">value</text><polygon fill="#FEFECE" filter="url(#f12n62kzuquswy)" points="2278,1046.5562,2517,1046.5562,2529,1058.5562,2517,1070.5562,2278,1070.5562,2266,1058.5562,2278,1046.5562" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="2401.5" y="1080.7666">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="47" x="2278" y="1062.3643">Optional</text><text fill="#000000" font-family="monospace" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="49" x="2329" y="1062.3643">latency</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="135" x="2382" y="1062.3643">output argument given?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="2529" y="1055.9619">no</text><polygon fill="#FEFECE" filter="url(#f12n62kzuquswy)" points="2397.5,1153.3296,2409.5,1165.3296,2397.5,1177.3296,2385.5,1165.3296,2397.5,1153.3296" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#000000" filter="url(#f12n62kzuquswy)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="1526" x="1047" y="1229.3296"/><rect fill="#000000" filter="url(#f12n62kzuquswy)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="2200" x="385" y="1255.3296"/><rect fill="#FEFECE" filter="url(#f12n62kzuquswy)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="96" x="1442" y="1281.3296"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="76" x="1452" y="1302.4683">unlock topic</text><path d="M1048,1333.7319 L1048,1358.8647 A0,0 0 0 0 1048,1358.8647 L1459,1358.8647 A0,0 0 0 0 1459,1358.8647 L1459,1351.7319 L1479,1346.2983 L1459,1343.7319 L1459,1343.7319 L1449,1333.7319 L1048,1333.7319 A0,0 0 0 0 1048,1333.7319 " fill="#FBFB77" filter="url(#f12n62kzuquswy)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1449,1333.7319 L1449,1343.7319 L1459,1343.7319 L1449,1333.7319 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="1054" y="1350.7988">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="1107" y="1350.7988">URT_STATUS_OK</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="13" x="1215" y="1350.7988">or</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="208" x="1232" y="1350.7988">URT_STATUS_JITTERVIOLATION</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="1440" y="1350.7988">.</text><ellipse cx="1490" cy="1346.2983" fill="#FFFFFF" filter="url(#f12n62kzuquswy)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="1490" cy="1346.2983" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><path d="M2595,428.9844 L2595,454.1172 A0,0 0 0 0 2595,454.1172 L2865,454.1172 A0,0 0 0 0 2865,454.1172 L2865,446.9844 L2885,441.5508 L2865,438.9844 L2865,438.9844 L2855,428.9844 L2595,428.9844 A0,0 0 0 0 2595,428.9844 " fill="#FBFB77" filter="url(#f12n62kzuquswy)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M2855,428.9844 L2855,438.9844 L2865,438.9844 L2855,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="2601" y="446.0513">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="192" x="2654" y="446.0513">URT_STATUS_FETCH_NOTOPIC</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="2846" y="446.0513">.</text><ellipse cx="2896" cy="441.5508" fill="#FFFFFF" filter="url(#f12n62kzuquswy)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="2896" 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="1915.25" x2="1915.25" y1="334.9844" y2="354.9844"/><polygon fill="#A80036" points="1911.25,344.9844,1915.25,354.9844,1919.25,344.9844,1915.25,348.9844" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="750" x2="750" y1="679.6997" y2="714.6997"/><polygon fill="#A80036" points="746,704.6997,750,714.6997,754,704.6997,750,708.6997" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="750" x2="750" y1="625.731" y2="645.731"/><polygon fill="#A80036" points="746,635.731,750,645.731,754,635.731,750,639.731" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1085.5" x2="1085.5" y1="625.731" y2="680.2153"/><polygon fill="#A80036" points="1081.5,670.2153,1085.5,680.2153,1089.5,670.2153,1085.5,674.2153" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="750" x2="750" y1="762.6372" y2="782.6372"/><polygon fill="#A80036" points="746,772.6372,750,782.6372,754,772.6372,750,776.6372" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1085.5" x2="1085.5" y1="728.1528" y2="782.6372"/><polygon fill="#A80036" points="1081.5,772.6372,1085.5,782.6372,1089.5,772.6372,1085.5,776.6372" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="902.5" x2="902.5" y1="588.0205" y2="619.731"/><polygon fill="#A80036" points="898.5,609.731,902.5,619.731,906.5,609.731,902.5,613.731" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="902.5" x2="902.5" y1="788.6372" y2="798.6372"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="902.5" x2="1250" y1="798.6372" y2="798.6372"/><polygon fill="#A80036" points="1246,695.7817,1250,685.7817,1254,695.7817,1250,691.7817" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1250" x2="1250" y1="576.0205" y2="798.6372"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1250" x2="1031.5" y1="576.0205" y2="576.0205"/><polygon fill="#A80036" points="1041.5,572.0205,1031.5,576.0205,1041.5,580.0205,1037.5,576.0205" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="773.5" x2="555" y1="576.0205" y2="576.0205"/><polygon fill="#A80036" points="551,681.7817,555,691.7817,559,681.7817,555,685.7817" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="555" x2="555" y1="576.0205" y2="810.6372"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="555" x2="902.5" y1="810.6372" y2="810.6372"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="902.5" x2="902.5" y1="810.6372" y2="842.6372"/><polygon fill="#A80036" points="898.5,832.6372,902.5,842.6372,906.5,832.6372,902.5,836.6372" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="902.5" x2="902.5" y1="544.0205" y2="564.0205"/><polygon fill="#A80036" points="898.5,554.0205,902.5,564.0205,906.5,554.0205,902.5,558.0205" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="902.5" x2="902.5" y1="462.9531" y2="510.0518"/><polygon fill="#A80036" points="898.5,500.0518,902.5,510.0518,906.5,500.0518,902.5,504.0518" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="327" x2="327" y1="910.606" y2="947.1724"/><polygon fill="#A80036" points="323,937.1724,327,947.1724,331,937.1724,327,941.1724" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="508.5" x2="508.5" y1="1048.6226" y2="1068.6226"/><polygon fill="#A80036" points="504.5,1058.6226,508.5,1068.6226,512.5,1058.6226,508.5,1062.6226" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="714" x2="714" y1="1048.6226" y2="1068.6226"/><polygon fill="#A80036" points="710,1058.6226,714,1068.6226,718,1058.6226,714,1062.6226" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="913.5" x2="913.5" y1="1048.6226" y2="1068.6226"/><polygon fill="#A80036" points="909.5,1058.6226,913.5,1068.6226,917.5,1058.6226,913.5,1062.6226" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="508.5" x2="508.5" y1="1102.5913" y2="1122.5913"/><polygon fill="#A80036" points="504.5,1112.5913,508.5,1122.5913,512.5,1112.5913,508.5,1116.5913" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="714" x2="714" y1="1102.5913" y2="1122.5913"/><polygon fill="#A80036" points="710,1112.5913,714,1122.5913,718,1112.5913,714,1116.5913" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="913.5" x2="913.5" y1="1102.5913" y2="1122.5913"/><polygon fill="#A80036" points="909.5,1112.5913,913.5,1122.5913,917.5,1112.5913,913.5,1116.5913" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1550" x2="1550" y1="1073.7046" y2="1106.5093"/><polygon fill="#A80036" points="1546,1096.5093,1550,1106.5093,1554,1096.5093,1550,1100.5093" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1550" x2="1550" y1="1140.478" y2="1197.3296"/><polygon fill="#A80036" points="1546,1187.3296,1550,1197.3296,1554,1187.3296,1550,1191.3296" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1973.5" x2="1973.5" y1="1073.7046" y2="1106.5093"/><polygon fill="#A80036" points="1969.5,1096.5093,1973.5,1106.5093,1977.5,1096.5093,1973.5,1100.5093" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1973.5" x2="1973.5" y1="1140.478" y2="1197.3296"/><polygon fill="#A80036" points="1969.5,1187.3296,1973.5,1197.3296,1977.5,1187.3296,1973.5,1191.3296" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1749" x2="1769" y1="1061.7046" y2="1061.7046"/><polygon fill="#A80036" points="1759,1057.7046,1769,1061.7046,1759,1065.7046,1763,1061.7046" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1789.5" x2="1789.5" y1="977.606" y2="1024.7046"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1789.5" x2="1550" y1="1024.7046" y2="1024.7046"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1550" x2="1550" y1="1024.7046" y2="1049.7046"/><polygon fill="#A80036" points="1546,1039.7046,1550,1049.7046,1554,1039.7046,1550,1043.7046" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2178" x2="2213" y1="1061.7046" y2="1061.7046"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2213" x2="2213" y1="1061.7046" y2="1197.3296"/><polygon fill="#A80036" points="2209,1187.3296,2213,1197.3296,2217,1187.3296,2213,1191.3296" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1550" x2="2213" y1="1197.3296" y2="1197.3296"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2397.5" x2="2397.5" y1="1070.5562" y2="1094.9585"/><polygon fill="#A80036" points="2393.5,1084.9585,2397.5,1094.9585,2401.5,1084.9585,2397.5,1088.9585" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2529" x2="2541" y1="1058.5562" y2="1058.5562"/><polygon fill="#A80036" points="2537,1101.9429,2541,1111.9429,2545,1101.9429,2541,1105.9429" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2541" x2="2541" y1="1058.5562" y2="1165.3296"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2541" x2="2409.5" y1="1165.3296" y2="1165.3296"/><polygon fill="#A80036" points="2419.5,1161.3296,2409.5,1165.3296,2419.5,1169.3296,2415.5,1165.3296" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2397.5" x2="2397.5" y1="1128.9272" y2="1153.3296"/><polygon fill="#A80036" points="2393.5,1143.3296,2397.5,1153.3296,2401.5,1143.3296,2397.5,1147.3296" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1187" x2="1187" y1="977.606" y2="1087.9741"/><polygon fill="#A80036" points="1183,1077.9741,1187,1087.9741,1191,1077.9741,1187,1081.9741" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2397.5" x2="2397.5" y1="977.606" y2="1046.5562"/><polygon fill="#A80036" points="2393.5,1036.5562,2397.5,1046.5562,2401.5,1036.5562,2397.5,1040.5562" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2559" x2="2559" y1="977.606" y2="1229.3296"/><polygon fill="#A80036" points="2555,1219.3296,2559,1229.3296,2563,1219.3296,2559,1223.3296" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1187" x2="1187" y1="1135.9116" y2="1229.3296"/><polygon fill="#A80036" points="1183,1219.3296,1187,1229.3296,1191,1219.3296,1187,1223.3296" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1789.5" x2="1789.5" y1="1197.3296" y2="1229.3296"/><polygon fill="#A80036" points="1785.5,1219.3296,1789.5,1229.3296,1793.5,1219.3296,1789.5,1223.3296" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2397.5" x2="2397.5" y1="1177.3296" y2="1229.3296"/><polygon fill="#A80036" points="2393.5,1219.3296,2397.5,1229.3296,2401.5,1219.3296,2397.5,1223.3296" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1815" x2="1815" y1="936.606" y2="971.606"/><polygon fill="#A80036" points="1811,961.606,1815,971.606,1819,961.606,1815,965.606" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="708" x2="708" y1="882.6372" y2="1042.6226"/><polygon fill="#A80036" points="704,1032.6226,708,1042.6226,712,1032.6226,708,1036.6226" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1815" x2="1815" y1="882.6372" y2="902.6372"/><polygon fill="#A80036" points="1811,892.6372,1815,902.6372,1819,892.6372,1815,896.6372" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="708" x2="708" y1="1128.5913" y2="1255.3296"/><polygon fill="#A80036" points="704,1245.3296,708,1255.3296,712,1245.3296,708,1249.3296" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1815" x2="1815" y1="1235.3296" y2="1255.3296"/><polygon fill="#A80036" points="1811,1245.3296,1815,1255.3296,1819,1245.3296,1815,1249.3296" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1490" x2="1490" y1="1261.3296" y2="1281.3296"/><polygon fill="#A80036" points="1486,1271.3296,1490,1281.3296,1494,1271.3296,1490,1275.3296" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1490" x2="1490" y1="1315.2983" y2="1335.2983"/><polygon fill="#A80036" points="1486,1325.2983,1490,1335.2983,1494,1325.2983,1490,1329.2983" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="804.5" x2="327" y1="854.6372" y2="854.6372"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="327" x2="327" y1="854.6372" y2="876.6372"/><polygon fill="#A80036" points="323,866.6372,327,876.6372,331,866.6372,327,870.6372" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1000.5" x2="1490" y1="854.6372" y2="854.6372"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1490" x2="1490" y1="854.6372" y2="876.6372"/><polygon fill="#A80036" points="1486,866.6372,1490,876.6372,1494,866.6372,1490,870.6372" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1840.75" x2="902.5" y1="406.9844" y2="406.9844"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="902.5" x2="902.5" y1="406.9844" y2="428.9844"/><polygon fill="#A80036" points="898.5,418.9844,902.5,428.9844,906.5,418.9844,902.5,422.9844" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1989.75" x2="2896" y1="406.9844" y2="406.9844"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2896" x2="2896" y1="406.9844" y2="430.5508"/><polygon fill="#A80036" points="2892,420.5508,2896,430.5508,2900,420.5508,2896,424.5508" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1915.25" x2="1915.25" y1="374.9844" y2="394.9844"/><polygon fill="#A80036" points="1911.25,384.9844,1915.25,394.9844,1919.25,384.9844,1915.25,388.9844" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[691e97dc7e3dc5ae5c0bbcc51889e7a7] |
---|---|
2 |
@startuml |
3 |
|
4 |
title **µRtWare**\nurtFrtSubscriberFetchLatestMessage()\n |
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
note |
13 |
- - **subscriber** : urt_frtsubscriber_t* - - |
14 |
The FRT subscriber that shall fetch the latest 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 |
partition "find latest message" { |
37 |
:access ""lastMessage""; |
38 |
while (Timestamp of next message is younger?) is (yes) |
39 |
fork |
40 |
:proceed to next message; |
41 |
#EEEEEE:..//URT_CFG_PUBSUB_PROFILING == true//..\ndecrement counter of consumers left (@message); |
42 |
fork again |
43 |
#EEEEEE:..//URT_CFG_PUBSUB_PROFILING == true//..\nincrement counter of received messages; |
44 |
endfork |
45 |
endwhile (no) |
46 |
} |
47 |
if (Timestamp equals local copy?) then (yes) |
48 |
:unlock topic; |
49 |
stop |
50 |
note |
51 |
Returns ""URT_STATUS_FETCH_NOMESSAGE"". |
52 |
endnote |
53 |
else (no) |
54 |
fork |
55 |
partition "fetch message" { |
56 |
fork |
57 |
:update message pointer; |
58 |
fork again |
59 |
:copy message origin time; |
60 |
fork again |
61 |
:copy message payload; |
62 |
endfork |
63 |
} |
64 |
fork again |
65 |
:calculate message latency; |
66 |
note |
67 |
Can be optimized in case all flags are disabled. |
68 |
endnote |
69 |
fork |
70 |
#EEEEEE:..//URT_CFG_PUBSUB_PROFILING == true//..\naccumulate ""sumLatencies"" value; |
71 |
fork again |
72 |
partition "//URT_CFG_PUBSUB_QOS_JITTERCHECKS == true || URT_CFG_PUBSUB_PROFILING == true//" #EEEEEE { |
73 |
if (Latency is lower than ""minLatency"" but within allowed jitter range?) then (yes) |
74 |
#EEEEEE:update ""minLatency"" value; |
75 |
elseif (Latency is greater than ""maxLatency"" but within allowed jitter range?) then (yes) |
76 |
#EEEEEE:update ""maxLatency"" value; |
77 |
else (no) |
78 |
endif |
79 |
} |
80 |
fork again |
81 |
if (Optional ""latency"" output argument given?) then (yes) |
82 |
:set ""latency"" value; |
83 |
else (no) |
84 |
endif |
85 |
fork again |
86 |
endfork |
87 |
endfork |
88 |
:unlock topic; |
89 |
stop |
90 |
note |
91 |
Returns ""URT_STATUS_OK"" or ""URT_STATUS_JITTERVIOLATION"". |
92 |
endnote |
93 |
endif |
94 |
else (no) |
95 |
stop |
96 |
note |
97 |
Returns ""URT_STATUS_FETCH_NOTOPIC"". |
98 |
endnote |
99 |
endif |
100 |
|
101 |
|
102 |
@enduml |
103 |
|
104 |
PlantUML version 1.2020.00(Sat Jan 11 13:30:53 CET 2020) |
105 |
(GPL source distribution) |
106 |
Java Runtime: OpenJDK Runtime Environment |
107 |
JVM: OpenJDK 64-Bit Server VM |
108 |
Java Version: 11.0.7+10-post-Ubuntu-2ubuntu218.04 |
109 |
Operating System: Linux |
110 |
Default Encoding: UTF-8 |
111 |
Language: en |
112 |
Country: US |
113 |
--></g></svg> |