Statistics
| Branch: | Revision:

urtware / doc / activitydiagrams / subscriber / hrtsubscriber / urtHrtSubscriberFetchLatestMessage.svg @ e7056e1b

History | View | Annotate | Download (57.469 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="1900px" preserveAspectRatio="none" style="width:1792px;height:1900px;" version="1.1" viewBox="0 0 1792 1900" width="1792px" zoomAndPan="magnify"><defs><filter height="300%" id="f15mjsst8r4upa" 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="850.5" y="26.708">µRtWare</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="338" x="726" y="47.6611">urtHrtSubscriberFetchLatestMessage()</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="0" x="898" y="68.6143"/><path d="M899.25,72.8594 L899.25,334.9844 L1588.25,334.9844 L1588.25,82.8594 L1578.25,72.8594 L899.25,72.8594 " fill="#FBFB77" filter="url(#f15mjsst8r4upa)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1578.25,72.8594 L1578.25,82.8594 L1588.25,82.8594 L1578.25,72.8594 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="899.25" x2="1130.75" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1134.75" y="89.4263"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="78" x="1134.75" y="89.4263">subscriber</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="136" x="1216.75" y="89.4263">: urt_hrtsubscriber_t*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1356.75" x2="1588.25" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="313" x="905.25" y="105.0591">The HRT subscriber that shall fetch the message.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="76" x="905.25" y="120.1919">Must not be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="985.25" y="120.1919">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="1017.25" y="120.1919">.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="899.25" x2="1187.75" y1="130.8242" y2="130.8242"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1191.75" y="134.8247"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="59" x="1191.75" y="134.8247">payload</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="41" x="1254.75" y="134.8247">: void*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1299.75" x2="1588.25" y1="130.8242" y2="130.8242"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="238" x="905.25" 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="905.25" y="165.5903">May be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="955.25" y="165.5903">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="195" x="991.25" y="165.5903">for messages without payload.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="899.25" x2="1194.75" y1="176.2227" y2="176.2227"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1198.75" y="180.2231"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="41" x="1198.75" y="180.2231">bytes</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="45" x="1243.75" y="180.2231">: size_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1292.75" x2="1588.25" y1="176.2227" y2="176.2227"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="137" x="905.25" y="195.856">Payload size in bytes.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="899.25" x2="1168.25" y1="206.4883" y2="206.4883"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1172.25" y="210.4888"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="53" x="1172.25" y="210.4888">latency</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="1229.25" y="210.4888">: urt_delay_t*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1319.25" x2="1588.25" y1="206.4883" y2="206.4883"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="267" x="905.25" 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="905.25" y="241.2544">May be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="955.25" y="241.2544">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="987.25" y="241.2544">.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="899.25" x2="1588.25" y1="249.3203" y2="249.3203"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="899.25" x2="1588.25" y1="251.3203" y2="251.3203"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="899.25" x2="1172.75" y1="261.8867" y2="261.8867"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1176.75" y="265.8872"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="45" x="1176.75" y="265.8872">return</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="85" x="1225.75" y="265.8872">: urt_status_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1314.75" x2="1588.25" y1="261.8867" y2="261.8867"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="905.25" y="281.52">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="958.25" y="281.52">URT_STATUS_OK</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="75" x="1066.25" y="281.52">on success.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="905.25" y="296.6528">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="192" x="958.25" y="296.6528">URT_STATUS_FETCH_NOTOPIC</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="282" x="1154.25" 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="905.25" y="311.7856">Retruns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="208" x="958.25" y="311.7856">URT_STATUS_FETCH_NOMESSAGE</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="228" x="1170.25" 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="905.25" y="326.9185">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="208" x="958.25" y="326.9185">URT_STATUS_JITTERVIOLATION</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="403" x="1170.25" y="326.9185">if the message's latency violated the maximum expected jitter.</text><ellipse cx="1243.75" cy="364.9844" fill="#000000" filter="url(#f15mjsst8r4upa)" rx="10" ry="10" style="stroke: none; stroke-width: 1.0;"/><polygon fill="#FEFECE" filter="url(#f15mjsst8r4upa)" points="1181.25,394.9844,1306.25,394.9844,1318.25,406.9844,1306.25,418.9844,1181.25,418.9844,1169.25,406.9844,1181.25,394.9844" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="125" x="1181.25" y="410.7925">Associated to a topic?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="1149.25" y="404.3901">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="1318.25" y="404.3901">no</text><rect fill="#FEFECE" filter="url(#f15mjsst8r4upa)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="80" x="683.5" y="428.9844"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="60" x="693.5" y="450.123">lock topic</text><rect fill="#FFFFFF" filter="url(#f15mjsst8r4upa)" height="540.7378" style="stroke: #000000; stroke-width: 2.0;" width="1432" x="11" y="472.9531"/><path d="M156,473.9531 L156,482.25 L146,492.25 L11,492.25 " fill="none" style="stroke: #000000; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="135" x="14" y="486.9482">find latest message</text><rect fill="#FEFECE" filter="url(#f15mjsst8r4upa)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="145" x="651" y="509.25"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="44" x="661" y="530.3887">access</text><text fill="#000000" font-family="monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="77" x="709" y="530.3887">lastMessage</text><rect fill="#000000" filter="url(#f15mjsst8r4upa)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="1373" x="39" y="618.9292"/><rect fill="#FEFECE" filter="url(#f15mjsst8r4upa)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="181" x="480.5" y="644.9292"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="161" x="490.5" y="666.0679">proceed to next message</text><rect fill="#000000" filter="url(#f15mjsst8r4upa)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="1042" x="51" y="707.3823"/><rect fill="#FEFECE" filter="url(#f15mjsst8r4upa)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="329" x="63" y="740.3667"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="309" x="73" y="761.5054">decrement message's counter of HRT consumers</text><rect fill="#EEEEEE" filter="url(#f15mjsst8r4upa)" height="47.9375" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="301" x="420" y="733.3823"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="420" x2="454.5" y1="750.3667" y2="750.3667"/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="232" x="454.5" y="754.021">URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="686.5" x2="721" y1="750.3667" y2="750.3667"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="281" x="430" y="768.4897">decrement message's counter of consumers</text><rect fill="#EEEEEE" filter="url(#f15mjsst8r4upa)" height="47.9375" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="330" x="749" y="733.3823"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="749" x2="759" y1="750.3667" y2="750.3667"/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="310" x="759" y="754.021">URT_CFG_PUBSUB_QOS_DEADLINECHECKS == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1069" x2="1079" y1="750.3667" y2="750.3667"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="156" x="759" y="768.4897">reset QoS deadline timer</text><rect fill="#000000" filter="url(#f15mjsst8r4upa)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="1042" x="51" y="801.3198"/><rect fill="#EEEEEE" filter="url(#f15mjsst8r4upa)" height="47.9375" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="277" x="1121" y="698.8979"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1121" x2="1144.5" y1="715.8823" y2="715.8823"/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="230" x="1144.5" y="719.5366">URT_CFG:PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1374.5" x2="1398" y1="715.8823" y2="715.8823"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="257" x="1131" y="734.0054">increment counter of received messages</text><rect fill="#000000" filter="url(#f15mjsst8r4upa)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="1373" x="39" y="827.3198"/><rect fill="#FEFECE" filter="url(#f15mjsst8r4upa)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="217" x="615" y="901.7222"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="197" x="625" y="922.8608">signal topic's condition variable</text><polygon fill="#FEFECE" filter="url(#f15mjsst8r4upa)" points="614.5,853.3198,832.5,853.3198,844.5,865.3198,832.5,877.3198,614.5,877.3198,602.5,865.3198,614.5,853.3198" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="727.5" y="887.5303">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="218" x="614.5" y="869.1279">HRT counter of a message became 0?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="844.5" y="862.7256">no</text><polygon fill="#FEFECE" filter="url(#f15mjsst8r4upa)" points="723.5,955.6909,735.5,967.6909,723.5,979.6909,711.5,967.6909,723.5,955.6909" style="stroke: #A80036; stroke-width: 1.5;"/><polygon fill="#FEFECE" filter="url(#f15mjsst8r4upa)" points="606.5,563.2188,840.5,563.2188,852.5,575.2188,840.5,587.2188,606.5,587.2188,594.5,575.2188,606.5,563.2188" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="727.5" y="597.4292">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="234" x="606.5" y="579.0269">Timestamp of next message is younger?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="580.5" y="572.6245">no</text><polygon fill="#FEFECE" filter="url(#f15mjsst8r4upa)" points="637.5,1033.6909,809.5,1033.6909,821.5,1045.6909,809.5,1057.6909,637.5,1057.6909,625.5,1045.6909,637.5,1033.6909" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="172" x="637.5" y="1049.499">Timestamp equals local copy?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="605.5" y="1043.0967">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="821.5" y="1043.0967">no</text><rect fill="#FEFECE" filter="url(#f15mjsst8r4upa)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="96" x="496.25" y="1067.6909"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="76" x="506.25" y="1088.8296">unlock topic</text><path d="M227.25,1121.6597 L227.25,1146.7925 A0,0 0 0 0 227.25,1146.7925 L513.25,1146.7925 A0,0 0 0 0 513.25,1146.7925 L513.25,1139.6597 L533.25,1134.2261 L513.25,1131.6597 L513.25,1131.6597 L503.25,1121.6597 L227.25,1121.6597 A0,0 0 0 0 227.25,1121.6597 " fill="#FBFB77" filter="url(#f15mjsst8r4upa)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M503.25,1121.6597 L503.25,1131.6597 L513.25,1131.6597 L503.25,1121.6597 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="233.25" y="1138.7266">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="208" x="286.25" y="1138.7266">URT_STATUS_FETCH_NOMESSAGE</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="494.25" y="1138.7266">.</text><ellipse cx="544.25" cy="1134.2261" fill="#FFFFFF" filter="url(#f15mjsst8r4upa)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="544.25" cy="1134.2261" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><rect fill="#FEFECE" filter="url(#f15mjsst8r4upa)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="187" x="809.25" y="1067.6909"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="167" x="819.25" y="1088.8296">calculate message latency</text><rect fill="#000000" filter="url(#f15mjsst8r4upa)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="581" x="612.25" y="1121.6597"/><rect fill="#EEEEEE" filter="url(#f15mjsst8r4upa)" height="47.9375" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="250" x="626.25" y="1189.0776"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="626.25" x2="636.25" y1="1206.062" y2="1206.062"/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="230" x="636.25" y="1209.7163">URT:CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="866.25" x2="876.25" y1="1206.062" y2="1206.062"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="73" x="636.25" y="1224.1851">accumulate</text><text fill="#000000" font-family="monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="84" x="713.25" y="1224.1851">sumLatencies</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="33" x="801.25" y="1224.1851">value</text><rect fill="#FEFECE" filter="url(#f15mjsst8r4upa)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="130" x="970.75" y="1196.062"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="20" x="980.75" y="1217.2007">set</text><text fill="#000000" font-family="monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="49" x="1004.75" y="1217.2007">latency</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="33" x="1057.75" y="1217.2007">value</text><polygon fill="#FEFECE" filter="url(#f15mjsst8r4upa)" points="916.25,1147.6597,1155.25,1147.6597,1167.25,1159.6597,1155.25,1171.6597,916.25,1171.6597,904.25,1159.6597,916.25,1147.6597" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="1039.75" y="1181.8701">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="47" x="916.25" y="1163.4678">Optional</text><text fill="#000000" font-family="monospace" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="49" x="967.25" y="1163.4678">latency</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="135" x="1020.25" y="1163.4678">output argument given?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="1167.25" y="1157.0654">no</text><polygon fill="#FEFECE" filter="url(#f15mjsst8r4upa)" points="1035.75,1254.4331,1047.75,1266.4331,1035.75,1278.4331,1023.75,1266.4331,1035.75,1254.4331" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#000000" filter="url(#f15mjsst8r4upa)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="581" x="612.25" y="1298.4331"/><rect fill="#EEEEEE" filter="url(#f15mjsst8r4upa)" height="277.0977" style="stroke: #000000; stroke-width: 2.0;" width="1138.5" x="106.25" y="1314.4331"/><path d="M742.25,1315.4331 L742.25,1323.73 L732.25,1333.73 L106.25,1333.73 " 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="109.25" y="1328.4282">URT_CFG_PUBSUB_QOS_JITTERCHECKS == true || URT_CFG_PUBSUB_PROFILING == true</text><polygon fill="#FEFECE" filter="url(#f15mjsst8r4upa)" points="616.5,1350.73,830.5,1350.73,842.5,1362.73,830.5,1374.73,616.5,1374.73,604.5,1362.73,616.5,1350.73" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="214" x="616.5" y="1366.5381">Latency is within allowed jitter range?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="584.5" y="1360.1357">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="842.5" y="1360.1357">no</text><polygon fill="#FEFECE" filter="url(#f15mjsst8r4upa)" points="138.25,1409.73,339.25,1409.73,351.25,1421.73,339.25,1433.73,138.25,1433.73,126.25,1421.73,138.25,1409.73" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="242.75" y="1443.9404">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="121" x="138.25" y="1425.5381">Latency is lower than</text><text fill="#000000" font-family="monospace" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="70" x="263.25" y="1425.5381">minlatency</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="6" x="333.25" y="1425.5381">?</text><rect fill="#EEEEEE" filter="url(#f15mjsst8r4upa)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="176" x="150.75" y="1466.5347"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="45" x="160.75" y="1487.6733">update</text><text fill="#000000" font-family="monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="70" x="209.75" y="1487.6733">minLatency</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="33" x="283.75" y="1487.6733">value</text><polygon fill="#FEFECE" filter="url(#f15mjsst8r4upa)" points="383.25,1409.73,629.25,1409.73,641.25,1421.73,629.25,1433.73,383.25,1433.73,371.25,1421.73,383.25,1409.73" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="510.25" y="1443.9404">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="132" x="383.25" y="1425.5381">Latency is greater than</text><text fill="#000000" font-family="monospace" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="70" x="519.25" y="1425.5381">maxLatency</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="36" x="593.25" y="1425.5381">value?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="641.25" y="1419.1357">no</text><rect fill="#EEEEEE" filter="url(#f15mjsst8r4upa)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="176" x="418.25" y="1466.5347"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="45" x="428.25" y="1487.6733">update</text><text fill="#000000" font-family="monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="70" x="477.25" y="1487.6733">maxLatency</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="33" x="551.25" y="1487.6733">value</text><rect fill="#EEEEEE" filter="url(#f15mjsst8r4upa)" height="194.8008" style="stroke: #000000; stroke-width: 2.0;" width="513.5" x="711.25" y="1384.73"/><path d="M1058.25,1385.73 L1058.25,1394.0269 L1048.25,1404.0269 L711.25,1404.0269 " fill="none" style="stroke: #000000; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="337" x="714.25" y="1398.7251">URT_CFG_PUBSUB_QOS_JITTERCHECKS == true</text><rect fill="#EEEEEE" filter="url(#f15mjsst8r4upa)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="96" x="990.25" y="1421.0269"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="76" x="1000.25" y="1442.1655">unlock topic</text><rect fill="#EEEEEE" filter="url(#f15mjsst8r4upa)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="353" x="861.75" y="1489.9956"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="21" x="871.75" y="1511.1343">call</text><text fill="#000000" font-family="monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="308" x="896.75" y="1511.1343">urtCoreStopNodes(URT_STATUS_JITTERVIOLATION)</text><path d="M721.25,1542.3979 L721.25,1567.5308 A0,0 0 0 0 721.25,1567.5308 L1007.25,1567.5308 A0,0 0 0 0 1007.25,1567.5308 L1007.25,1560.3979 L1027.25,1554.9644 L1007.25,1552.3979 L1007.25,1552.3979 L997.25,1542.3979 L721.25,1542.3979 A0,0 0 0 0 721.25,1542.3979 " fill="#FBFB77" filter="url(#f15mjsst8r4upa)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M997.25,1542.3979 L997.25,1552.3979 L1007.25,1552.3979 L997.25,1542.3979 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="727.25" y="1559.4648">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="208" x="780.25" y="1559.4648">URT_STATUS_JITTERVIOLATION</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="988.25" y="1559.4648">.</text><ellipse cx="1038.25" cy="1554.9644" fill="#FFFFFF" filter="url(#f15mjsst8r4upa)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="1038.25" cy="1554.9644" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><rect fill="#000000" filter="url(#f15mjsst8r4upa)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="1008" x="219.5" y="1611.5308"/><rect fill="#FFFFFF" filter="url(#f15mjsst8r4upa)" height="134.2656" style="stroke: #000000; stroke-width: 2.0;" width="622" x="233.5" y="1627.5308"/><path d="M346.5,1628.5308 L346.5,1636.8276 L336.5,1646.8276 L233.5,1646.8276 " fill="none" style="stroke: #000000; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="103" x="236.5" y="1641.5259">fetch message</text><rect fill="#000000" filter="url(#f15mjsst8r4upa)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="602" x="243.5" y="1663.8276"/><rect fill="#FEFECE" filter="url(#f15mjsst8r4upa)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="175" x="257.5" y="1689.8276"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="155" x="267.5" y="1710.9663">update message pointer</text><rect fill="#FEFECE" filter="url(#f15mjsst8r4upa)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="180" x="460.5" y="1689.8276"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="160" x="470.5" y="1710.9663">copy message origin time</text><rect fill="#FEFECE" filter="url(#f15mjsst8r4upa)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="163" x="668.5" y="1689.8276"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="143" x="678.5" y="1710.9663">copy message payload</text><rect fill="#000000" filter="url(#f15mjsst8r4upa)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="602" x="243.5" y="1743.7964"/><rect fill="#EEEEEE" filter="url(#f15mjsst8r4upa)" height="47.9375" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="330" x="883.5" y="1674.6948"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="883.5" x2="893.5" y1="1691.6792" y2="1691.6792"/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="310" x="893.5" y="1695.3335">URT_CFG_PUBSUB_QOS_DEADLINECHECKS == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1203.5" x2="1213.5" y1="1691.6792" y2="1691.6792"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="156" x="893.5" y="1709.8022">reset QoS deadline timer</text><rect fill="#000000" filter="url(#f15mjsst8r4upa)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="1008" x="219.5" y="1781.7964"/><rect fill="#FEFECE" filter="url(#f15mjsst8r4upa)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="96" x="675.5" y="1807.7964"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="76" x="685.5" y="1828.9351">unlock topic</text><path d="M510.5,1860.1987 L510.5,1885.3315 A0,0 0 0 0 510.5,1885.3315 L692.5,1885.3315 A0,0 0 0 0 692.5,1885.3315 L692.5,1878.1987 L712.5,1872.7651 L692.5,1870.1987 L692.5,1870.1987 L682.5,1860.1987 L510.5,1860.1987 A0,0 0 0 0 510.5,1860.1987 " fill="#FBFB77" filter="url(#f15mjsst8r4upa)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M682.5,1860.1987 L682.5,1870.1987 L692.5,1870.1987 L682.5,1860.1987 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="516.5" y="1877.2656">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="569.5" y="1877.2656">URT_STATUS_OK</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="673.5" y="1877.2656">.</text><ellipse cx="723.5" cy="1872.7651" fill="#FFFFFF" filter="url(#f15mjsst8r4upa)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="723.5" cy="1872.7651" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><path d="M1463,428.9844 L1463,454.1172 A0,0 0 0 0 1463,454.1172 L1733,454.1172 A0,0 0 0 0 1733,454.1172 L1733,446.9844 L1753,441.5508 L1733,438.9844 L1733,438.9844 L1723,428.9844 L1463,428.9844 A0,0 0 0 0 1463,428.9844 " fill="#FBFB77" filter="url(#f15mjsst8r4upa)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1723,428.9844 L1723,438.9844 L1733,438.9844 L1723,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="1469" y="446.0513">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="192" x="1522" y="446.0513">URT_STATUS_FETCH_NOTOPIC</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="1714" y="446.0513">.</text><ellipse cx="1764" cy="441.5508" fill="#FFFFFF" filter="url(#f15mjsst8r4upa)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="1764" 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="1243.75" x2="1243.75" y1="334.9844" y2="354.9844"/><polygon fill="#A80036" points="1239.75,344.9844,1243.75,354.9844,1247.75,344.9844,1243.75,348.9844" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="227.5" x2="227.5" y1="713.3823" y2="740.3667"/><polygon fill="#A80036" points="223.5,730.3667,227.5,740.3667,231.5,730.3667,227.5,734.3667" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="570.5" x2="570.5" y1="713.3823" y2="733.3823"/><polygon fill="#A80036" points="566.5,723.3823,570.5,733.3823,574.5,723.3823,570.5,727.3823" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="914" x2="914" y1="713.3823" y2="733.3823"/><polygon fill="#A80036" points="910,723.3823,914,733.3823,918,723.3823,914,727.3823" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="227.5" x2="227.5" y1="774.3354" y2="801.3198"/><polygon fill="#A80036" points="223.5,791.3198,227.5,801.3198,231.5,791.3198,227.5,795.3198" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="570.5" x2="570.5" y1="781.3198" y2="801.3198"/><polygon fill="#A80036" points="566.5,791.3198,570.5,801.3198,574.5,791.3198,570.5,795.3198" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="914" x2="914" y1="781.3198" y2="801.3198"/><polygon fill="#A80036" points="910,791.3198,914,801.3198,918,791.3198,914,795.3198" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="571" x2="571" y1="678.8979" y2="707.3823"/><polygon fill="#A80036" points="567,697.3823,571,707.3823,575,697.3823,571,701.3823" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="571" x2="571" y1="624.9292" y2="644.9292"/><polygon fill="#A80036" points="567,634.9292,571,644.9292,575,634.9292,571,638.9292" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1259.5" x2="1259.5" y1="624.9292" y2="698.8979"/><polygon fill="#A80036" points="1255.5,688.8979,1259.5,698.8979,1263.5,688.8979,1259.5,692.8979" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="571" x2="571" y1="807.3198" y2="827.3198"/><polygon fill="#A80036" points="567,817.3198,571,827.3198,575,817.3198,571,821.3198" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1259.5" x2="1259.5" y1="746.8354" y2="827.3198"/><polygon fill="#A80036" points="1255.5,817.3198,1259.5,827.3198,1263.5,817.3198,1259.5,821.3198" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="723.5" x2="723.5" y1="877.3198" y2="901.7222"/><polygon fill="#A80036" points="719.5,891.7222,723.5,901.7222,727.5,891.7222,723.5,895.7222" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="844.5" x2="856.5" y1="865.3198" y2="865.3198"/><polygon fill="#A80036" points="852.5,908.7065,856.5,918.7065,860.5,908.7065,856.5,912.7065" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="856.5" x2="856.5" y1="865.3198" y2="967.6909"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="856.5" x2="735.5" y1="967.6909" y2="967.6909"/><polygon fill="#A80036" points="745.5,963.6909,735.5,967.6909,745.5,971.6909,741.5,967.6909" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="723.5" x2="723.5" y1="935.6909" y2="955.6909"/><polygon fill="#A80036" points="719.5,945.6909,723.5,955.6909,727.5,945.6909,723.5,949.6909" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="723.5" x2="723.5" y1="833.3198" y2="853.3198"/><polygon fill="#A80036" points="719.5,843.3198,723.5,853.3198,727.5,843.3198,723.5,847.3198" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="723.5" x2="723.5" y1="587.2188" y2="618.9292"/><polygon fill="#A80036" points="719.5,608.9292,723.5,618.9292,727.5,608.9292,723.5,612.9292" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="723.5" x2="723.5" y1="979.6909" y2="989.6909"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="723.5" x2="1424" y1="989.6909" y2="989.6909"/><polygon fill="#A80036" points="1420,797.3511,1424,787.3511,1428,797.3511,1424,793.3511" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1424" x2="1424" y1="575.2188" y2="989.6909"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1424" x2="852.5" y1="575.2188" y2="575.2188"/><polygon fill="#A80036" points="862.5,571.2188,852.5,575.2188,862.5,579.2188,858.5,575.2188" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="594.5" x2="27" y1="575.2188" y2="575.2188"/><polygon fill="#A80036" points="23,783.3511,27,793.3511,31,783.3511,27,787.3511" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="27" x2="27" y1="575.2188" y2="1001.6909"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="27" x2="723.5" y1="1001.6909" y2="1001.6909"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="723.5" x2="723.5" y1="1001.6909" y2="1033.6909"/><polygon fill="#A80036" points="719.5,1023.6909,723.5,1033.6909,727.5,1023.6909,723.5,1027.6909" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="723.5" x2="723.5" y1="543.2188" y2="563.2188"/><polygon fill="#A80036" points="719.5,553.2188,723.5,563.2188,727.5,553.2188,723.5,557.2188" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="723.5" x2="723.5" y1="462.9531" y2="509.25"/><polygon fill="#A80036" points="719.5,499.25,723.5,509.25,727.5,499.25,723.5,503.25" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="544.25" x2="544.25" y1="1101.6597" y2="1123.2261"/><polygon fill="#A80036" points="540.25,1113.2261,544.25,1123.2261,548.25,1113.2261,544.25,1117.2261" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1035.75" x2="1035.75" y1="1171.6597" y2="1196.062"/><polygon fill="#A80036" points="1031.75,1186.062,1035.75,1196.062,1039.75,1186.062,1035.75,1190.062" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1167.25" x2="1179.25" y1="1159.6597" y2="1159.6597"/><polygon fill="#A80036" points="1175.25,1203.0464,1179.25,1213.0464,1183.25,1203.0464,1179.25,1207.0464" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1179.25" x2="1179.25" y1="1159.6597" y2="1266.4331"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1179.25" x2="1047.75" y1="1266.4331" y2="1266.4331"/><polygon fill="#A80036" points="1057.75,1262.4331,1047.75,1266.4331,1057.75,1270.4331,1053.75,1266.4331" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1035.75" x2="1035.75" y1="1230.0308" y2="1254.4331"/><polygon fill="#A80036" points="1031.75,1244.4331,1035.75,1254.4331,1039.75,1244.4331,1035.75,1248.4331" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="751.25" x2="751.25" y1="1127.6597" y2="1189.0776"/><polygon fill="#A80036" points="747.25,1179.0776,751.25,1189.0776,755.25,1179.0776,751.25,1183.0776" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1035.75" x2="1035.75" y1="1127.6597" y2="1147.6597"/><polygon fill="#A80036" points="1031.75,1137.6597,1035.75,1147.6597,1039.75,1137.6597,1035.75,1141.6597" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="751.25" x2="751.25" y1="1237.0151" y2="1298.4331"/><polygon fill="#A80036" points="747.25,1288.4331,751.25,1298.4331,755.25,1288.4331,751.25,1292.4331" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1035.75" x2="1035.75" y1="1278.4331" y2="1298.4331"/><polygon fill="#A80036" points="1031.75,1288.4331,1035.75,1298.4331,1039.75,1288.4331,1035.75,1292.4331" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="902.75" x2="902.75" y1="1101.6597" y2="1121.6597"/><polygon fill="#A80036" points="898.75,1111.6597,902.75,1121.6597,906.75,1111.6597,902.75,1115.6597" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="625.5" x2="544.25" y1="1045.6909" y2="1045.6909"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="544.25" x2="544.25" y1="1045.6909" y2="1067.6909"/><polygon fill="#A80036" points="540.25,1057.6909,544.25,1067.6909,548.25,1057.6909,544.25,1061.6909" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="821.5" x2="902.75" y1="1045.6909" y2="1045.6909"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="902.75" x2="902.75" y1="1045.6909" y2="1067.6909"/><polygon fill="#A80036" points="898.75,1057.6909,902.75,1067.6909,906.75,1057.6909,902.75,1061.6909" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="902.75" x2="902.75" y1="1304.4331" y2="1309.4331"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="902.75" x2="723.5" y1="1309.4331" y2="1309.4331"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="723.5" x2="723.5" y1="1309.4331" y2="1350.73"/><polygon fill="#A80036" points="719.5,1340.73,723.5,1350.73,727.5,1340.73,723.5,1344.73" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="238.75" x2="238.75" y1="1433.73" y2="1466.5347"/><polygon fill="#A80036" points="234.75,1456.5347,238.75,1466.5347,242.75,1456.5347,238.75,1460.5347" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="238.75" x2="238.75" y1="1500.5034" y2="1558.937"/><polygon fill="#A80036" points="234.75,1548.937,238.75,1558.937,242.75,1548.937,238.75,1552.937" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="506.25" x2="506.25" y1="1433.73" y2="1466.5347"/><polygon fill="#A80036" points="502.25,1456.5347,506.25,1466.5347,510.25,1456.5347,506.25,1460.5347" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="506.25" x2="506.25" y1="1500.5034" y2="1558.937"/><polygon fill="#A80036" points="502.25,1548.937,506.25,1558.937,510.25,1548.937,506.25,1552.937" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="351.25" x2="371.25" y1="1421.73" y2="1421.73"/><polygon fill="#A80036" points="361.25,1417.73,371.25,1421.73,361.25,1425.73,365.25,1421.73" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="604.5" x2="238.75" y1="1362.73" y2="1362.73"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="238.75" x2="238.75" y1="1362.73" y2="1409.73"/><polygon fill="#A80036" points="234.75,1399.73,238.75,1409.73,242.75,1399.73,238.75,1403.73" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="641.25" x2="676.25" y1="1421.73" y2="1421.73"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="676.25" x2="676.25" y1="1421.73" y2="1558.937"/><polygon fill="#A80036" points="672.25,1548.937,676.25,1558.937,680.25,1548.937,676.25,1552.937" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="238.75" x2="676.25" y1="1558.937" y2="1558.937"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1038.25" x2="1038.25" y1="1454.9956" y2="1489.9956"/><polygon fill="#A80036" points="1034.25,1479.9956,1038.25,1489.9956,1042.25,1479.9956,1038.25,1483.9956" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1038.25" x2="1038.25" y1="1523.9644" y2="1543.9644"/><polygon fill="#A80036" points="1034.25,1533.9644,1038.25,1543.9644,1042.25,1533.9644,1038.25,1537.9644" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="842.5" x2="1038.25" y1="1362.73" y2="1362.73"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1038.25" x2="1038.25" y1="1362.73" y2="1421.0269"/><polygon fill="#A80036" points="1034.25,1411.0269,1038.25,1421.0269,1042.25,1411.0269,1038.25,1415.0269" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="408.75" x2="408.75" y1="1558.937" y2="1584.5308"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="408.75" x2="723.5" y1="1584.5308" y2="1584.5308"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="723.5" x2="723.5" y1="1584.5308" y2="1611.5308"/><polygon fill="#A80036" points="719.5,1601.5308,723.5,1611.5308,727.5,1601.5308,723.5,1605.5308" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="345" x2="345" y1="1669.8276" y2="1689.8276"/><polygon fill="#A80036" points="341,1679.8276,345,1689.8276,349,1679.8276,345,1683.8276" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="550.5" x2="550.5" y1="1669.8276" y2="1689.8276"/><polygon fill="#A80036" points="546.5,1679.8276,550.5,1689.8276,554.5,1679.8276,550.5,1683.8276" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="750" x2="750" y1="1669.8276" y2="1689.8276"/><polygon fill="#A80036" points="746,1679.8276,750,1689.8276,754,1679.8276,750,1683.8276" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="345" x2="345" y1="1723.7964" y2="1743.7964"/><polygon fill="#A80036" points="341,1733.7964,345,1743.7964,349,1733.7964,345,1737.7964" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="550.5" x2="550.5" y1="1723.7964" y2="1743.7964"/><polygon fill="#A80036" points="546.5,1733.7964,550.5,1743.7964,554.5,1733.7964,550.5,1737.7964" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="750" x2="750" y1="1723.7964" y2="1743.7964"/><polygon fill="#A80036" points="746,1733.7964,750,1743.7964,754,1733.7964,750,1737.7964" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="544.5" x2="544.5" y1="1617.5308" y2="1663.8276"/><polygon fill="#A80036" points="540.5,1653.8276,544.5,1663.8276,548.5,1653.8276,544.5,1657.8276" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1048.5" x2="1048.5" y1="1617.5308" y2="1674.6948"/><polygon fill="#A80036" points="1044.5,1664.6948,1048.5,1674.6948,1052.5,1664.6948,1048.5,1668.6948" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="544.5" x2="544.5" y1="1749.7964" y2="1781.7964"/><polygon fill="#A80036" points="540.5,1771.7964,544.5,1781.7964,548.5,1771.7964,544.5,1775.7964" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1048.5" x2="1048.5" y1="1722.6323" y2="1781.7964"/><polygon fill="#A80036" points="1044.5,1771.7964,1048.5,1781.7964,1052.5,1771.7964,1048.5,1775.7964" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="723.5" x2="723.5" y1="1787.7964" y2="1807.7964"/><polygon fill="#A80036" points="719.5,1797.7964,723.5,1807.7964,727.5,1797.7964,723.5,1801.7964" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="723.5" x2="723.5" y1="1841.7651" y2="1861.7651"/><polygon fill="#A80036" points="719.5,1851.7651,723.5,1861.7651,727.5,1851.7651,723.5,1855.7651" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1169.25" x2="723.5" y1="406.9844" y2="406.9844"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="723.5" x2="723.5" y1="406.9844" y2="428.9844"/><polygon fill="#A80036" points="719.5,418.9844,723.5,428.9844,727.5,418.9844,723.5,422.9844" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1318.25" x2="1764" y1="406.9844" y2="406.9844"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1764" x2="1764" y1="406.9844" y2="430.5508"/><polygon fill="#A80036" points="1760,420.5508,1764,430.5508,1768,420.5508,1764,424.5508" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1243.75" x2="1243.75" y1="374.9844" y2="394.9844"/><polygon fill="#A80036" points="1239.75,384.9844,1243.75,394.9844,1247.75,384.9844,1243.75,388.9844" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[b9307c4e4a138ce85e55f74efcc53d60]
2
@startuml
3

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

    
6
!include ../functions.iuml
7

    
8
/'### PARAMETERS & RETURN ####################################################'/
9

    
10
note
11
  - - **subscriber** : urt_hrtsubscriber_t* - -
12
  The HRT subscriber that shall fetch the message.
13
  Must not be ""NULL"".
14
  - - **payload** : void* - -
15
  Pointer where to copy the payload to.
16
  May be ""NULL"" for messages without payload.
17
  - - **bytes** : size_t - -
18
  Payload size in bytes.
19
  - - **latency** : urt_delay_t* - -
20
  The latency can be returned by reference.
21
  May be ""NULL"".
22
  ====
23
  - - **return** : urt_status_t - -
24
  Returns ""URT_STATUS_OK"" on success.
25
  Returns ""URT_STATUS_FETCH_NOTOPIC"" if the subscriber is not associated to a topic.
26
  Retruns ""URT_STATUS_FETCH_NOMESSAGE"" if there is no new message to fetch.
27
  Returns ""URT_STATUS_JITTERVIOLATION"" if the message's latency violated the maximum expected jitter.
28
endnote
29

    
30
/'### PROCEDURE ##############################################################'/
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
        fork
41
          :decrement message's counter of HRT consumers;
42
        fork again
43
          #EEEEEE:..//URT_CFG_PUBSUB_PROFILING == true//..\ndecrement message's counter of consumers;
44
        fork again
45
          #EEEEEE:..//URT_CFG_PUBSUB_QOS_DEADLINECHECKS == true//..\nreset QoS deadline timer;
46
        endfork
47
      fork again
48
        #EEEEEE:..//URT_CFG:PUBSUB_PROFILING == true//..\nincrement counter of received messages;
49
      endfork
50
      if (HRT counter of a message became 0?) then (yes)
51
        :signal topic's condition variable;
52
      else (no)
53
      endif
54
    endwhile (no)
55
  }
