Statistics
| Branch: | Revision:

urtware / doc / statediagrams / subscriber / receive.svg @ 6ebd2388

History | View | Annotate | Download (41.355 KB)

1
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="1377px" preserveAspectRatio="none" style="width:1968px;height:1377px;" version="1.1" viewBox="0 0 1968 1377" width="1968px" zoomAndPan="magnify"><defs><filter height="300%" id="f13ufdpbbhx79" 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="938.5" y="26.708">µRtWare</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="256" x="855" y="47.6611">urtSubscriberFetchMessage()</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="0" x="986" y="68.6143"/><path d="M1046,72.8594 L1046,97.9922 A0,0 0 0 0 1046,97.9922 L1161,97.9922 A0,0 0 0 0 1161,97.9922 L1161,90.8594 L1181,85.4258 L1161,82.8594 L1161,82.8594 L1151,72.8594 L1046,72.8594 A0,0 0 0 0 1046,72.8594 " fill="#FBFB77" filter="url(#f13ufdpbbhx79)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1151,72.8594 L1151,82.8594 L1161,82.8594 L1151,72.8594 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="94" x="1052" y="89.9263">event received</text><ellipse cx="1191" cy="85.4258" fill="#000000" filter="url(#f13ufdpbbhx79)" rx="10" ry="10" style="stroke: none; stroke-width: 1.0;"/><path d="M748,122.4102 L748,147.543 A0,0 0 0 0 748,147.543 L1131,147.543 A0,0 0 0 0 1131,147.543 L1131,140.4102 L1151,134.9766 L1131,132.4102 L1131,132.4102 L1121,122.4102 L748,122.4102 A0,0 0 0 0 748,122.4102 " fill="#FBFB77" filter="url(#f13ufdpbbhx79)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1121,122.4102 L1121,132.4102 L1131,132.4102 L1121,122.4102 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="362" x="754" y="139.4771">The message list is part of the topic and must be locked.</text><rect fill="#FEFECE" filter="url(#f13ufdpbbhx79)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="80" x="1151" y="117.9922"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="60" x="1161" y="139.1309">lock topic</text><polygon fill="#FEFECE" filter="url(#f13ufdpbbhx79)" points="1137.5,171.9609,1244.5,171.9609,1256.5,183.9609,1244.5,195.9609,1137.5,195.9609,1125.5,183.9609,1137.5,171.9609" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="107" x="1137.5" y="187.769">Is HRT subscriber?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="1105.5" y="181.3667">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="1256.5" y="181.3667">no</text><rect fill="#FEFECE" filter="url(#f13ufdpbbhx79)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="137" x="595" y="205.9609"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="117" x="605" y="227.0996">lock next message</text><rect fill="#FFFFFF" filter="url(#f13ufdpbbhx79)" height="471.2388" style="stroke: #000000; stroke-width: 2.0;" width="1304" x="10" y="306.4419"/><path d="M124,307.4419 L124,315.7388 L114,325.7388 L10,325.7388 " fill="none" style="stroke: #000000; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="104" x="13" y="320.437">iterate to latest</text><path d="M372,347.1567 L372,372.2896 A0,0 0 0 0 372,372.2896 L575,372.2896 A0,0 0 0 0 575,372.2896 L575,365.1567 L595,359.7231 L575,357.1567 L575,357.1567 L565,347.1567 L372,347.1567 A0,0 0 0 0 372,347.1567 " fill="#FBFB77" filter="url(#f13ufdpbbhx79)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M565,347.1567 L565,357.1567 L575,357.1567 L565,347.1567 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="182" x="378" y="364.2236">locked two messaged ahead</text><rect fill="#FEFECE" filter="url(#f13ufdpbbhx79)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="137" x="595" y="342.7388"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="117" x="605" y="363.8774">lock next message</text><rect fill="#000000" filter="url(#f13ufdpbbhx79)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="1239" x="44" y="457.5122"/><rect fill="#000000" filter="url(#f13ufdpbbhx79)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="1046" x="58" y="483.5122"/><rect fill="#FEFECE" filter="url(#f13ufdpbbhx79)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="304" x="72" y="509.5122"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="284" x="82" y="530.6509">decremenet HRT counter of current message</text><path d="M404,513.9302 L404,539.063 A0,0 0 0 0 404,539.063 L893,539.063 A0,0 0 0 0 893,539.063 L893,531.9302 L913,526.4966 L893,523.9302 L893,523.9302 L883,513.9302 L404,513.9302 A0,0 0 0 0 404,513.9302 " fill="#FBFB77" filter="url(#f13ufdpbbhx79)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M883,513.9302 L883,523.9302 L893,523.9302 L883,513.9302 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="468" x="410" y="530.9971">no lock required since this timer is only accessed when the topic is locked</text><rect fill="#FEFECE" filter="url(#f13ufdpbbhx79)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="177" x="913" y="509.5122"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="157" x="923" y="530.6509">update QoS timer (delay)</text><rect fill="#000000" filter="url(#f13ufdpbbhx79)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="1046" x="58" y="563.481"/><rect fill="#FEFECE" filter="url(#f13ufdpbbhx79)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="172" x="495" y="600.3364"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="152" x="505" y="621.4751">unlock current message</text><rect fill="#FEFECE" filter="url(#f13ufdpbbhx79)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="137" x="1132" y="543.9966"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="117" x="1142" y="565.1353">lock next message</text><rect fill="#000000" filter="url(#f13ufdpbbhx79)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="1239" x="44" y="654.3052"/><polygon fill="#FEFECE" filter="url(#f13ufdpbbhx79)" points="509.5,396.7075,817.5,396.7075,829.5,408.7075,817.5,420.7075,509.5,420.7075,497.5,408.7075,509.5,396.7075" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="667.5" y="430.918">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="308" x="509.5" y="412.5156">Timestamp of next message is younger than current?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="483.5" y="406.1133">no</text><path d="M304,717.415 L304,757.6807 A0,0 0 0 0 304,757.6807 L567,757.6807 A0,0 0 0 0 567,757.6807 L567,741.5479 L587,737.5479 L567,733.5479 L567,727.415 L557,717.415 L304,717.415 A0,0 0 0 0 304,717.415 " fill="#FBFB77" filter="url(#f13ufdpbbhx79)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M557,717.415 L557,727.415 L567,727.415 L557,717.415 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="201" x="310" y="734.4819">one message ahead still locked</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="242" x="310" y="749.6147">but HRT counter not yet decremented</text><rect fill="#FEFECE" filter="url(#f13ufdpbbhx79)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="153" x="587" y="720.5635"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="133" x="597" y="741.7021">unlock next message</text><polygon fill="#FEFECE" filter="url(#f13ufdpbbhx79)" points="577,259.9297,750,259.9297,762,271.9297,750,283.9297,577,283.9297,565,271.9297,577,259.9297" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="32" x="667.5" y="294.1401">latest</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="173" x="577" y="275.7378">Fetch next or latest message?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="24" x="762" y="269.3354">next</text><polygon fill="#FEFECE" filter="url(#f13ufdpbbhx79)" points="663.5,797.6807,675.5,809.6807,663.5,821.6807,651.5,809.6807,663.5,797.6807" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#000000" filter="url(#f13ufdpbbhx79)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="1038" x="144.5" y="856.6807"/><rect fill="#FEFECE" filter="url(#f13ufdpbbhx79)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="296" x="158.5" y="882.6807"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="276" x="168.5" y="903.8193">decrement HRT counter of current message</text><path d="M482.5,887.0986 L482.5,912.2314 A0,0 0 0 0 482.5,912.2314 L971.5,912.2314 A0,0 0 0 0 971.5,912.2314 L971.5,905.0986 L991.5,899.665 L971.5,897.0986 L971.5,897.0986 L961.5,887.0986 L482.5,887.0986 A0,0 0 0 0 482.5,887.0986 " fill="#FBFB77" filter="url(#f13ufdpbbhx79)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M961.5,887.0986 L961.5,897.0986 L971.5,897.0986 L961.5,887.0986 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="468" x="488.5" y="904.1655">no lock required since this timer is only accessed when the topic is locked</text><rect fill="#FEFECE" filter="url(#f13ufdpbbhx79)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="177" x="991.5" y="882.6807"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="157" x="1001.5" y="903.8193">update QoS timer (delay)</text><rect fill="#000000" filter="url(#f13ufdpbbhx79)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="1038" x="144.5" y="936.6494"/><rect fill="#FEFECE" filter="url(#f13ufdpbbhx79)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="166" x="1635.5" y="205.9609"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="146" x="1645.5" y="227.0996">lock last read message</text><rect fill="#FFFFFF" filter="url(#f13ufdpbbhx79)" height="271.2656" style="stroke: #000000; stroke-width: 2.0;" width="406" x="1526" y="306.4419"/><path d="M1710,307.4419 L1710,315.7388 L1700,325.7388 L1526,325.7388 " fill="none" style="stroke: #000000; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="174" x="1529" y="320.437">find oldest valid message</text><rect fill="#000000" filter="url(#f13ufdpbbhx79)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="365" x="1536" y="399.7388"/><rect fill="#FEFECE" filter="url(#f13ufdpbbhx79)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="172" x="1550" y="425.7388"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="152" x="1560" y="446.8774">unlock current message</text><rect fill="#FEFECE" filter="url(#f13ufdpbbhx79)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="137" x="1750" y="425.7388"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="117" x="1760" y="446.8774">lock next message</text><rect fill="#000000" filter="url(#f13ufdpbbhx79)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="365" x="1536" y="479.7075"/><polygon fill="#FEFECE" filter="url(#f13ufdpbbhx79)" points="1718.5,342.7388,1730.5,354.7388,1718.5,366.7388,1706.5,354.7388,1718.5,342.7388" style="stroke: #A80036; stroke-width: 1.5;"/><polygon fill="#FEFECE" filter="url(#f13ufdpbbhx79)" points="1573.5,533.7075,1863.5,533.7075,1875.5,545.7075,1863.5,557.7075,1573.5,557.7075,1561.5,545.7075,1573.5,533.7075" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="290" x="1573.5" y="549.5156">while timestamp of next is younger than of current</text><polygon fill="#FEFECE" filter="url(#f13ufdpbbhx79)" points="1632.5,259.9297,1804.5,259.9297,1816.5,271.9297,1804.5,283.9297,1632.5,283.9297,1620.5,271.9297,1632.5,259.9297" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="1722.5" y="294.1401">no</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="172" x="1632.5" y="275.7378">Timestamp equals local copy?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="1816.5" y="269.3354">yes</text><polygon fill="#FEFECE" filter="url(#f13ufdpbbhx79)" points="1718.5,597.9653,1730.5,609.9653,1718.5,621.9653,1706.5,609.9653,1718.5,597.9653" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#FFFFFF" filter="url(#f13ufdpbbhx79)" height="335.6055" style="stroke: #000000; stroke-width: 2.0;" width="563" x="1366" y="703.4775"/><path d="M1480,704.4775 L1480,712.7744 L1470,722.7744 L1366,722.7744 " fill="none" style="stroke: #000000; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="104" x="1369" y="717.4727">iterate to latest</text><path d="M1428,744.1924 L1428,769.3252 A0,0 0 0 0 1428,769.3252 L1630,769.3252 A0,0 0 0 0 1630,769.3252 L1630,762.1924 L1650,756.7588 L1630,754.1924 L1630,754.1924 L1620,744.1924 L1428,744.1924 A0,0 0 0 0 1428,744.1924 " fill="#FBFB77" filter="url(#f13ufdpbbhx79)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1620,744.1924 L1620,754.1924 L1630,754.1924 L1620,744.1924 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="181" x="1434" y="761.2593">locked two messages ahead</text><rect fill="#FEFECE" filter="url(#f13ufdpbbhx79)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="137" x="1650" y="739.7744"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="117" x="1660" y="760.9131">lock next message</text><rect fill="#000000" filter="url(#f13ufdpbbhx79)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="365" x="1536" y="865.1455"/><rect fill="#FEFECE" filter="url(#f13ufdpbbhx79)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="172" x="1550" y="891.1455"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="152" x="1560" y="912.2842">unlock current message</text><rect fill="#FEFECE" filter="url(#f13ufdpbbhx79)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="137" x="1750" y="891.1455"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="117" x="1760" y="912.2842">lock next message</text><rect fill="#000000" filter="url(#f13ufdpbbhx79)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="365" x="1536" y="945.1143"/><path d="M1400,975.5322 L1400,1000.665 A0,0 0 0 0 1400,1000.665 L1622,1000.665 A0,0 0 0 0 1622,1000.665 L1622,993.5322 L1642,988.0986 L1622,985.5322 L1622,985.5322 L1612,975.5322 L1400,975.5322 A0,0 0 0 0 1400,975.5322 " fill="#FBFB77" filter="url(#f13ufdpbbhx79)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1612,975.5322 L1612,985.5322 L1622,985.5322 L1612,975.5322 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="201" x="1406" y="992.5991">one message ahead still locked</text><rect fill="#FEFECE" filter="url(#f13ufdpbbhx79)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="153" x="1642" y="971.1143"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="133" x="1652" y="992.2529">unlock next message</text><polygon fill="#FEFECE" filter="url(#f13ufdpbbhx79)" points="1564.5,804.3408,1872.5,804.3408,1884.5,816.3408,1872.5,828.3408,1564.5,828.3408,1552.5,816.3408,1564.5,804.3408" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="1722.5" y="838.5513">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="308" x="1564.5" y="820.1489">Timestamp of next message is younger then current?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="1538.5" y="813.7466">no</text><polygon fill="#FEFECE" filter="url(#f13ufdpbbhx79)" points="1632,656.9653,1805,656.9653,1817,668.9653,1805,680.9653,1632,680.9653,1620,668.9653,1632,656.9653" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="32" x="1722.5" y="691.1758">latest</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="173" x="1632" y="672.7734">Fetch next or latest message?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="24" x="1817" y="666.3711">next</text><polygon fill="#FEFECE" filter="url(#f13ufdpbbhx79)" points="1718.5,1059.083,1730.5,1071.083,1718.5,1083.083,1706.5,1071.083,1718.5,1059.083" style="stroke: #A80036; stroke-width: 1.5;"/><polygon fill="#FEFECE" filter="url(#f13ufdpbbhx79)" points="1191,1089.083,1203,1101.083,1191,1113.083,1179,1101.083,1191,1089.083" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#000000" filter="url(#f13ufdpbbhx79)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="602" x="890" y="1133.083"/><rect fill="#FEFECE" filter="url(#f13ufdpbbhx79)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="350" x="904" y="1159.083"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="330" x="914" y="1180.2217">set pointer to last message read to locked message</text><rect fill="#FEFECE" filter="url(#f13ufdpbbhx79)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="196" x="1282" y="1159.083"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="176" x="1292" y="1180.2217">copy timestamp of message</text><rect fill="#000000" filter="url(#f13ufdpbbhx79)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="602" x="890" y="1213.0518"/><rect fill="#FEFECE" filter="url(#f13ufdpbbhx79)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="122" x="1130" y="1239.0518"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="102" x="1140" y="1260.1904">unlock message</text><rect fill="#FEFECE" filter="url(#f13ufdpbbhx79)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="96" x="1143" y="1293.0205"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="76" x="1153" y="1314.1592">unlock topic</text><ellipse cx="1191" cy="1356.9893" fill="none" filter="url(#f13ufdpbbhx79)" rx="10" ry="10" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="1191.5" cy="1357.4893" fill="#000000" filter="url(#f13ufdpbbhx79)" rx="6" ry="6" style="stroke: none; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1191" x2="1191" y1="95.4258" y2="117.9922"/><polygon fill="#A80036" points="1187,107.9922,1191,117.9922,1195,107.9922,1191,111.9922" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="224" x2="224" y1="489.5122" y2="509.5122"/><polygon fill="#A80036" points="220,499.5122,224,509.5122,228,499.5122,224,503.5122" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1001.5" x2="1001.5" y1="489.5122" y2="509.5122"/><polygon fill="#A80036" points="997.5,499.5122,1001.5,509.5122,1005.5,499.5122,1001.5,503.5122" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="224" x2="224" y1="543.481" y2="563.481"/><polygon fill="#A80036" points="220,553.481,224,563.481,228,553.481,224,557.481" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1001.5" x2="1001.5" y1="543.481" y2="563.481"/><polygon fill="#A80036" points="997.5,553.481,1001.5,563.481,1005.5,553.481,1001.5,557.481" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="581" x2="581" y1="569.481" y2="600.3364"/><polygon fill="#A80036" points="577,590.3364,581,600.3364,585,590.3364,581,594.3364" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="581" x2="581" y1="463.5122" y2="483.5122"/><polygon fill="#A80036" points="577,473.5122,581,483.5122,585,473.5122,581,477.5122" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1200.5" x2="1200.5" y1="463.5122" y2="543.9966"/><polygon fill="#A80036" points="1196.5,533.9966,1200.5,543.9966,1204.5,533.9966,1200.5,537.9966" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="581" x2="581" y1="634.3052" y2="654.3052"/><polygon fill="#A80036" points="577,644.3052,581,654.3052,585,644.3052,581,648.3052" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1200.5" x2="1200.5" y1="577.9653" y2="654.3052"/><polygon fill="#A80036" points="1196.5,644.3052,1200.5,654.3052,1204.5,644.3052,1200.5,648.3052" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="663.5" x2="663.5" y1="420.7075" y2="457.5122"/><polygon fill="#A80036" points="659.5,447.5122,663.5,457.5122,667.5,447.5122,663.5,451.5122" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="663.5" x2="663.5" y1="660.3052" y2="672.3052"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="663.5" x2="1295" y1="672.3052" y2="672.3052"/><polygon fill="#A80036" points="1291,552.5786,1295,542.5786,1299,552.5786,1295,548.5786" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1295" x2="1295" y1="408.7075" y2="672.3052"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1295" x2="829.5" y1="408.7075" y2="408.7075"/><polygon fill="#A80036" points="839.5,404.7075,829.5,408.7075,839.5,412.7075,835.5,408.7075" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="497.5" x2="32" y1="408.7075" y2="408.7075"/><polygon fill="#A80036" points="28,538.5786,32,548.5786,36,538.5786,32,542.5786" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="32" x2="32" y1="408.7075" y2="684.3052"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="32" x2="663.5" y1="684.3052" y2="684.3052"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="663.5" x2="663.5" y1="684.3052" y2="720.5635"/><polygon fill="#A80036" points="659.5,710.5635,663.5,720.5635,667.5,710.5635,663.5,714.5635" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="663.5" x2="663.5" y1="376.7075" y2="396.7075"/><polygon fill="#A80036" points="659.5,386.7075,663.5,396.7075,667.5,386.7075,663.5,390.7075" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="663.5" x2="663.5" y1="283.9297" y2="342.7388"/><polygon fill="#A80036" points="659.5,332.7388,663.5,342.7388,667.5,332.7388,663.5,336.7388" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="762" x2="1324" y1="271.9297" y2="271.9297"/><polygon fill="#A80036" points="1320,527.5786,1324,537.5786,1328,527.5786,1324,531.5786" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1324" x2="1324" y1="271.9297" y2="809.6807"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1324" x2="675.5" y1="809.6807" y2="809.6807"/><polygon fill="#A80036" points="685.5,805.6807,675.5,809.6807,685.5,813.6807,681.5,809.6807" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="663.5" x2="663.5" y1="754.5322" y2="797.6807"/><polygon fill="#A80036" points="659.5,787.6807,663.5,797.6807,667.5,787.6807,663.5,791.6807" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="663.5" x2="663.5" y1="239.9297" y2="259.9297"/><polygon fill="#A80036" points="659.5,249.9297,663.5,259.9297,667.5,249.9297,663.5,253.9297" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="306.5" x2="306.5" y1="862.6807" y2="882.6807"/><polygon fill="#A80036" points="302.5,872.6807,306.5,882.6807,310.5,872.6807,306.5,876.6807" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1080" x2="1080" y1="862.6807" y2="882.6807"/><polygon fill="#A80036" points="1076,872.6807,1080,882.6807,1084,872.6807,1080,876.6807" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="306.5" x2="306.5" y1="916.6494" y2="936.6494"/><polygon fill="#A80036" points="302.5,926.6494,306.5,936.6494,310.5,926.6494,306.5,930.6494" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1080" x2="1080" y1="916.6494" y2="936.6494"/><polygon fill="#A80036" points="1076,926.6494,1080,936.6494,1084,926.6494,1080,930.6494" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="663.5" x2="663.5" y1="821.6807" y2="856.6807"/><polygon fill="#A80036" points="659.5,846.6807,663.5,856.6807,667.5,846.6807,663.5,850.6807" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1636" x2="1636" y1="405.7388" y2="425.7388"/><polygon fill="#A80036" points="1632,415.7388,1636,425.7388,1640,415.7388,1636,419.7388" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1818.5" x2="1818.5" y1="405.7388" y2="425.7388"/><polygon fill="#A80036" points="1814.5,415.7388,1818.5,425.7388,1822.5,415.7388,1818.5,419.7388" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1636" x2="1636" y1="459.7075" y2="479.7075"/><polygon fill="#A80036" points="1632,469.7075,1636,479.7075,1640,469.7075,1636,473.7075" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1818.5" x2="1818.5" y1="459.7075" y2="479.7075"/><polygon fill="#A80036" points="1814.5,469.7075,1818.5,479.7075,1822.5,469.7075,1818.5,473.7075" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1718.5" x2="1718.5" y1="366.7388" y2="399.7388"/><polygon fill="#A80036" points="1714.5,389.7388,1718.5,399.7388,1722.5,389.7388,1718.5,393.7388" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1875.5" x2="1913" y1="545.7075" y2="545.7075"/><polygon fill="#A80036" points="1909,452.7231,1913,442.7231,1917,452.7231,1913,448.7231" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1913" x2="1913" y1="354.7388" y2="545.7075"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1913" x2="1730.5" y1="354.7388" y2="354.7388"/><polygon fill="#A80036" points="1740.5,350.7388,1730.5,354.7388,1740.5,358.7388,1736.5,354.7388" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1718.5" x2="1718.5" y1="485.7075" y2="533.7075"/><polygon fill="#A80036" points="1714.5,523.7075,1718.5,533.7075,1722.5,523.7075,1718.5,527.7075" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1718.5" x2="1718.5" y1="283.9297" y2="342.7388"/><polygon fill="#A80036" points="1714.5,332.7388,1718.5,342.7388,1722.5,332.7388,1718.5,336.7388" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1816.5" x2="1942" y1="271.9297" y2="271.9297"/><polygon fill="#A80036" points="1938,424.5747,1942,434.5747,1946,424.5747,1942,428.5747" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1942" x2="1942" y1="271.9297" y2="609.9653"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1942" x2="1730.5" y1="609.9653" y2="609.9653"/><polygon fill="#A80036" points="1740.5,605.9653,1730.5,609.9653,1740.5,613.9653,1736.5,609.9653" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1718.5" x2="1718.5" y1="557.7075" y2="597.9653"/><polygon fill="#A80036" points="1714.5,587.9653,1718.5,597.9653,1722.5,587.9653,1718.5,591.9653" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1718.5" x2="1718.5" y1="239.9297" y2="259.9297"/><polygon fill="#A80036" points="1714.5,249.9297,1718.5,259.9297,1722.5,249.9297,1718.5,253.9297" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1636" x2="1636" y1="871.1455" y2="891.1455"/><polygon fill="#A80036" points="1632,881.1455,1636,891.1455,1640,881.1455,1636,885.1455" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1818.5" x2="1818.5" y1="871.1455" y2="891.1455"/><polygon fill="#A80036" points="1814.5,881.1455,1818.5,891.1455,1822.5,881.1455,1818.5,885.1455" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1636" x2="1636" y1="925.1143" y2="945.1143"/><polygon fill="#A80036" points="1632,935.1143,1636,945.1143,1640,935.1143,1636,939.1143" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1818.5" x2="1818.5" y1="925.1143" y2="945.1143"/><polygon fill="#A80036" points="1814.5,935.1143,1818.5,945.1143,1822.5,935.1143,1818.5,939.1143" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1718.5" x2="1718.5" y1="951.1143" y2="971.1143"/><polygon fill="#A80036" points="1714.5,961.1143,1718.5,971.1143,1722.5,961.1143,1718.5,965.1143" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1718.5" x2="1718.5" y1="828.3408" y2="865.1455"/><polygon fill="#A80036" points="1714.5,855.1455,1718.5,865.1455,1722.5,855.1455,1718.5,859.1455" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1718.5" x2="1718.5" y1="1005.083" y2="1015.083"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1718.5" x2="1913" y1="1015.083" y2="1015.083"/><polygon fill="#A80036" points="1909,934.2119,1913,924.2119,1917,934.2119,1913,930.2119" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1913" x2="1913" y1="816.3408" y2="1015.083"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1913" x2="1884.5" y1="816.3408" y2="816.3408"/><polygon fill="#A80036" points="1894.5,812.3408,1884.5,816.3408,1894.5,820.3408,1890.5,816.3408" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1552.5" x2="1388" y1="816.3408" y2="816.3408"/><polygon fill="#A80036" points="1384,920.2119,1388,930.2119,1392,920.2119,1388,924.2119" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1388" x2="1388" y1="816.3408" y2="1027.083"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1388" x2="1718.5" y1="1027.083" y2="1027.083"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1718.5" x2="1718.5" y1="1027.083" y2="1059.083"/><polygon fill="#A80036" points="1714.5,1049.083,1718.5,1059.083,1722.5,1049.083,1718.5,1053.083" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1718.5" x2="1718.5" y1="773.7432" y2="804.3408"/><polygon fill="#A80036" points="1714.5,794.3408,1718.5,804.3408,1722.5,794.3408,1718.5,798.3408" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1718.5" x2="1718.5" y1="680.9653" y2="739.7744"/><polygon fill="#A80036" points="1714.5,729.7744,1718.5,739.7744,1722.5,729.7744,1718.5,733.7744" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1817" x2="1939" y1="668.9653" y2="668.9653"/><polygon fill="#A80036" points="1935,871.5791,1939,881.5791,1943,871.5791,1939,875.5791" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1939" x2="1939" y1="668.9653" y2="1071.083"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1939" x2="1730.5" y1="1071.083" y2="1071.083"/><polygon fill="#A80036" points="1740.5,1067.083,1730.5,1071.083,1740.5,1075.083,1736.5,1071.083" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1718.5" x2="1718.5" y1="621.9653" y2="656.9653"/><polygon fill="#A80036" points="1714.5,646.9653,1718.5,656.9653,1722.5,646.9653,1718.5,650.9653" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1125.5" x2="663.5" y1="183.9609" y2="183.9609"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="663.5" x2="663.5" y1="183.9609" y2="205.9609"/><polygon fill="#A80036" points="659.5,195.9609,663.5,205.9609,667.5,195.9609,663.5,199.9609" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1256.5" x2="1718.5" y1="183.9609" y2="183.9609"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1718.5" x2="1718.5" y1="183.9609" y2="205.9609"/><polygon fill="#A80036" points="1714.5,195.9609,1718.5,205.9609,1722.5,195.9609,1718.5,199.9609" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="663.5" x2="663.5" y1="942.6494" y2="1101.083"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="663.5" x2="1179" y1="1101.083" y2="1101.083"/><polygon fill="#A80036" points="1169,1097.083,1179,1101.083,1169,1105.083,1173,1101.083" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1718.5" x2="1718.5" y1="1083.083" y2="1101.083"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1718.5" x2="1203" y1="1101.083" y2="1101.083"/><polygon fill="#A80036" points="1213,1097.083,1203,1101.083,1213,1105.083,1209,1101.083" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1191" x2="1191" y1="151.9609" y2="171.9609"/><polygon fill="#A80036" points="1187,161.9609,1191,171.9609,1195,161.9609,1191,165.9609" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1079" x2="1079" y1="1139.083" y2="1159.083"/><polygon fill="#A80036" points="1075,1149.083,1079,1159.083,1083,1149.083,1079,1153.083" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1380" x2="1380" y1="1139.083" y2="1159.083"/><polygon fill="#A80036" points="1376,1149.083,1380,1159.083,1384,1149.083,1380,1153.083" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1079" x2="1079" y1="1193.0518" y2="1213.0518"/><polygon fill="#A80036" points="1075,1203.0518,1079,1213.0518,1083,1203.0518,1079,1207.0518" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1380" x2="1380" y1="1193.0518" y2="1213.0518"/><polygon fill="#A80036" points="1376,1203.0518,1380,1213.0518,1384,1203.0518,1380,1207.0518" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1191" x2="1191" y1="1113.083" y2="1133.083"/><polygon fill="#A80036" points="1187,1123.083,1191,1133.083,1195,1123.083,1191,1127.083" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1191" x2="1191" y1="1219.0518" y2="1239.0518"/><polygon fill="#A80036" points="1187,1229.0518,1191,1239.0518,1195,1229.0518,1191,1233.0518" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1191" x2="1191" y1="1273.0205" y2="1293.0205"/><polygon fill="#A80036" points="1187,1283.0205,1191,1293.0205,1195,1283.0205,1191,1287.0205" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1191" x2="1191" y1="1326.9893" y2="1346.9893"/><polygon fill="#A80036" points="1187,1336.9893,1191,1346.9893,1195,1336.9893,1191,1340.9893" style="stroke: #A80036; stroke-width: 1.0;"/><!--
2
@startuml
3

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

    
6

    
7

    
8
start
9
note
10
  event received
