Statistics
| Branch: | Revision:

urtware / doc / activitydiagrams / subscriber / hrtsubscriber / urtHrtSubscriberSubscribe.svg @ 2d315870

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>