56
  if (Timestamp equals local copy?) then (yes)
57
    :unlock topic;
58
    stop
59
    note
60
      Returns ""URT_STATUS_FETCH_NOMESSAGE"".
61
    endnote
62
  else (no)
63
    :calculate message latency;
64
    fork
65
      #EEEEEE:..//URT:CFG_PUBSUB_PROFILING == true//..\naccumulate ""sumLatencies"" value;
66
    fork again
67
      if (Optional ""latency"" output argument given?) then (yes)
68
        :set ""latency"" value;
69
      else (no)
70
      endif
71
    endfork
72
  endif
73
  partition "//URT_CFG_PUBSUB_QOS_JITTERCHECKS == true || URT_CFG_PUBSUB_PROFILING == true//" #EEEEEE {
74
    if (Latency is within allowed jitter range?) then (yes)
75
      if (Latency is lower than ""minlatency""?) then (yes)
76
        #EEEEEE:update ""minLatency"" value;
77
      elseif (Latency is greater than ""maxLatency"" value?) then (yes)
78
        #EEEEEE:update ""maxLatency"" value;
79
      else (no)
80
      endif
81
    else (no)
82
      partition "//URT_CFG_PUBSUB_QOS_JITTERCHECKS == true//" #EEEEEE {
83
        #EEEEEE:unlock topic;