11
endnote
12
:lock topic;
13
note
14
  The message list is part of the topic and must be locked.
15
endnote
16
if (Is HRT subscriber?) then (yes)
17
  :lock next message;
18
  if (Fetch next or latest message?) then (next)
19
  else (latest)
20
    partition "iterate to latest" {
21
      :lock next message;
22
      note
23
        locked two messaged ahead
24
      endnote
25
      while (Timestamp of next message is younger than current?) is (yes)
26
        fork
27
          fork
28
            :decremenet HRT counter of current message;
29
          fork again
30
            :update QoS timer (delay);
31
            note
32
              no lock required since this timer is only accessed when the topic is locked
33
            endnote
34
          endfork
35
          :unlock current message;
36
        fork again
37
          :lock next message;
38
        endfork
39
      endwhile (no)
40
      :unlock next message;
41
      note
42
        one message ahead still locked
43
        but HRT counter not yet decremented
44
      endnote
45
    }
46
  endif
47
  fork
48
    :decrement HRT counter of current message;
49
  fork again
50
    :update QoS timer (delay);
51
    note
52
      no lock required since this timer is only accessed when the topic is locked
53
    endnote
54
  endfork
55
else (no)
56
  :lock last read message;
57
  if (Timestamp equals local copy?) then (yes)
