urtware / doc / activitydiagrams / subscriber / hrtsubscriber / urtHrtSubscriberSubscribe.svg @ 33aa05c5
History | View | Annotate | Download (48.31 KB)
1 | 2d315870 | Thomas Schöpping | <?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="1457px" preserveAspectRatio="none" style="width:3826px;height:1457px;" version="1.1" viewBox="0 0 3826 1457" width="3826px" zoomAndPan="magnify"><defs><filter height="300%" id="f11zlis2rhyaec" 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="1867.75" y="26.708">µRtWare</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="247" x="1788.75" y="47.6611">urtHrtSubscriberSubscribe()</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="0" x="1915.25" y="68.6143"/><path d="M875.5,72.8594 L875.5,440.9141 L1575.5,440.9141 L1575.5,82.8594 L1565.5,72.8594 L875.5,72.8594 " fill="#FBFB77" filter="url(#f11zlis2rhyaec)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1565.5,72.8594 L1565.5,82.8594 L1575.5,82.8594 L1565.5,72.8594 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="875.5" x2="1112.5" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1116.5" y="89.4263"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="78" x="1116.5" y="89.4263">subscriber</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="136" x="1198.5" y="89.4263">: urt_hrtsubscriber_t*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1338.5" x2="1575.5" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="327" x="881.5" 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="881.5" y="120.1919">Must not be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="961.5" y="120.1919">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="993.5" y="120.1919">.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="875.5" x2="1159.5" y1="130.8242" y2="130.8242"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1163.5" y="134.8247"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="37" x="1163.5" y="134.8247">topic</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="83" x="1204.5" y="134.8247">: urt_topic_t*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1291.5" x2="1575.5" y1="130.8242" y2="130.8242"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="161" x="881.5" y="150.4575">The topic to subscribe to.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="76" x="881.5" y="165.5903">Must not be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="961.5" y="165.5903">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="993.5" y="165.5903">.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="875.5" x2="1126.5" y1="176.2227" y2="176.2227"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1130.5" y="180.2231"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="75" x="1130.5" y="180.2231">messages</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="111" x="1209.5" y="180.2231">: urt_message_t*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1324.5" x2="1575.5" y1="176.2227" y2="176.2227"/><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="881.5" y="195.856">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="346" x="917.5" 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="881.5" 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="881.5" 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="881.5" y="241.2544">May be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="931.5" y="241.2544">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="186" x="967.5" y="241.2544">(no messages to contribute).</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="875.5" x2="1148" y1="251.8867" y2="251.8867"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1152" y="255.8872"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="64" x="1152" y="255.8872">deadline</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="79" x="1220" y="255.8872">: urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1303" x2="1575.5" y1="251.8867" y2="251.8867"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="267" x="881.5" y="271.52">Maximum latency to consume messages.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="325" x="881.5" y="286.6528">A value of 0 indicates that latency is of no concern.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="875.5" x2="1162.5" y1="297.2852" y2="297.2852"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1166.5" y="301.2856"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="35" x="1166.5" y="301.2856">jitter</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="79" x="1205.5" y="301.2856">: urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1288.5" x2="1575.5" y1="297.2852" y2="297.2852"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="679" x="881.5" 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="881.5" y="332.0513">A value of 0 indicates that jitter is of no concern.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="875.5" x2="1165" y1="342.6836" y2="342.6836"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1169" y="346.6841"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="30" x="1169" y="346.6841">rate</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="79" x="1203" y="346.6841">: urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1286" x2="1575.5" y1="342.6836" y2="342.6836"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="621" x="881.5" 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="881.5" y="377.4497">A value of 0 indicates, that rate is of no concern.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="875.5" x2="1575.5" y1="385.5156" y2="385.5156"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="875.5" x2="1575.5" y1="387.5156" y2="387.5156"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="875.5" x2="1154.5" y1="398.082" y2="398.082"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1158.5" y="402.0825"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="45" x="1158.5" y="402.0825">return</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="85" x="1207.5" y="402.0825">: urt_status_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1296.5" x2="1575.5" y1="398.082" y2="398.082"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="881.5" y="417.7153">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="934.5" y="417.7153">URT_STATUS_OK</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="75" x="1042.5" y="417.7153">on success.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="881.5" y="432.8481">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="232" x="934.5" y="432.8481">URT_STATUS_SUBSCRIBE_TOPICSET</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="308" x="1170.5" y="432.8481">if the subscriber is already associated to a topic.</text><ellipse cx="1225.5" cy="470.9141" fill="#000000" filter="url(#f11zlis2rhyaec)" rx="10" ry="10" style="stroke: none; stroke-width: 1.0;"/><polygon fill="#FEFECE" filter="url(#f11zlis2rhyaec)" points="1168,500.9141,1283,500.9141,1295,512.9141,1283,524.9141,1168,524.9141,1156,512.9141,1168,500.9141" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="115" x="1168" y="516.7222">Is topic already set?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="1136" y="510.3198">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="1295" 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(#f11zlis2rhyaec)" 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(#f11zlis2rhyaec)" 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(#f11zlis2rhyaec)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="884" x="1659.5" y="534.9141"/><rect fill="#FEFECE" filter="url(#f11zlis2rhyaec)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="75" x="1673.5" y="654.8594"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="55" x="1683.5" y="675.998">set topic</text><path d="M1776.5,560.9141 L1776.5,782.7734 A0,0 0 0 0 1776.5,782.7734 L2378.5,782.7734 A0,0 0 0 0 2378.5,782.7734 L2378.5,675.8438 L2398.5,671.8438 L2378.5,667.8438 L2378.5,570.9141 L2368.5,560.9141 L1776.5,560.9141 A0,0 0 0 0 1776.5,560.9141 " fill="#EEEEEE" filter="url(#f11zlis2rhyaec)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M2368.5,560.9141 L2368.5,570.9141 L2378.5,570.9141 L2368.5,560.9141 " fill="#EEEEEE" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="1776.5" x2="2006.5" y1="573.4805" y2="573.4805"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="134" x="2010.5" y="577.481">urt_basesubscriber_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="2148.5" x2="2378.5" y1="573.4805" y2="573.4805"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1776.5" x2="1949" y1="588.6133" y2="588.6133"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="249" x="1953" y="592.6138">URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="2206" x2="2378.5" y1="588.6133" y2="588.6133"/><ellipse cx="1788" 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="1793.5" y="608.2466">sumLatencies</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="23" x="1898.5" y="608.2466">← 0</text><ellipse cx="1788" 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="1793.5" y="623.3794">numMessagesReceived</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="23" x="1970.5" y="623.3794">← 0</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1776.5" x2="2013" y1="634.0117" y2="634.0117"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="121" x="2017" y="638.0122">urt_hrtsubscriber_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="2142" x2="2378.5" y1="634.0117" y2="634.0117"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1776.5" x2="1905" y1="649.1445" y2="649.1445"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="337" x="1909" 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="2250" x2="2378.5" y1="649.1445" y2="649.1445"/><ellipse cx="1788" 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="1793.5" y="668.7778">deadlineOffset</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="69" x="1907.5" y="668.7778">← deadline</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1776.5" x2="1919.5" y1="679.4102" y2="679.4102"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="308" x="1923.5" 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="2235.5" x2="2378.5" y1="679.4102" y2="679.4102"/><ellipse cx="1788" 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="1793.5" y="699.0435">maxJitter</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="44" x="1863.5" y="699.0435">← jitter</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1776.5" x2="1787" y1="709.6758" y2="709.6758"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="573" x="1791" 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="2368" x2="2378.5" y1="709.6758" y2="709.6758"/><ellipse cx="1788" 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="1793.5" y="729.3091">minLatency</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="11" x="1881.5" y="729.3091">←</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="144" x="1896.5" y="729.3091">URT_DELAY_INFINITE</text><ellipse cx="1788" 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="1793.5" y="744.4419">maxLatency</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="11" x="1885.5" y="744.4419">←</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="152" x="1900.5" y="744.4419">URT_DELAY_IMMEDIATE</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1776.5" x2="1921.5" y1="755.0742" y2="755.0742"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="304" x="1925.5" 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="2233.5" x2="2378.5" y1="755.0742" y2="755.0742"/><ellipse cx="1788" 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="1793.5" y="774.7075">expectedRate</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="41" x="1900.5" y="774.7075">← rate</text><rect fill="#EEEEEE" filter="url(#f11zlis2rhyaec)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="131" x="2398.5" y="654.8594"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="111" x="2408.5" y="675.998">initialize members</text><rect fill="#000000" filter="url(#f11zlis2rhyaec)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="884" x="1659.5" y="802.7734"/><rect fill="#FEFECE" filter="url(#f11zlis2rhyaec)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="80" x="2061.5" y="828.7734"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="60" x="2071.5" y="849.9121">lock topic</text><rect fill="#000000" filter="url(#f11zlis2rhyaec)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="3443.5" x="372" y="882.7422"/><rect fill="#FFFFFF" filter="url(#f11zlis2rhyaec)" 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(#f11zlis2rhyaec)" 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(#f11zlis2rhyaec)" 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(#f11zlis2rhyaec)" 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(#f11zlis2rhyaec)" 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(#f11zlis2rhyaec)" 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(#f11zlis2rhyaec)" 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(#f11zlis2rhyaec)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="664" x="1585.5" y="1071.8682"/><rect fill="#FEFECE" filter="url(#f11zlis2rhyaec)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="313" x="1597.5" y="1097.8682"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="293" x="1607.5" y="1119.0068">set message pointer to topic's latest message</text><rect fill="#FEFECE" filter="url(#f11zlis2rhyaec)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="297" x="1938.5" y="1097.8682"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="277" x="1948.5" y="1119.0068">copy timestamp from topic's latest message</text><rect fill="#000000" filter="url(#f11zlis2rhyaec)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="664" x="1585.5" y="1151.8369"/><rect fill="#FEFECE" filter="url(#f11zlis2rhyaec)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="217" x="2277.5" y="1097.8682"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="197" x="2287.5" y="1119.0068">register to topic's event source</text><rect fill="#000000" filter="url(#f11zlis2rhyaec)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="984" x="2522.5" y="908.7422"/><rect fill="#EEEEEE" filter="url(#f11zlis2rhyaec)" height="370.4102" style="stroke: #000000; stroke-width: 2.0;" width="646" x="2536.5" y="925.5439"/><path d="M2864.5,926.5439 L2864.5,934.8408 L2854.5,944.8408 L2536.5,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="2539.5" y="939.5391">URT_CFG_PUBSUB_QOS_RATECHECKS = true</text><rect fill="#EEEEEE" filter="url(#f11zlis2rhyaec)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="351" x="2689" y="961.8408"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="331" x="2699" y="982.9795">access first element of topic's list of HRT subscribers</text><rect fill="#EEEEEE" filter="url(#f11zlis2rhyaec)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="190" x="2769.5" y="1093.2236"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="170" x="2779.5" y="1114.3623">proceed to next subscriber</text><polygon fill="#FEFECE" filter="url(#f11zlis2rhyaec)" points="2773.5,1030.8096,2955.5,1030.8096,2967.5,1043.6143,2955.5,1056.4189,2773.5,1056.4189,2761.5,1043.6143,2773.5,1030.8096" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="2868.5" y="1066.6294">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="98" x="2773.5" y="1041.02">Subscriber is not</text><text fill="#000000" font-family="monospace" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="28" x="2875.5" y="1041.02">NULL</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="39" x="2773.5" y="1053.8247">and its</text><text fill="#000000" font-family="monospace" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="84" x="2816.5" y="1053.8247">expectedRate</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="51" x="2904.5" y="1053.8247">is lower?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="2747.5" y="1041.02">no</text><polygon fill="#FEFECE" filter="url(#f11zlis2rhyaec)" points="2784.5,1185.9854,2944.5,1185.9854,2956.5,1197.9854,2944.5,1209.9854,2784.5,1209.9854,2772.5,1197.9854,2784.5,1185.9854" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="122" x="2784.5" y="1201.7935">Current subscriber is</text><text fill="#000000" font-family="monospace" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="28" x="2910.5" y="1201.7935">NULL</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="6" x="2938.5" y="1201.7935">?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="2752.5" y="1195.3911">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="2956.5" y="1195.3911">no</text><rect fill="#EEEEEE" filter="url(#f11zlis2rhyaec)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="299" x="2556.5" y="1219.9854"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="279" x="2566.5" y="1241.124">append self to topic's list of HRT subscribers</text><rect fill="#EEEEEE" filter="url(#f11zlis2rhyaec)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="295" x="2875.5" y="1219.9854"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="275" x="2885.5" y="1241.124">insert self in front of current HRT subscriber</text><polygon fill="#FEFECE" filter="url(#f11zlis2rhyaec)" points="2864.5,1259.9541,2876.5,1271.9541,2864.5,1283.9541,2852.5,1271.9541,2864.5,1259.9541" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#FEFECE" filter="url(#f11zlis2rhyaec)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="302" x="3192.5" y="1097.8682"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="282" x="3202.5" y="1119.0068">increment topic's counter of HRT subscribers</text><rect fill="#000000" filter="url(#f11zlis2rhyaec)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="984" x="2522.5" y="1315.9541"/><rect fill="#EEEEEE" filter="url(#f11zlis2rhyaec)" height="47.9375" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="287" x="3516.5" y="1090.8838"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="3516.5" x2="3544" y1="1107.8682" y2="1107.8682"/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="232" x="3544" y="1111.5225">URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="3776" x2="3803.5" y1="1107.8682" y2="1107.8682"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="267" x="3526.5" y="1125.9912">increment counter of subscribers (@topic)</text><rect fill="#000000" filter="url(#f11zlis2rhyaec)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="3443.5" x="372" y="1341.9541"/><rect fill="#FEFECE" filter="url(#f11zlis2rhyaec)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="96" x="2053.5" y="1367.9541"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="76" x="2063.5" y="1389.0928">unlock topic</text><path d="M1888.5,1420.3564 L1888.5,1445.4893 A0,0 0 0 0 1888.5,1445.4893 L2070.5,1445.4893 A0,0 0 0 0 2070.5,1445.4893 L2070.5,1438.3564 L2090.5,1432.9229 L2070.5,1430.3564 L2070.5,1430.3564 L2060.5,1420.3564 L1888.5,1420.3564 A0,0 0 0 0 1888.5,1420.3564 " fill="#FBFB77" filter="url(#f11zlis2rhyaec)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M2060.5,1420.3564 L2060.5,1430.3564 L2070.5,1430.3564 L2060.5,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="1894.5" y="1437.4233">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="1947.5" y="1437.4233">URT_STATUS_OK</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="2051.5" y="1437.4233">.</text><ellipse cx="2101.5" cy="1432.9229" fill="#FFFFFF" filter="url(#f11zlis2rhyaec)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="2101.5" 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="1225.5" x2="1225.5" y1="440.9141" y2="460.9141"/><polygon fill="#A80036" points="1221.5,450.9141,1225.5,460.9141,1229.5,450.9141,1225.5,454.9141" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1711" x2="1711" y1="540.9141" y2="654.8594"/><polygon fill="#A80036" points="1707,644.8594,1711,654.8594,1715,644.8594,1711,648.8594" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2464" x2="2464" y1="540.9141" y2="654.8594"/><polygon fill="#A80036" points="2460,644.8594,2464,654.8594,2468,644.8594,2464,648.8594" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1711" x2="1711" y1="688.8281" y2="802.7734"/><polygon fill="#A80036" points="1707,792.7734,1711,802.7734,1715,792.7734,1711,796.7734" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2464" x2="2464" y1="688.8281" y2="802.7734"/><polygon fill="#A80036" points="2460,792.7734,2464,802.7734,2468,792.7734,2464,796.7734" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2101.5" x2="2101.5" y1="808.7734" y2="828.7734"/><polygon fill="#A80036" points="2097.5,818.7734,2101.5,828.7734,2105.5,818.7734,2101.5,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="1754" x2="1754" y1="1077.8682" y2="1097.8682"/><polygon fill="#A80036" points="1750,1087.8682,1754,1097.8682,1758,1087.8682,1754,1091.8682" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2087" x2="2087" y1="1077.8682" y2="1097.8682"/><polygon fill="#A80036" points="2083,1087.8682,2087,1097.8682,2091,1087.8682,2087,1091.8682" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1754" x2="1754" y1="1131.8369" y2="1151.8369"/><polygon fill="#A80036" points="1750,1141.8369,1754,1151.8369,1758,1141.8369,1754,1145.8369" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2087" x2="2087" y1="1131.8369" y2="1151.8369"/><polygon fill="#A80036" points="2083,1141.8369,2087,1151.8369,2091,1141.8369,2087,1145.8369" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2864.5" x2="2864.5" y1="1056.4189" y2="1093.2236"/><polygon fill="#A80036" points="2860.5,1083.2236,2864.5,1093.2236,2868.5,1083.2236,2864.5,1087.2236" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2864.5" x2="2864.5" y1="1127.1924" y2="1139.1924"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2864.5" x2="2979.5" y1="1139.1924" y2="1139.1924"/><polygon fill="#A80036" points="2975.5,1101.4033,2979.5,1091.4033,2983.5,1101.4033,2979.5,1097.4033" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2979.5" x2="2979.5" y1="1043.6143" y2="1139.1924"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2979.5" x2="2967.5" y1="1043.6143" y2="1043.6143"/><polygon fill="#A80036" points="2977.5,1039.6143,2967.5,1043.6143,2977.5,1047.6143,2973.5,1043.6143" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2761.5" x2="2749.5" y1="1043.6143" y2="1043.6143"/><polygon fill="#A80036" points="2745.5,1087.4033,2749.5,1097.4033,2753.5,1087.4033,2749.5,1091.4033" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2749.5" x2="2749.5" y1="1043.6143" y2="1151.1924"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2749.5" x2="2864.5" y1="1151.1924" y2="1151.1924"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2864.5" x2="2864.5" y1="1151.1924" y2="1185.9854"/><polygon fill="#A80036" points="2860.5,1175.9854,2864.5,1185.9854,2868.5,1175.9854,2864.5,1179.9854" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2864.5" x2="2864.5" y1="995.8096" y2="1030.8096"/><polygon fill="#A80036" points="2860.5,1020.8096,2864.5,1030.8096,2868.5,1020.8096,2864.5,1024.8096" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2772.5" x2="2706" y1="1197.9854" y2="1197.9854"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2706" x2="2706" y1="1197.9854" y2="1219.9854"/><polygon fill="#A80036" points="2702,1209.9854,2706,1219.9854,2710,1209.9854,2706,1213.9854" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2956.5" x2="3023" y1="1197.9854" y2="1197.9854"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="3023" x2="3023" y1="1197.9854" y2="1219.9854"/><polygon fill="#A80036" points="3019,1209.9854,3023,1219.9854,3027,1209.9854,3023,1213.9854" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2706" x2="2706" y1="1253.9541" y2="1271.9541"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2706" x2="2852.5" y1="1271.9541" y2="1271.9541"/><polygon fill="#A80036" points="2842.5,1267.9541,2852.5,1271.9541,2842.5,1275.9541,2846.5,1271.9541" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="3023" x2="3023" y1="1253.9541" y2="1271.9541"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="3023" x2="2876.5" y1="1271.9541" y2="1271.9541"/><polygon fill="#A80036" points="2886.5,1267.9541,2876.5,1271.9541,2886.5,1275.9541,2882.5,1271.9541" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2864.5" x2="2864.5" y1="914.7422" y2="961.8408"/><polygon fill="#A80036" points="2860.5,951.8408,2864.5,961.8408,2868.5,951.8408,2864.5,955.8408" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="3343.5" x2="3343.5" y1="914.7422" y2="1097.8682"/><polygon fill="#A80036" points="3339.5,1087.8682,3343.5,1097.8682,3347.5,1087.8682,3343.5,1091.8682" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2864.5" x2="2864.5" y1="1283.9541" y2="1315.9541"/><polygon fill="#A80036" points="2860.5,1305.9541,2864.5,1315.9541,2868.5,1305.9541,2864.5,1309.9541" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="3343.5" x2="3343.5" y1="1131.8369" y2="1315.9541"/><polygon fill="#A80036" points="3339.5,1305.9541,3343.5,1315.9541,3347.5,1305.9541,3343.5,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="1916.5" x2="1916.5" y1="888.7422" y2="1071.8682"/><polygon fill="#A80036" points="1912.5,1061.8682,1916.5,1071.8682,1920.5,1061.8682,1916.5,1065.8682" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2386" x2="2386" y1="888.7422" y2="1097.8682"/><polygon fill="#A80036" points="2382,1087.8682,2386,1097.8682,2390,1087.8682,2386,1091.8682" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="3028.5" x2="3028.5" y1="888.7422" y2="908.7422"/><polygon fill="#A80036" points="3024.5,898.7422,3028.5,908.7422,3032.5,898.7422,3028.5,902.7422" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="3660" x2="3660" y1="888.7422" y2="1090.8838"/><polygon fill="#A80036" points="3656,1080.8838,3660,1090.8838,3664,1080.8838,3660,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="1916.5" x2="1916.5" y1="1157.8369" y2="1341.9541"/><polygon fill="#A80036" points="1912.5,1331.9541,1916.5,1341.9541,1920.5,1331.9541,1916.5,1335.9541" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2386" x2="2386" y1="1131.8369" y2="1341.9541"/><polygon fill="#A80036" points="2382,1331.9541,2386,1341.9541,2390,1331.9541,2386,1335.9541" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="3028.5" x2="3028.5" y1="1321.9541" y2="1341.9541"/><polygon fill="#A80036" points="3024.5,1331.9541,3028.5,1341.9541,3032.5,1331.9541,3028.5,1335.9541" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="3660" x2="3660" y1="1138.8213" y2="1341.9541"/><polygon fill="#A80036" points="3656,1331.9541,3660,1341.9541,3664,1331.9541,3660,1335.9541" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2101.5" x2="2101.5" y1="862.7422" y2="882.7422"/><polygon fill="#A80036" points="2097.5,872.7422,2101.5,882.7422,2105.5,872.7422,2101.5,876.7422" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2101.5" x2="2101.5" y1="1347.9541" y2="1367.9541"/><polygon fill="#A80036" points="2097.5,1357.9541,2101.5,1367.9541,2105.5,1357.9541,2101.5,1361.9541" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2101.5" x2="2101.5" y1="1401.9229" y2="1421.9229"/><polygon fill="#A80036" points="2097.5,1411.9229,2101.5,1421.9229,2105.5,1411.9229,2101.5,1415.9229" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1156" 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="1295" x2="2101.5" y1="512.9141" y2="512.9141"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2101.5" x2="2101.5" y1="512.9141" y2="534.9141"/><polygon fill="#A80036" points="2097.5,524.9141,2101.5,534.9141,2105.5,524.9141,2101.5,528.9141" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1225.5" x2="1225.5" y1="480.9141" y2="500.9141"/><polygon fill="#A80036" points="1221.5,490.9141,1225.5,500.9141,1229.5,490.9141,1225.5,494.9141" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[f1c919d7134f02802ff4f8cb6528145f] |
---|---|---|---|
2 | dd31cb03 | Thomas Schöpping | @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 | 2d315870 | Thomas Schöpping | * **minLatency** ← ""URT_DELAY_INFINITE"" |
61 | * **maxLatency** ← ""URT_DELAY_IMMEDIATE"" |
||
62 | dd31cb03 | Thomas Schöpping | .. 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 | 2d315870 | Thomas Schöpping | #EEEEEE:insert self in front of current HRT subscriber; |
97 | dd31cb03 | Thomas Schöpping | 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 | 2d315870 | Thomas Schöpping | Java Version: 11.0.7+10-post-Ubuntu-2ubuntu218.04 |
120 | dd31cb03 | Thomas Schöpping | Operating System: Linux |
121 | Default Encoding: UTF-8 |
||
122 | Language: en |
||
123 | Country: US |
||
124 | --></g></svg> |