84
        #EEEEEE:call ""urtCoreStopNodes(URT_STATUS_JITTERVIOLATION)"";
85
        stop
86
        note
87
          Returns ""URT_STATUS_JITTERVIOLATION"".
88
        endnote
89
      }
90
    endif
91
  }
92
  fork
93
    $fetch_message()
94
  fork again
95
    #EEEEEE:..//URT_CFG_PUBSUB_QOS_DEADLINECHECKS == true//..\nreset QoS deadline timer;
96
  endfork
97
  :unlock topic;
98
  stop
99
  note
100
    Returns ""URT_STATUS_OK"".
101
  endnote
102
else (no)
103
  stop
104
  note
105
    Returns ""URT_STATUS_FETCH_NOTOPIC"".
106
  endnote
107
endif
108

    
109
/'### OUTRO ##################################################################'/
110

    
111
@enduml
112

    
113
@startuml
114

    
115
title **µRtWare**\nurtHrtSubscriberFetchLatestMessage()\n
116

    
117

    
118

    
119

    
120

    
121

    
122
note
123
  - - **subscriber** : urt_hrtsubscriber_t* - -
124
  The HRT subscriber that shall fetch the message.
125
  Must not be ""NULL"".
126
  - - **payload** : void* - -
127
  Pointer where to copy the payload to.