58
  else (no)
59
    partition "find oldest valid message" {
60
      repeat
61
        fork
62
          :unlock current message;
63
        fork again
64
          :lock next message;
65
        forkend
66
      repeat while (while timestamp of next is younger than of current)
67
    }
68
  endif
69
  if (Fetch next or latest message?) then (next)
70
  else (latest)
71
    partition "iterate to latest" {
72
      :lock next message;
73
      note
74
        locked two messages ahead
75
      endnote
76
      while (Timestamp of next message is younger then current?) is (yes)
77
        fork
78
          :unlock current message;
79
        fork again
80
          :lock next message;
81
        endfork
82
        :unlock next message;
83
        note
84
          one message ahead still locked
85
        endnote
86
      endwhile (no)
87
    }
88
  endif
89
endif
90
fork
91
  :set pointer to last message read to locked message;
92
fork again
93
  :copy timestamp of message;
94
endfork
95
:unlock message;
96
:unlock topic;
97
stop
98

    
99
@enduml
100

    
101
PlantUML version 1.2018.11(Sat Sep 22 18:43:53 CEST 2018)
102
(GPL source distribution)
103
Java Runtime: OpenJDK Runtime Environment
104
JVM: OpenJDK 64-Bit Server VM
105
Java Version: 1.8.0_181-8u181-b13-0ubuntu0.16.04.1-b13
106
Operating System: Linux
107
OS Version: 4.15.0-36-generic
108
Default Encoding: UTF-8
109
Language: en
110
Country: US
111
--></g></svg>