urtware / doc / activitydiagrams / subscriber / hrtsubscriber / urtHrtSubscriberSubscribe.svg @ 155b0443
History | View | Annotate | Download (48.405 KB)
1 | dd31cb03 | Thomas Schöpping | <?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="1457px" preserveAspectRatio="none" style="width:3820px;height:1457px;" version="1.1" viewBox="0 0 3820 1457" width="3820px" zoomAndPan="magnify"><defs><filter height="300%" id="foup6micmf7s7" 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="1864.625" y="26.708">µRtWare</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="247" x="1785.625" y="47.6611">urtHrtSubscriberSubscribe()</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="0" x="1912.125" y="68.6143"/><path d="M874.25,72.8594 L874.25,440.9141 L1574.25,440.9141 L1574.25,82.8594 L1564.25,72.8594 L874.25,72.8594 " fill="#FBFB77" filter="url(#foup6micmf7s7)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1564.25,72.8594 L1564.25,82.8594 L1574.25,82.8594 L1564.25,72.8594 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="874.25" x2="1111.25" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1115.25" y="89.4263"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="78" x="1115.25" y="89.4263">subscriber</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="136" x="1197.25" y="89.4263">: urt_hrtsubscriber_t*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1337.25" x2="1574.25" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="327" x="880.25" y="105.0591">The HRT subscriber which shall subscribe to a topic.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="76" x="880.25" y="120.1919">Must not be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="960.25" y="120.1919">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="992.25" y="120.1919">.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="874.25" x2="1158.25" y1="130.8242" y2="130.8242"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1162.25" y="134.8247"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="37" x="1162.25" y="134.8247">topic</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="83" x="1203.25" y="134.8247">: urt_topic_t*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1290.25" x2="1574.25" y1="130.8242" y2="130.8242"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="161" x="880.25" y="150.4575">The topic to subscribe to.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="76" x="880.25" y="165.5903">Must not be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="960.25" y="165.5903">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="992.25" y="165.5903">.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="874.25" x2="1125.25" y1="176.2227" y2="176.2227"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1129.25" y="180.2231"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="75" x="1129.25" y="180.2231">messages</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="111" x="1208.25" y="180.2231">: urt_message_t*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1323.25" x2="1574.25" y1="176.2227" y2="176.2227"/><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="880.25" y="195.856">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="346" x="916.25" y="195.856">terminated list of messages to contribute to the topic.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="329" x="880.25" y="210.9888">Messages must not be associated to another topic.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="430" x="880.25" y="226.1216">Once a message has been contributed, it cannot be removed later.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="46" x="880.25" y="241.2544">May be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="930.25" y="241.2544">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="186" x="966.25" y="241.2544">(no messages to contribute).</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="874.25" x2="1146.75" y1="251.8867" y2="251.8867"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1150.75" y="255.8872"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="64" x="1150.75" y="255.8872">deadline</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="79" x="1218.75" y="255.8872">: urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1301.75" x2="1574.25" y1="251.8867" y2="251.8867"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="267" x="880.25" y="271.52">Maximum latency to consume messages.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="325" x="880.25" y="286.6528">A value of 0 indicates that latency is of no concern.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="874.25" x2="1161.25" y1="297.2852" y2="297.2852"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1165.25" y="301.2856"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="35" x="1165.25" y="301.2856">jitter</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="79" x="1204.25" y="301.2856">: urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1287.25" x2="1574.25" y1="297.2852" y2="297.2852"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="679" x="880.25" y="316.9185">Maximum allowed jitter (difference between maximum and minimum latency) when consuming messages.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="308" x="880.25" y="332.0513">A value of 0 indicates that jitter is of no concern.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="874.25" x2="1163.75" y1="342.6836" y2="342.6836"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1167.75" y="346.6841"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="30" x="1167.75" y="346.6841">rate</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="79" x="1201.75" y="346.6841">: urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1284.75" x2="1574.25" y1="342.6836" y2="342.6836"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="621" x="880.25" y="362.3169">Expected minimum rate of new messages (= mamximum time between consecutive messages).</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="309" x="880.25" y="377.4497">A value of 0 indicates, that rate is of no concern.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="874.25" x2="1574.25" y1="385.5156" y2="385.5156"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="874.25" x2="1574.25" y1="387.5156" y2="387.5156"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="874.25" x2="1153.25" y1="398.082" y2="398.082"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1157.25" y="402.0825"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="45" x="1157.25" y="402.0825">return</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="85" x="1206.25" y="402.0825">: urt_status_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1295.25" x2="1574.25" y1="398.082" y2="398.082"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="880.25" y="417.7153">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="933.25" y="417.7153">URT_STATUS_OK</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="75" x="1041.25" y="417.7153">on success.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="880.25" y="432.8481">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="232" x="933.25" y="432.8481">URT_STATUS_SUBSCRIBE_TOPICSET</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="308" x="1169.25" y="432.8481">if the subscriber is already associated to a topic.</text><ellipse cx="1224.25" cy="470.9141" fill="#000000" filter="url(#foup6micmf7s7)" rx="10" ry="10" style="stroke: none; stroke-width: 1.0;"/><polygon fill="#FEFECE" filter="url(#foup6micmf7s7)" points="1166.75,500.9141,1281.75,500.9141,1293.75,512.9141,1281.75,524.9141,1166.75,524.9141,1154.75,512.9141,1166.75,500.9141" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="115" x="1166.75" y="516.7222">Is topic already set?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="1134.75" y="510.3198">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="1293.75" y="510.3198">no</text><path d="M10,534.9141 L10,560.0469 A0,0 0 0 0 10,560.0469 L320,560.0469 A0,0 0 0 0 320,560.0469 L320,552.9141 L340,547.4805 L320,544.9141 L320,544.9141 L310,534.9141 L10,534.9141 A0,0 0 0 0 10,534.9141 " fill="#FBFB77" filter="url(#foup6micmf7s7)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M310,534.9141 L310,544.9141 L320,544.9141 L310,534.9141 " 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="551.981">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="232" x="69" y="551.981">URT_STATUS_SUBSCRIBE_TOPICSET</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="301" y="551.981">.</text><ellipse cx="351" cy="547.4805" fill="#FFFFFF" filter="url(#foup6micmf7s7)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="351" cy="547.4805" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><rect fill="#000000" filter="url(#foup6micmf7s7)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="884" x="1655.75" y="534.9141"/><rect fill="#FEFECE" filter="url(#foup6micmf7s7)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="75" x="1669.75" y="654.8594"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="55" x="1679.75" y="675.998">set topic</text><path d="M1772.75,560.9141 L1772.75,782.7734 A0,0 0 0 0 1772.75,782.7734 L2374.75,782.7734 A0,0 0 0 0 2374.75,782.7734 L2374.75,675.8438 L2394.75,671.8438 L2374.75,667.8438 L2374.75,570.9141 L2364.75,560.9141 L1772.75,560.9141 A0,0 0 0 0 1772.75,560.9141 " fill="#EEEEEE" filter="url(#foup6micmf7s7)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M2364.75,560.9141 L2364.75,570.9141 L2374.75,570.9141 L2364.75,560.9141 " fill="#EEEEEE" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="1772.75" x2="2002.75" y1="573.4805" y2="573.4805"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="134" x="2006.75" y="577.481">urt_basesubscriber_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="2144.75" x2="2374.75" y1="573.4805" y2="573.4805"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1772.75" x2="1945.25" y1="588.6133" y2="588.6133"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="249" x="1949.25" y="592.6138">URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="2202.25" x2="2374.75" y1="588.6133" y2="588.6133"/><ellipse cx="1784.25" cy="603.8125" fill="#000000" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 0.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="101" x="1789.75" y="608.2466">sumLatencies</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="23" x="1894.75" y="608.2466">← 0</text><ellipse cx="1784.25" cy="618.9453" fill="#000000" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 0.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="173" x="1789.75" y="623.3794">numMessagesReceived</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="23" x="1966.75" y="623.3794">← 0</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1772.75" x2="2009.25" y1="634.0117" y2="634.0117"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="121" x="2013.25" y="638.0122">urt_hrtsubscriber_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="2138.25" x2="2374.75" y1="634.0117" y2="634.0117"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1772.75" x2="1901.25" y1="649.1445" y2="649.1445"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="337" x="1905.25" y="653.145">URT_CFG_PUBSUB_QOS_DEADLINECHECKS == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="2246.25" x2="2374.75" y1="649.1445" y2="649.1445"/><ellipse cx="1784.25" cy="664.3438" fill="#000000" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 0.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="110" x="1789.75" y="668.7778">deadlineOffset</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="69" x="1903.75" y="668.7778">← deadline</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1772.75" x2="1915.75" y1="679.4102" y2="679.4102"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="308" x="1919.75" y="683.4106">URT_CFG_PUBSUB_QOS_JITTERCHECKS == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="2231.75" x2="2374.75" y1="679.4102" y2="679.4102"/><ellipse cx="1784.25" cy="694.6094" fill="#000000" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 0.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="66" x="1789.75" y="699.0435">maxJitter</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="44" x="1859.75" y="699.0435">← jitter</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1772.75" x2="1783.25" y1="709.6758" y2="709.6758"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="573" x="1787.25" y="713.6763">URT_CFG_PUBSUB_QOS_JITTERCHECKS == true || URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="2364.25" x2="2374.75" y1="709.6758" y2="709.6758"/><ellipse cx="1784.25" cy="724.875" fill="#000000" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 0.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="84" x="1789.75" y="729.3091">minLatency</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="52" x="1877.75" y="729.3091">← 0xF..F</text><ellipse cx="1784.25" cy="740.0078" fill="#000000" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 0.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="88" x="1789.75" y="744.4419">maxLatency</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="23" x="1881.75" y="744.4419">← 0</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1772.75" x2="1917.75" y1="755.0742" y2="755.0742"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="304" x="1921.75" y="759.0747">URT_CFG_PUBSUB_QOS_RATECHECKS == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="2229.75" x2="2374.75" y1="755.0742" y2="755.0742"/><ellipse cx="1784.25" cy="770.2734" fill="#000000" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 0.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="103" x="1789.75" y="774.7075">expectedRate</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="41" x="1896.75" y="774.7075">← rate</text><rect fill="#EEEEEE" filter="url(#foup6micmf7s7)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="131" x="2394.75" y="654.8594"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="111" x="2404.75" y="675.998">initialize members</text><rect fill="#000000" filter="url(#foup6micmf7s7)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="884" x="1655.75" y="802.7734"/><rect fill="#FEFECE" filter="url(#foup6micmf7s7)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="80" x="2057.75" y="828.7734"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="60" x="2067.75" y="849.9121">lock topic</text><rect fill="#000000" filter="url(#foup6micmf7s7)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="3437.25" x="372" y="882.7422"/><rect fill="#FFFFFF" filter="url(#foup6micmf7s7)" height="142.0586" style="stroke: #000000; stroke-width: 2.0;" width="1170" x="384" y="1043.7197"/><path d="M541,1044.7197 L541,1053.0166 L531,1063.0166 L384,1063.0166 " fill="none" style="stroke: #000000; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="147" x="387" y="1057.7148">contribute messages</text><rect fill="#000000" filter="url(#foup6micmf7s7)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="1150" x="394" y="1080.0166"/><rect fill="#FEFECE" filter="url(#foup6micmf7s7)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="619" x="408" y="1106.0166"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="20" x="418" y="1127.1553">set</text><text fill="#000000" font-family="monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="28" x="442" y="1127.1553">next</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="543" x="474" y="1127.1553">pointer of last message to contribute to the message after the topic's latest message</text><rect fill="#FEFECE" filter="url(#foup6micmf7s7)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="475" x="1055" y="1106.0166"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="20" x="1065" y="1127.1553">set</text><text fill="#000000" font-family="monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="28" x="1089" y="1127.1553">next</text><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="399" x="1121" y="1127.1553">pointer of topic's latest message to first message to contribute</text><rect fill="#000000" filter="url(#foup6micmf7s7)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="1150" x="394" y="1159.9854"/><polygon fill="#FEFECE" filter="url(#foup6micmf7s7)" points="899,995.3174,1039,995.3174,1051,1007.3174,1039,1019.3174,899,1019.3174,887,1007.3174,899,995.3174" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="973" y="1029.5278">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="140" x="899" y="1011.1255">Messages to contribute?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="1051" y="1004.7231">no</text><polygon fill="#FEFECE" filter="url(#foup6micmf7s7)" points="969,1210.1807,981,1222.1807,969,1234.1807,957,1222.1807,969,1210.1807" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#000000" filter="url(#foup6micmf7s7)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="664" x="1584.25" y="1071.8682"/><rect fill="#FEFECE" filter="url(#foup6micmf7s7)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="313" x="1596.25" y="1097.8682"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="293" x="1606.25" y="1119.0068">set message pointer to topic's latest message</text><rect fill="#FEFECE" filter="url(#foup6micmf7s7)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="297" x="1937.25" y="1097.8682"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="277" x="1947.25" y="1119.0068">copy timestamp from topic's latest message</text><rect fill="#000000" filter="url(#foup6micmf7s7)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="664" x="1584.25" y="1151.8369"/><rect fill="#FEFECE" filter="url(#foup6micmf7s7)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="217" x="2276.25" y="1097.8682"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="197" x="2286.25" y="1119.0068">register to topic's event source</text><rect fill="#000000" filter="url(#foup6micmf7s7)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="979" x="2521.25" y="908.7422"/><rect fill="#EEEEEE" filter="url(#foup6micmf7s7)" height="370.4102" style="stroke: #000000; stroke-width: 2.0;" width="641" x="2535.25" y="925.5439"/><path d="M2863.25,926.5439 L2863.25,934.8408 L2853.25,944.8408 L2535.25,944.8408 " 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="318" x="2538.25" y="939.5391">URT_CFG_PUBSUB_QOS_RATECHECKS = true</text><rect fill="#EEEEEE" filter="url(#foup6micmf7s7)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="351" x="2686.5" y="961.8408"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="331" x="2696.5" y="982.9795">access first element of topic's list of HRT subscribers</text><rect fill="#EEEEEE" filter="url(#foup6micmf7s7)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="190" x="2767" y="1093.2236"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="170" x="2777" y="1114.3623">proceed to next subscriber</text><polygon fill="#FEFECE" filter="url(#foup6micmf7s7)" points="2771,1030.8096,2953,1030.8096,2965,1043.6143,2953,1056.4189,2771,1056.4189,2759,1043.6143,2771,1030.8096" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="2866" y="1066.6294">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="98" x="2771" y="1041.02">Subscriber is not</text><text fill="#000000" font-family="monospace" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="28" x="2873" y="1041.02">NULL</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="39" x="2771" y="1053.8247">and its</text><text fill="#000000" font-family="monospace" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="84" x="2814" y="1053.8247">expectedRate</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="51" x="2902" y="1053.8247">is lower?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="2745" y="1041.02">no</text><polygon fill="#FEFECE" filter="url(#foup6micmf7s7)" points="2782,1185.9854,2942,1185.9854,2954,1197.9854,2942,1209.9854,2782,1209.9854,2770,1197.9854,2782,1185.9854" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="122" x="2782" y="1201.7935">Current subscriber is</text><text fill="#000000" font-family="monospace" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="28" x="2908" y="1201.7935">NULL</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="6" x="2936" y="1201.7935">?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="2750" y="1195.3911">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="2954" y="1195.3911">no</text><rect fill="#EEEEEE" filter="url(#foup6micmf7s7)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="299" x="2555.25" y="1219.9854"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="279" x="2565.25" y="1241.124">append self to topic's list of HRT subscribers</text><rect fill="#EEEEEE" filter="url(#foup6micmf7s7)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="290" x="2874.25" y="1219.9854"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="270" x="2884.25" y="1241.124">insert self in fron of current HRT subscriber</text><polygon fill="#FEFECE" filter="url(#foup6micmf7s7)" points="2862,1259.9541,2874,1271.9541,2862,1283.9541,2850,1271.9541,2862,1259.9541" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#FEFECE" filter="url(#foup6micmf7s7)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="302" x="3186.25" y="1097.8682"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="282" x="3196.25" y="1119.0068">increment topic's counter of HRT subscribers</text><rect fill="#000000" filter="url(#foup6micmf7s7)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="979" x="2521.25" y="1315.9541"/><rect fill="#EEEEEE" filter="url(#foup6micmf7s7)" height="47.9375" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="287" x="3510.25" y="1090.8838"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="3510.25" x2="3537.75" y1="1107.8682" y2="1107.8682"/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="232" x="3537.75" y="1111.5225">URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="3769.75" x2="3797.25" y1="1107.8682" y2="1107.8682"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="267" x="3520.25" y="1125.9912">increment counter of subscribers (@topic)</text><rect fill="#000000" filter="url(#foup6micmf7s7)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="3437.25" x="372" y="1341.9541"/><rect fill="#FEFECE" filter="url(#foup6micmf7s7)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="96" x="2049.75" y="1367.9541"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="76" x="2059.75" y="1389.0928">unlock topic</text><path d="M1884.75,1420.3564 L1884.75,1445.4893 A0,0 0 0 0 1884.75,1445.4893 L2066.75,1445.4893 A0,0 0 0 0 2066.75,1445.4893 L2066.75,1438.3564 L2086.75,1432.9229 L2066.75,1430.3564 L2066.75,1430.3564 L2056.75,1420.3564 L1884.75,1420.3564 A0,0 0 0 0 1884.75,1420.3564 " fill="#FBFB77" filter="url(#foup6micmf7s7)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M2056.75,1420.3564 L2056.75,1430.3564 L2066.75,1430.3564 L2056.75,1420.3564 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="1890.75" y="1437.4233">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="1943.75" y="1437.4233">URT_STATUS_OK</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="2047.75" y="1437.4233">.</text><ellipse cx="2097.75" cy="1432.9229" fill="#FFFFFF" filter="url(#foup6micmf7s7)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="2097.75" cy="1432.9229" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1224.25" x2="1224.25" y1="440.9141" y2="460.9141"/><polygon fill="#A80036" points="1220.25,450.9141,1224.25,460.9141,1228.25,450.9141,1224.25,454.9141" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1707.25" x2="1707.25" y1="540.9141" y2="654.8594"/><polygon fill="#A80036" points="1703.25,644.8594,1707.25,654.8594,1711.25,644.8594,1707.25,648.8594" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2460.25" x2="2460.25" y1="540.9141" y2="654.8594"/><polygon fill="#A80036" points="2456.25,644.8594,2460.25,654.8594,2464.25,644.8594,2460.25,648.8594" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1707.25" x2="1707.25" y1="688.8281" y2="802.7734"/><polygon fill="#A80036" points="1703.25,792.7734,1707.25,802.7734,1711.25,792.7734,1707.25,796.7734" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2460.25" x2="2460.25" y1="688.8281" y2="802.7734"/><polygon fill="#A80036" points="2456.25,792.7734,2460.25,802.7734,2464.25,792.7734,2460.25,796.7734" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2097.75" x2="2097.75" y1="808.7734" y2="828.7734"/><polygon fill="#A80036" points="2093.75,818.7734,2097.75,828.7734,2101.75,818.7734,2097.75,822.7734" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="717.5" x2="717.5" y1="1086.0166" y2="1106.0166"/><polygon fill="#A80036" points="713.5,1096.0166,717.5,1106.0166,721.5,1096.0166,717.5,1100.0166" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1292.5" x2="1292.5" y1="1086.0166" y2="1106.0166"/><polygon fill="#A80036" points="1288.5,1096.0166,1292.5,1106.0166,1296.5,1096.0166,1292.5,1100.0166" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="717.5" x2="717.5" y1="1139.9854" y2="1159.9854"/><polygon fill="#A80036" points="713.5,1149.9854,717.5,1159.9854,721.5,1149.9854,717.5,1153.9854" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1292.5" x2="1292.5" y1="1139.9854" y2="1159.9854"/><polygon fill="#A80036" points="1288.5,1149.9854,1292.5,1159.9854,1296.5,1149.9854,1292.5,1153.9854" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="969" x2="969" y1="1019.3174" y2="1080.0166"/><polygon fill="#A80036" points="965,1070.0166,969,1080.0166,973,1070.0166,969,1074.0166" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1051" x2="1564" y1="1007.3174" y2="1007.3174"/><polygon fill="#A80036" points="1560,1104.8525,1564,1114.8525,1568,1104.8525,1564,1108.8525" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1564" x2="1564" y1="1007.3174" y2="1222.1807"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1564" x2="981" y1="1222.1807" y2="1222.1807"/><polygon fill="#A80036" points="991,1218.1807,981,1222.1807,991,1226.1807,987,1222.1807" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="969" x2="969" y1="1165.9854" y2="1210.1807"/><polygon fill="#A80036" points="965,1200.1807,969,1210.1807,973,1200.1807,969,1204.1807" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1752.75" x2="1752.75" y1="1077.8682" y2="1097.8682"/><polygon fill="#A80036" points="1748.75,1087.8682,1752.75,1097.8682,1756.75,1087.8682,1752.75,1091.8682" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2085.75" x2="2085.75" y1="1077.8682" y2="1097.8682"/><polygon fill="#A80036" points="2081.75,1087.8682,2085.75,1097.8682,2089.75,1087.8682,2085.75,1091.8682" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1752.75" x2="1752.75" y1="1131.8369" y2="1151.8369"/><polygon fill="#A80036" points="1748.75,1141.8369,1752.75,1151.8369,1756.75,1141.8369,1752.75,1145.8369" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2085.75" x2="2085.75" y1="1131.8369" y2="1151.8369"/><polygon fill="#A80036" points="2081.75,1141.8369,2085.75,1151.8369,2089.75,1141.8369,2085.75,1145.8369" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2862" x2="2862" y1="1056.4189" y2="1093.2236"/><polygon fill="#A80036" points="2858,1083.2236,2862,1093.2236,2866,1083.2236,2862,1087.2236" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2862" x2="2862" y1="1127.1924" y2="1139.1924"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2862" x2="2977" y1="1139.1924" y2="1139.1924"/><polygon fill="#A80036" points="2973,1101.4033,2977,1091.4033,2981,1101.4033,2977,1097.4033" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2977" x2="2977" y1="1043.6143" y2="1139.1924"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2977" x2="2965" y1="1043.6143" y2="1043.6143"/><polygon fill="#A80036" points="2975,1039.6143,2965,1043.6143,2975,1047.6143,2971,1043.6143" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2759" x2="2747" y1="1043.6143" y2="1043.6143"/><polygon fill="#A80036" points="2743,1087.4033,2747,1097.4033,2751,1087.4033,2747,1091.4033" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2747" x2="2747" y1="1043.6143" y2="1151.1924"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2747" x2="2862" y1="1151.1924" y2="1151.1924"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2862" x2="2862" y1="1151.1924" y2="1185.9854"/><polygon fill="#A80036" points="2858,1175.9854,2862,1185.9854,2866,1175.9854,2862,1179.9854" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2862" x2="2862" y1="995.8096" y2="1030.8096"/><polygon fill="#A80036" points="2858,1020.8096,2862,1030.8096,2866,1020.8096,2862,1024.8096" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2770" x2="2704.75" y1="1197.9854" y2="1197.9854"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2704.75" x2="2704.75" y1="1197.9854" y2="1219.9854"/><polygon fill="#A80036" points="2700.75,1209.9854,2704.75,1219.9854,2708.75,1209.9854,2704.75,1213.9854" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2954" x2="3019.25" y1="1197.9854" y2="1197.9854"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="3019.25" x2="3019.25" y1="1197.9854" y2="1219.9854"/><polygon fill="#A80036" points="3015.25,1209.9854,3019.25,1219.9854,3023.25,1209.9854,3019.25,1213.9854" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2704.75" x2="2704.75" y1="1253.9541" y2="1271.9541"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2704.75" x2="2850" y1="1271.9541" y2="1271.9541"/><polygon fill="#A80036" points="2840,1267.9541,2850,1271.9541,2840,1275.9541,2844,1271.9541" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="3019.25" x2="3019.25" y1="1253.9541" y2="1271.9541"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="3019.25" x2="2874" y1="1271.9541" y2="1271.9541"/><polygon fill="#A80036" points="2884,1267.9541,2874,1271.9541,2884,1275.9541,2880,1271.9541" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2862" x2="2862" y1="914.7422" y2="961.8408"/><polygon fill="#A80036" points="2858,951.8408,2862,961.8408,2866,951.8408,2862,955.8408" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="3337.25" x2="3337.25" y1="914.7422" y2="1097.8682"/><polygon fill="#A80036" points="3333.25,1087.8682,3337.25,1097.8682,3341.25,1087.8682,3337.25,1091.8682" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2862" x2="2862" y1="1283.9541" y2="1315.9541"/><polygon fill="#A80036" points="2858,1305.9541,2862,1315.9541,2866,1305.9541,2862,1309.9541" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="3337.25" x2="3337.25" y1="1131.8369" y2="1315.9541"/><polygon fill="#A80036" points="3333.25,1305.9541,3337.25,1315.9541,3341.25,1305.9541,3337.25,1309.9541" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="969" x2="969" y1="888.7422" y2="995.3174"/><polygon fill="#A80036" points="965,985.3174,969,995.3174,973,985.3174,969,989.3174" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1915.25" x2="1915.25" y1="888.7422" y2="1071.8682"/><polygon fill="#A80036" points="1911.25,1061.8682,1915.25,1071.8682,1919.25,1061.8682,1915.25,1065.8682" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2384.75" x2="2384.75" y1="888.7422" y2="1097.8682"/><polygon fill="#A80036" points="2380.75,1087.8682,2384.75,1097.8682,2388.75,1087.8682,2384.75,1091.8682" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="3024.75" x2="3024.75" y1="888.7422" y2="908.7422"/><polygon fill="#A80036" points="3020.75,898.7422,3024.75,908.7422,3028.75,898.7422,3024.75,902.7422" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="3653.75" x2="3653.75" y1="888.7422" y2="1090.8838"/><polygon fill="#A80036" points="3649.75,1080.8838,3653.75,1090.8838,3657.75,1080.8838,3653.75,1084.8838" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="969" x2="969" y1="1234.1807" y2="1341.9541"/><polygon fill="#A80036" points="965,1331.9541,969,1341.9541,973,1331.9541,969,1335.9541" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1915.25" x2="1915.25" y1="1157.8369" y2="1341.9541"/><polygon fill="#A80036" points="1911.25,1331.9541,1915.25,1341.9541,1919.25,1331.9541,1915.25,1335.9541" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2384.75" x2="2384.75" y1="1131.8369" y2="1341.9541"/><polygon fill="#A80036" points="2380.75,1331.9541,2384.75,1341.9541,2388.75,1331.9541,2384.75,1335.9541" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="3024.75" x2="3024.75" y1="1321.9541" y2="1341.9541"/><polygon fill="#A80036" points="3020.75,1331.9541,3024.75,1341.9541,3028.75,1331.9541,3024.75,1335.9541" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="3653.75" x2="3653.75" y1="1138.8213" y2="1341.9541"/><polygon fill="#A80036" points="3649.75,1331.9541,3653.75,1341.9541,3657.75,1331.9541,3653.75,1335.9541" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2097.75" x2="2097.75" y1="862.7422" y2="882.7422"/><polygon fill="#A80036" points="2093.75,872.7422,2097.75,882.7422,2101.75,872.7422,2097.75,876.7422" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2097.75" x2="2097.75" y1="1347.9541" y2="1367.9541"/><polygon fill="#A80036" points="2093.75,1357.9541,2097.75,1367.9541,2101.75,1357.9541,2097.75,1361.9541" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2097.75" x2="2097.75" y1="1401.9229" y2="1421.9229"/><polygon fill="#A80036" points="2093.75,1411.9229,2097.75,1421.9229,2101.75,1411.9229,2097.75,1415.9229" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1154.75" x2="351" y1="512.9141" y2="512.9141"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="351" x2="351" y1="512.9141" y2="536.4805"/><polygon fill="#A80036" points="347,526.4805,351,536.4805,355,526.4805,351,530.4805" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1293.75" x2="2097.75" y1="512.9141" y2="512.9141"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2097.75" x2="2097.75" y1="512.9141" y2="534.9141"/><polygon fill="#A80036" points="2093.75,524.9141,2097.75,534.9141,2101.75,524.9141,2097.75,528.9141" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1224.25" x2="1224.25" y1="480.9141" y2="500.9141"/><polygon fill="#A80036" points="1220.25,490.9141,1224.25,500.9141,1228.25,490.9141,1224.25,494.9141" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[6ecaf98ec9628ddd784ede02e09e88d8] |
---|---|---|---|
2 | @startuml |
||
3 | |||
4 | title **µRtWare**\nurtHrtSubscriberSubscribe()\n |
||
5 | |||
6 | |||
7 | |||
8 | |||
9 | |||
10 | note |
||
11 | - - **subscriber** : urt_hrtsubscriber_t* - - |
||
12 | The HRT subscriber which shall subscribe to a topic. |
||
13 | Must not be ""NULL"". |
||
14 | - - **topic** : urt_topic_t* - - |
||
15 | The topic to subscribe to. |
||
16 | Must not be ""NULL"". |
||
17 | - - **messages** : urt_message_t* - - |
||
18 | ""NULL"" terminated list of messages to contribute to the topic. |
||
19 | Messages must not be associated to another topic. |
||
20 | Once a message has been contributed, it cannot be removed later. |
||
21 | May be ""NULL"" (no messages to contribute). |
||
22 | - - **deadline** : urt_delay_t - - |
||
23 | Maximum latency to consume messages. |
||
24 | A value of 0 indicates that latency is of no concern. |
||
25 | - - **jitter** : urt_delay_t - - |
||
26 | Maximum allowed jitter (difference between maximum and minimum latency) when consuming messages. |
||
27 | A value of 0 indicates that jitter is of no concern. |
||
28 | - - **rate** : urt_delay_t - - |
||
29 | Expected minimum rate of new messages (= mamximum time between consecutive messages). |
||
30 | A value of 0 indicates, that rate is of no concern. |
||
31 | ==== |
||
32 | - - **return** : urt_status_t - - |
||
33 | Returns ""URT_STATUS_OK"" on success. |
||
34 | Returns ""URT_STATUS_SUBSCRIBE_TOPICSET"" if the subscriber is already associated to a topic. |
||
35 | endnote |
||
36 | |||
37 | |||
38 | start |
||
39 | if (Is topic already set?) then (yes) |
||
40 | stop |
||
41 | note |
||
42 | Returns ""URT_STATUS_SUBSCRIBE_TOPICSET"". |
||
43 | endnote |
||
44 | else (no) |
||
45 | fork |
||
46 | :set topic; |
||
47 | fork again |
||
48 | #EEEEEE:initialize members; |
||
49 | note #EEEEEE |
||
50 | - - urt_basesubscriber_t - - |
||
51 | .. URT_CFG_PUBSUB_PROFILING == true .. |
||
52 | * **sumLatencies** ← 0 |
||
53 | * **numMessagesReceived** ← 0 |
||
54 | - - urt_hrtsubscriber_t - - |
||
55 | .. URT_CFG_PUBSUB_QOS_DEADLINECHECKS == true .. |
||
56 | * **deadlineOffset** ← deadline |
||
57 | .. URT_CFG_PUBSUB_QOS_JITTERCHECKS == true .. |
||
58 | * **maxJitter** ← jitter |
||
59 | .. URT_CFG_PUBSUB_QOS_JITTERCHECKS == true || URT_CFG_PUBSUB_PROFILING == true .. |
||
60 | * **minLatency** ← 0xF..F |
||
61 | * **maxLatency** ← 0 |
||
62 | .. URT_CFG_PUBSUB_QOS_RATECHECKS == true .. |
||
63 | * **expectedRate** ← rate |
||
64 | endnote |
||
65 | endfork |
||
66 | :lock topic; |
||
67 | fork |
||
68 | if (Messages to contribute?) then (yes) |
||
69 | partition "contribute messages" { |
||
70 | fork |
||
71 | :set ""next"" pointer of last message to contribute to the message after the topic's latest message; |
||
72 | fork again |
||
73 | :set ""next"" pointer of topic's latest message to first message to contribute; |
||
74 | endfork |
||
75 | } |
||
76 | else (no) |
||
77 | endif |
||
78 | fork again |
||
79 | fork |
||
80 | :set message pointer to topic's latest message; |
||
81 | fork again |
||
82 | :copy timestamp from topic's latest message; |
||
83 | endfork |
||
84 | fork again |
||
85 | :register to topic's event source; |
||
86 | fork again |
||
87 | fork |
||
88 | partition "//URT_CFG_PUBSUB_QOS_RATECHECKS = true//" #EEEEEE { |
||
89 | #EEEEEE:access first element of topic's list of HRT subscribers; |
||
90 | while (Subscriber is not ""NULL""\nand its ""expectedRate"" is lower?) is (yes) |
||
91 | #EEEEEE:proceed to next subscriber; |
||
92 | endwhile (no) |
||
93 | if (Current subscriber is ""NULL""?) then (yes) |
||
94 | #EEEEEE:append self to topic's list of HRT subscribers; |
||
95 | else (no) |
||
96 | #EEEEEE:insert self in fron of current HRT subscriber; |
||
97 | endif |
||
98 | } |
||
99 | fork again |
||
100 | :increment topic's counter of HRT subscribers; |
||
101 | endfork |
||
102 | fork again |
||
103 | #EEEEEE:..//URT_CFG_PUBSUB_PROFILING == true//..\nincrement counter of subscribers (@topic); |
||
104 | endfork |
||
105 | :unlock topic; |
||
106 | stop |
||
107 | note |
||
108 | Returns ""URT_STATUS_OK"". |
||
109 | endnote |
||
110 | endif |
||
111 | |||
112 | |||
113 | @enduml |
||
114 | |||
115 | PlantUML version 1.2020.00(Sat Jan 11 13:30:53 CET 2020) |
||
116 | (GPL source distribution) |
||
117 | Java Runtime: OpenJDK Runtime Environment |
||
118 | JVM: OpenJDK 64-Bit Server VM |
||
119 | Java Version: 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 |
||
120 | Operating System: Linux |
||
121 | Default Encoding: UTF-8 |
||
122 | Language: en |
||
123 | Country: US |
||
124 | --></g></svg> |