128
  May be ""NULL"" for messages without payload.
129
  - - **bytes** : size_t - -
130
  Payload size in bytes.
131
  - - **latency** : urt_delay_t* - -
132
  The latency can be returned by reference.
133
  May be ""NULL"".
134
  ====
135
  - - **return** : urt_status_t - -
136
  Returns ""URT_STATUS_OK"" on success.
137
  Returns ""URT_STATUS_FETCH_NOTOPIC"" if the subscriber is not associated to a topic.
138
  Retruns ""URT_STATUS_FETCH_NOMESSAGE"" if there is no new message to fetch.
139
  Returns ""URT_STATUS_JITTERVIOLATION"" if the message's latency violated the maximum expected jitter.
140
endnote
141

    
142

    
143
start
144
if (Associated to a topic?) then (yes)
145
  :lock topic;
146
  partition "find latest message" {
147
    :access ""lastMessage"";
148
    while (Timestamp of next message is younger?) is (yes)
149
      fork
150
        :proceed to next message;
151
        fork
152
          :decrement message's counter of HRT consumers;
153
        fork again
154
          #EEEEEE:..//URT_CFG_PUBSUB_PROFILING == true//..\ndecrement message's counter of consumers;
155
        fork again
156
          #EEEEEE:..//URT_CFG_PUBSUB_QOS_DEADLINECHECKS == true//..\nreset QoS deadline timer;
157
        endfork
158
      fork again
159
        #EEEEEE:..//URT_CFG:PUBSUB_PROFILING == true//..\nincrement counter of received messages;
160
      endfork
161
      if (HRT counter of a message became 0?) then (yes)
162
        :signal topic's condition variable;
163
      else (no)
164
      endif
165
    endwhile (no)
166
  }
167
  if (Timestamp equals local copy?) then (yes)
168
    :unlock topic;
169
    stop
170
    note
171
      Returns ""URT_STATUS_FETCH_NOMESSAGE"".
172
    endnote
173
  else (no)
174
    :calculate message latency;
175
    fork
176
      #EEEEEE:..//URT:CFG_PUBSUB_PROFILING == true//..\naccumulate ""sumLatencies"" value;
177
    fork again
178
      if (Optional ""latency"" output argument given?) then (yes)
179
        :set ""latency"" value;
180
      else (no)
181
      endif
182
    endfork
183
  endif
184
  partition "//URT_CFG_PUBSUB_QOS_JITTERCHECKS == true || URT_CFG_PUBSUB_PROFILING == true//" #EEEEEE {
185
    if (Latency is within allowed jitter range?) then (yes)
186
      if (Latency is lower than ""minlatency""?) then (yes)
187
        #EEEEEE:update ""minLatency"" value;
188
      elseif (Latency is greater than ""maxLatency"" value?) then (yes)
189
        #EEEEEE:update ""maxLatency"" value;
190
      else (no)
191
      endif
192
    else (no)
193
      partition "//URT_CFG_PUBSUB_QOS_JITTERCHECKS == true//" #EEEEEE {
194
        #EEEEEE:unlock topic;
195
        #EEEEEE:call ""urtCoreStopNodes(URT_STATUS_JITTERVIOLATION)"";
196
        stop
197
        note
198
          Returns ""URT_STATUS_JITTERVIOLATION"".
199
        endnote
200
      }
201
    endif
202
  }
203
  fork
204
      partition "fetch message" {
205
    fork
206
      :update message pointer;
207
    fork again
208
      :copy message origin time;
209
    fork again
210
      :copy message payload;
211
    endfork
212
  }
213
  fork again
214
    #EEEEEE:..//URT_CFG_PUBSUB_QOS_DEADLINECHECKS == true//..\nreset QoS deadline timer;
215
  endfork
216
  :unlock topic;
217
  stop
218
  note
219
    Returns ""URT_STATUS_OK"".
220
  endnote
221
else (no)
222
  stop
223
  note
224
    Returns ""URT_STATUS_FETCH_NOTOPIC"".
225
  endnote
226
endif
227

    
228

    
229
@enduml
230

    
231
PlantUML version 1.2020.15(Sun Jun 28 13:39:45 CEST 2020)
232
(GPL source distribution)
233
Java Runtime: OpenJDK Runtime Environment
234
JVM: OpenJDK 64-Bit Server VM
235
Default Encoding: UTF-8
236
Language: de
237
Country: DE
238
--></g></svg>