Statistics
| Branch: | Revision:

urtware / doc / statediagrams / subscriber / urtSubscriberFetchMessage.svg @ 056e40d2

History | View | Annotate | Download (45.663 KB)

1 e98c61a8 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="1548px" preserveAspectRatio="none" style="width:2068px;height:1548px;" version="1.1" viewBox="0 0 2068 1548" width="2068px" zoomAndPan="magnify"><defs><filter height="300%" id="fdtyyj52i0mr8" 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="988.75" y="26.708">µRtWare</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="256" x="905.25" y="47.6611">urtSubscriberFetchMessage()</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="0" x="1036.25" y="68.6143"/><path d="M1096.25,72.8594 L1096.25,97.9922 A0,0 0 0 0 1096.25,97.9922 L1211.25,97.9922 A0,0 0 0 0 1211.25,97.9922 L1211.25,90.8594 L1231.25,85.4258 L1211.25,82.8594 L1211.25,82.8594 L1201.25,72.8594 L1096.25,72.8594 A0,0 0 0 0 1096.25,72.8594 " fill="#FBFB77" filter="url(#fdtyyj52i0mr8)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1201.25,72.8594 L1201.25,82.8594 L1211.25,82.8594 L1201.25,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="1102.25" y="89.9263">event received</text><ellipse cx="1241.25" cy="85.4258" fill="#000000" filter="url(#fdtyyj52i0mr8)" rx="10" ry="10" style="stroke: none; stroke-width: 1.0;"/><path d="M798.25,122.4102 L798.25,147.543 A0,0 0 0 0 798.25,147.543 L1181.25,147.543 A0,0 0 0 0 1181.25,147.543 L1181.25,140.4102 L1201.25,134.9766 L1181.25,132.4102 L1181.25,132.4102 L1171.25,122.4102 L798.25,122.4102 A0,0 0 0 0 798.25,122.4102 " fill="#FBFB77" filter="url(#fdtyyj52i0mr8)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1171.25,122.4102 L1171.25,132.4102 L1181.25,132.4102 L1171.25,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="804.25" y="139.4771">The message list is part of the topic and must be locked.</text><rect fill="#FEFECE" filter="url(#fdtyyj52i0mr8)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="80" x="1201.25" y="117.9922"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="60" x="1211.25" y="139.1309">lock topic</text><polygon fill="#FEFECE" filter="url(#fdtyyj52i0mr8)" points="1187.75,171.9609,1294.75,171.9609,1306.75,183.9609,1294.75,195.9609,1187.75,195.9609,1175.75,183.9609,1187.75,171.9609" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="107" x="1187.75" y="187.769">Is HRT subscriber?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="1155.75" y="181.3667">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="1306.75" y="181.3667">no</text><rect fill="#FEFECE" filter="url(#fdtyyj52i0mr8)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="137" x="636.5" y="205.9609"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="117" x="646.5" y="227.0996">lock next message</text><rect fill="#FFFFFF" filter="url(#fdtyyj52i0mr8)" height="465.9175" style="stroke: #000000; stroke-width: 2.0;" width="1387" 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="M413.5,347.1567 L413.5,372.2896 A0,0 0 0 0 413.5,372.2896 L616.5,372.2896 A0,0 0 0 0 616.5,372.2896 L616.5,365.1567 L636.5,359.7231 L616.5,357.1567 L616.5,357.1567 L606.5,347.1567 L413.5,347.1567 A0,0 0 0 0 413.5,347.1567 " fill="#FBFB77" filter="url(#fdtyyj52i0mr8)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M606.5,347.1567 L606.5,357.1567 L616.5,357.1567 L606.5,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="419.5" y="364.2236">locked two messaged ahead</text><rect fill="#FEFECE" filter="url(#fdtyyj52i0mr8)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="137" x="636.5" y="342.7388"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="117" x="646.5" y="363.8774">lock next message</text><rect fill="#000000" filter="url(#fdtyyj52i0mr8)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="1322" x="44" y="452.418"/><rect fill="#000000" filter="url(#fdtyyj52i0mr8)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="1129" x="58" y="478.418"/><rect fill="#FEFECE" filter="url(#fdtyyj52i0mr8)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="304" x="72" y="504.418"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="284" x="82" y="525.5566">decremenet HRT counter of current message</text><path d="M404,508.8359 L404,533.9688 A0,0 0 0 0 404,533.9688 L893,533.9688 A0,0 0 0 0 893,533.9688 L893,526.8359 L913,521.4023 L893,518.8359 L893,518.8359 L883,508.8359 L404,508.8359 A0,0 0 0 0 404,508.8359 " fill="#FBFB77" filter="url(#fdtyyj52i0mr8)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M883,508.8359 L883,518.8359 L893,518.8359 L883,508.8359 " 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="525.9028">no lock required since this timer is only accessed when the topic is locked</text><rect fill="#FEFECE" filter="url(#fdtyyj52i0mr8)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="260" x="913" y="504.418"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="240" x="923" y="525.5566">update QoS delay timer (@subscriber)</text><rect fill="#000000" filter="url(#fdtyyj52i0mr8)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="1129" x="58" y="558.3867"/><rect fill="#FEFECE" filter="url(#fdtyyj52i0mr8)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="172" x="536.5" y="594.8711"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="152" x="546.5" y="616.0098">unlock current message</text><rect fill="#FEFECE" filter="url(#fdtyyj52i0mr8)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="137" x="1215" y="538.9023"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="117" x="1225" y="560.041">lock next message</text><rect fill="#000000" filter="url(#fdtyyj52i0mr8)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="1322" x="44" y="648.8398"/><polygon fill="#FEFECE" filter="url(#fdtyyj52i0mr8)" points="551,396.7075,859,396.7075,871,408.7075,859,420.7075,551,420.7075,539,408.7075,551,396.7075" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="709" y="430.918">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="308" x="551" 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="525" y="406.1133">no</text><path d="M345.5,712.0938 L345.5,752.3594 A0,0 0 0 0 345.5,752.3594 L608.5,752.3594 A0,0 0 0 0 608.5,752.3594 L608.5,736.2266 L628.5,732.2266 L608.5,728.2266 L608.5,722.0938 L598.5,712.0938 L345.5,712.0938 A0,0 0 0 0 345.5,712.0938 " fill="#FBFB77" filter="url(#fdtyyj52i0mr8)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M598.5,712.0938 L598.5,722.0938 L608.5,722.0938 L598.5,712.0938 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="201" x="351.5" y="729.1606">one message ahead still locked</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="242" x="351.5" y="744.2935">but HRT counter not yet decremented</text><rect fill="#FEFECE" filter="url(#fdtyyj52i0mr8)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="153" x="628.5" y="715.2422"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="133" x="638.5" y="736.3809">unlock next message</text><polygon fill="#FEFECE" filter="url(#fdtyyj52i0mr8)" points="618.5,259.9297,791.5,259.9297,803.5,271.9297,791.5,283.9297,618.5,283.9297,606.5,271.9297,618.5,259.9297" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="32" x="709" y="294.1401">latest</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="173" x="618.5" y="275.7378">Fetch next or latest message?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="24" x="803.5" y="269.3354">next</text><polygon fill="#FEFECE" filter="url(#fdtyyj52i0mr8)" points="705,796.7617,717,808.7617,705,820.7617,693,808.7617,705,796.7617" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#000000" filter="url(#fdtyyj52i0mr8)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="1121" x="144.5" y="855.7617"/><rect fill="#FEFECE" filter="url(#fdtyyj52i0mr8)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="296" x="158.5" y="881.7617"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="276" x="168.5" y="902.9004">decrement HRT counter of current message</text><path d="M482.5,886.1797 L482.5,911.3125 A0,0 0 0 0 482.5,911.3125 L971.5,911.3125 A0,0 0 0 0 971.5,911.3125 L971.5,904.1797 L991.5,898.7461 L971.5,896.1797 L971.5,896.1797 L961.5,886.1797 L482.5,886.1797 A0,0 0 0 0 482.5,886.1797 " fill="#FBFB77" filter="url(#fdtyyj52i0mr8)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M961.5,886.1797 L961.5,896.1797 L971.5,896.1797 L961.5,886.1797 " 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="903.2466">no lock required since this timer is only accessed when the topic is locked</text><rect fill="#FEFECE" filter="url(#fdtyyj52i0mr8)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="260" x="991.5" y="881.7617"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="240" x="1001.5" y="902.9004">update QoS delay timer (@subscriber)</text><rect fill="#000000" filter="url(#fdtyyj52i0mr8)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="1121" x="144.5" y="935.7305"/><rect fill="#FEFECE" filter="url(#fdtyyj52i0mr8)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="166" x="1694.5" y="205.9609"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="146" x="1704.5" y="227.0996">lock last read message</text><rect fill="#FFFFFF" filter="url(#fdtyyj52i0mr8)" height="340.3979" style="stroke: #000000; stroke-width: 2.0;" width="516" x="1516.5" y="306.4419"/><path d="M1700.5,307.4419 L1700.5,315.7388 L1690.5,325.7388 L1516.5,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="1519.5" y="320.437">find oldest valid message</text><rect fill="#FEFECE" filter="url(#fdtyyj52i0mr8)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="137" x="1709" y="342.7388"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="117" x="1719" y="363.8774">lock next message</text><rect fill="#000000" filter="url(#fdtyyj52i0mr8)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="454" x="1550.5" y="452.418"/><rect fill="#FEFECE" filter="url(#fdtyyj52i0mr8)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="165" x="1564.5" y="478.418"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="145" x="1574.5" y="499.5566">unlock current mesage</text><rect fill="#FEFECE" filter="url(#fdtyyj52i0mr8)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="233" x="1757.5" y="478.418"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="213" x="1767.5" y="499.5566">lock one message further ahaead</text><rect fill="#000000" filter="url(#fdtyyj52i0mr8)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="454" x="1550.5" y="532.3867"/><polygon fill="#FEFECE" filter="url(#fdtyyj52i0mr8)" points="1644.5,396.7075,1910.5,396.7075,1922.5,408.7075,1910.5,420.7075,1644.5,420.7075,1632.5,408.7075,1644.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="1781.5" y="430.918">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="266" x="1644.5" y="412.5156">Timestamp of next is younger then of current?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="1618.5" y="406.1133">no</text><rect fill="#FEFECE" filter="url(#fdtyyj52i0mr8)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="153" x="1701" y="592.8711"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="133" x="1711" y="614.0098">unlock next message</text><polygon fill="#FEFECE" filter="url(#fdtyyj52i0mr8)" points="1691.5,259.9297,1863.5,259.9297,1875.5,271.9297,1863.5,283.9297,1691.5,283.9297,1679.5,271.9297,1691.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="1781.5" y="294.1401">no</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="172" x="1691.5" y="275.7378">Timestamp equals local copy?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="1875.5" y="269.3354">yes</text><polygon fill="#FEFECE" filter="url(#fdtyyj52i0mr8)" points="1777.5,671.2422,1789.5,683.2422,1777.5,695.2422,1765.5,683.2422,1777.5,671.2422" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#FFFFFF" filter="url(#fdtyyj52i0mr8)" height="340.0078" style="stroke: #000000; stroke-width: 2.0;" width="542" x="1449" y="776.8984"/><path d="M1563,777.8984 L1563,786.1953 L1553,796.1953 L1449,796.1953 " fill="none" style="stroke: #000000; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="104" x="1452" y="790.8936">iterate to latest</text><rect fill="#FEFECE" filter="url(#fdtyyj52i0mr8)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="137" x="1709" y="813.1953"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="117" x="1719" y="834.334">lock next message</text><rect fill="#000000" filter="url(#fdtyyj52i0mr8)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="365" x="1595" y="942.9688"/><rect fill="#FEFECE" filter="url(#fdtyyj52i0mr8)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="172" x="1609" y="968.9688"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="152" x="1619" y="990.1074">unlock current message</text><rect fill="#FEFECE" filter="url(#fdtyyj52i0mr8)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="137" x="1809" y="968.9688"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="117" x="1819" y="990.1074">lock next message</text><rect fill="#000000" filter="url(#fdtyyj52i0mr8)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="365" x="1595" y="1022.9375"/><polygon fill="#FEFECE" filter="url(#fdtyyj52i0mr8)" points="1623.5,882.1641,1931.5,882.1641,1943.5,894.1641,1931.5,906.1641,1623.5,906.1641,1611.5,894.1641,1623.5,882.1641" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="1781.5" y="916.3745">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="308" x="1623.5" y="897.9722">Timestamp of next message is younger then current?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="1597.5" y="891.5698">no</text><path d="M1459,1075.3555 L1459,1100.4883 A0,0 0 0 0 1459,1100.4883 L1681,1100.4883 A0,0 0 0 0 1681,1100.4883 L1681,1093.3555 L1701,1087.9219 L1681,1085.3555 L1681,1085.3555 L1671,1075.3555 L1459,1075.3555 A0,0 0 0 0 1459,1075.3555 " fill="#FBFB77" filter="url(#fdtyyj52i0mr8)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1671,1075.3555 L1671,1085.3555 L1681,1085.3555 L1671,1075.3555 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="201" x="1465" y="1092.4224">one message ahead still locked</text><rect fill="#FEFECE" filter="url(#fdtyyj52i0mr8)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="153" x="1701" y="1070.9375"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="133" x="1711" y="1092.0762">unlock next message</text><polygon fill="#FEFECE" filter="url(#fdtyyj52i0mr8)" points="1691,728.4961,1864,728.4961,1876,740.4961,1864,752.4961,1691,752.4961,1679,740.4961,1691,728.4961" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="32" x="1781.5" y="762.7065">latest</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="173" x="1691" y="744.3042">Fetch next or latest message?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="24" x="1876" y="737.9019">next</text><polygon fill="#FEFECE" filter="url(#fdtyyj52i0mr8)" points="1777.5,1136.9063,1789.5,1148.9063,1777.5,1160.9063,1765.5,1148.9063,1777.5,1136.9063" style="stroke: #A80036; stroke-width: 1.5;"/><polygon fill="#FEFECE" filter="url(#fdtyyj52i0mr8)" points="1241.25,1166.9063,1253.25,1178.9063,1241.25,1190.9063,1229.25,1178.9063,1241.25,1166.9063" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#000000" filter="url(#fdtyyj52i0mr8)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="827" x="827.75" y="1210.9063"/><rect fill="#FEFECE" filter="url(#fdtyyj52i0mr8)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="352" x="841.75" y="1285.3086"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="332" x="851.75" y="1306.4473">set last fetched message pointer to locked message</text><rect fill="#FEFECE" filter="url(#fdtyyj52i0mr8)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="196" x="1221.75" y="1285.3086"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="176" x="1231.75" y="1306.4473">copy timestamp of message</text><rect fill="#FEFECE" filter="url(#fdtyyj52i0mr8)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="163" x="1455.75" y="1285.3086"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="143" x="1465.75" y="1306.4473">copy message payload</text><polygon fill="#FEFECE" filter="url(#fdtyyj52i0mr8)" points="1457.75,1236.9063,1616.75,1236.9063,1628.75,1248.9063,1616.75,1260.9063,1457.75,1260.9063,1445.75,1248.9063,1457.75,1236.9063" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="1541.25" y="1271.1167">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="159" x="1457.75" y="1252.7144">Copy of payload requested?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="1628.75" y="1246.312">no</text><polygon fill="#FEFECE" filter="url(#fdtyyj52i0mr8)" points="1537.25,1339.2773,1549.25,1351.2773,1537.25,1363.2773,1525.25,1351.2773,1537.25,1339.2773" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#000000" filter="url(#fdtyyj52i0mr8)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="827" x="827.75" y="1383.2773"/><rect fill="#FEFECE" filter="url(#fdtyyj52i0mr8)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="122" x="1180.25" y="1409.2773"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="102" x="1190.25" y="1430.416">unlock message</text><rect fill="#FEFECE" filter="url(#fdtyyj52i0mr8)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="96" x="1193.25" y="1463.2461"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="76" x="1203.25" y="1484.3848">unlock topic</text><ellipse cx="1241.25" cy="1527.2148" fill="none" filter="url(#fdtyyj52i0mr8)" rx="10" ry="10" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="1241.75" cy="1527.7148" fill="#000000" filter="url(#fdtyyj52i0mr8)" rx="6" ry="6" style="stroke: none; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1241.25" x2="1241.25" y1="95.4258" y2="117.9922"/><polygon fill="#A80036" points="1237.25,107.9922,1241.25,117.9922,1245.25,107.9922,1241.25,111.9922" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="224" x2="224" y1="484.418" y2="504.418"/><polygon fill="#A80036" points="220,494.418,224,504.418,228,494.418,224,498.418" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1043" x2="1043" y1="484.418" y2="504.418"/><polygon fill="#A80036" points="1039,494.418,1043,504.418,1047,494.418,1043,498.418" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="224" x2="224" y1="538.3867" y2="558.3867"/><polygon fill="#A80036" points="220,548.3867,224,558.3867,228,548.3867,224,552.3867" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1043" x2="1043" y1="538.3867" y2="558.3867"/><polygon fill="#A80036" points="1039,548.3867,1043,558.3867,1047,548.3867,1043,552.3867" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="622.5" x2="622.5" y1="564.3867" y2="594.8711"/><polygon fill="#A80036" points="618.5,584.8711,622.5,594.8711,626.5,584.8711,622.5,588.8711" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="622.5" x2="622.5" y1="458.418" y2="478.418"/><polygon fill="#A80036" points="618.5,468.418,622.5,478.418,626.5,468.418,622.5,472.418" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1283.5" x2="1283.5" y1="458.418" y2="538.9023"/><polygon fill="#A80036" points="1279.5,528.9023,1283.5,538.9023,1287.5,528.9023,1283.5,532.9023" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="622.5" x2="622.5" y1="628.8398" y2="648.8398"/><polygon fill="#A80036" points="618.5,638.8398,622.5,648.8398,626.5,638.8398,622.5,642.8398" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1283.5" x2="1283.5" y1="572.8711" y2="648.8398"/><polygon fill="#A80036" points="1279.5,638.8398,1283.5,648.8398,1287.5,638.8398,1283.5,642.8398" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="705" x2="705" y1="420.7075" y2="452.418"/><polygon fill="#A80036" points="701,442.418,705,452.418,709,442.418,705,446.418" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="705" x2="705" y1="654.8398" y2="666.8398"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="705" x2="1378" y1="666.8398" y2="666.8398"/><polygon fill="#A80036" points="1374,547.4844,1378,537.4844,1382,547.4844,1378,543.4844" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1378" x2="1378" y1="408.7075" y2="666.8398"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1378" x2="871" y1="408.7075" y2="408.7075"/><polygon fill="#A80036" points="881,404.7075,871,408.7075,881,412.7075,877,408.7075" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="539" x2="32" y1="408.7075" y2="408.7075"/><polygon fill="#A80036" points="28,533.4844,32,543.4844,36,533.4844,32,537.4844" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="32" x2="32" y1="408.7075" y2="678.8398"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="32" x2="705" y1="678.8398" y2="678.8398"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="705" x2="705" y1="678.8398" y2="715.2422"/><polygon fill="#A80036" points="701,705.2422,705,715.2422,709,705.2422,705,709.2422" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="705" x2="705" y1="376.7075" y2="396.7075"/><polygon fill="#A80036" points="701,386.7075,705,396.7075,709,386.7075,705,390.7075" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="705" x2="705" y1="283.9297" y2="342.7388"/><polygon fill="#A80036" points="701,332.7388,705,342.7388,709,332.7388,705,336.7388" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="803.5" x2="1407" y1="271.9297" y2="271.9297"/><polygon fill="#A80036" points="1403,522.4844,1407,532.4844,1411,522.4844,1407,526.4844" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1407" x2="1407" y1="271.9297" y2="808.7617"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1407" x2="717" y1="808.7617" y2="808.7617"/><polygon fill="#A80036" points="727,804.7617,717,808.7617,727,812.7617,723,808.7617" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="705" x2="705" y1="749.2109" y2="796.7617"/><polygon fill="#A80036" points="701,786.7617,705,796.7617,709,786.7617,705,790.7617" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="705" x2="705" y1="239.9297" y2="259.9297"/><polygon fill="#A80036" points="701,249.9297,705,259.9297,709,249.9297,705,253.9297" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="306.5" x2="306.5" y1="861.7617" y2="881.7617"/><polygon fill="#A80036" points="302.5,871.7617,306.5,881.7617,310.5,871.7617,306.5,875.7617" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1121.5" x2="1121.5" y1="861.7617" y2="881.7617"/><polygon fill="#A80036" points="1117.5,871.7617,1121.5,881.7617,1125.5,871.7617,1121.5,875.7617" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="306.5" x2="306.5" y1="915.7305" y2="935.7305"/><polygon fill="#A80036" points="302.5,925.7305,306.5,935.7305,310.5,925.7305,306.5,929.7305" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1121.5" x2="1121.5" y1="915.7305" y2="935.7305"/><polygon fill="#A80036" points="1117.5,925.7305,1121.5,935.7305,1125.5,925.7305,1121.5,929.7305" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="705" x2="705" y1="820.7617" y2="855.7617"/><polygon fill="#A80036" points="701,845.7617,705,855.7617,709,845.7617,705,849.7617" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1647" x2="1647" y1="458.418" y2="478.418"/><polygon fill="#A80036" points="1643,468.418,1647,478.418,1651,468.418,1647,472.418" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1874" x2="1874" y1="458.418" y2="478.418"/><polygon fill="#A80036" points="1870,468.418,1874,478.418,1878,468.418,1874,472.418" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1647" x2="1647" y1="512.3867" y2="532.3867"/><polygon fill="#A80036" points="1643,522.3867,1647,532.3867,1651,522.3867,1647,526.3867" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1874" x2="1874" y1="512.3867" y2="532.3867"/><polygon fill="#A80036" points="1870,522.3867,1874,532.3867,1878,522.3867,1874,526.3867" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1777.5" x2="1777.5" y1="420.7075" y2="452.418"/><polygon fill="#A80036" points="1773.5,442.418,1777.5,452.418,1781.5,442.418,1777.5,446.418" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1777.5" x2="1777.5" y1="538.3867" y2="550.3867"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1777.5" x2="2016.5" y1="550.3867" y2="550.3867"/><polygon fill="#A80036" points="2012.5,487,2016.5,477,2020.5,487,2016.5,483" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2016.5" x2="2016.5" y1="408.7075" y2="550.3867"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2016.5" x2="1922.5" y1="408.7075" y2="408.7075"/><polygon fill="#A80036" points="1932.5,404.7075,1922.5,408.7075,1932.5,412.7075,1928.5,408.7075" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1632.5" x2="1538.5" y1="408.7075" y2="408.7075"/><polygon fill="#A80036" points="1534.5,473,1538.5,483,1542.5,473,1538.5,477" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1538.5" x2="1538.5" y1="408.7075" y2="562.3867"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1538.5" x2="1777.5" y1="562.3867" y2="562.3867"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1777.5" x2="1777.5" y1="562.3867" y2="592.8711"/><polygon fill="#A80036" points="1773.5,582.8711,1777.5,592.8711,1781.5,582.8711,1777.5,586.8711" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1777.5" x2="1777.5" y1="376.7075" y2="396.7075"/><polygon fill="#A80036" points="1773.5,386.7075,1777.5,396.7075,1781.5,386.7075,1777.5,390.7075" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1777.5" x2="1777.5" y1="283.9297" y2="342.7388"/><polygon fill="#A80036" points="1773.5,332.7388,1777.5,342.7388,1781.5,332.7388,1777.5,336.7388" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1875.5" x2="2042.5" y1="271.9297" y2="271.9297"/><polygon fill="#A80036" points="2038.5,458.8516,2042.5,468.8516,2046.5,458.8516,2042.5,462.8516" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2042.5" x2="2042.5" y1="271.9297" y2="683.2422"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2042.5" x2="1789.5" y1="683.2422" y2="683.2422"/><polygon fill="#A80036" points="1799.5,679.2422,1789.5,683.2422,1799.5,687.2422,1795.5,683.2422" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1777.5" x2="1777.5" y1="626.8398" y2="671.2422"/><polygon fill="#A80036" points="1773.5,661.2422,1777.5,671.2422,1781.5,661.2422,1777.5,665.2422" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1777.5" x2="1777.5" y1="239.9297" y2="259.9297"/><polygon fill="#A80036" points="1773.5,249.9297,1777.5,259.9297,1781.5,249.9297,1777.5,253.9297" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1695" x2="1695" y1="948.9688" y2="968.9688"/><polygon fill="#A80036" points="1691,958.9688,1695,968.9688,1699,958.9688,1695,962.9688" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1877.5" x2="1877.5" y1="948.9688" y2="968.9688"/><polygon fill="#A80036" points="1873.5,958.9688,1877.5,968.9688,1881.5,958.9688,1877.5,962.9688" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1695" x2="1695" y1="1002.9375" y2="1022.9375"/><polygon fill="#A80036" points="1691,1012.9375,1695,1022.9375,1699,1012.9375,1695,1016.9375" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1877.5" x2="1877.5" y1="1002.9375" y2="1022.9375"/><polygon fill="#A80036" points="1873.5,1012.9375,1877.5,1022.9375,1881.5,1012.9375,1877.5,1016.9375" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1777.5" x2="1777.5" y1="906.1641" y2="942.9688"/><polygon fill="#A80036" points="1773.5,932.9688,1777.5,942.9688,1781.5,932.9688,1777.5,936.9688" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1777.5" x2="1777.5" y1="1028.9375" y2="1038.9375"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1777.5" x2="1972" y1="1038.9375" y2="1038.9375"/><polygon fill="#A80036" points="1968,977.5508,1972,967.5508,1976,977.5508,1972,973.5508" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1972" x2="1972" y1="894.1641" y2="1038.9375"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1972" x2="1943.5" y1="894.1641" y2="894.1641"/><polygon fill="#A80036" points="1953.5,890.1641,1943.5,894.1641,1953.5,898.1641,1949.5,894.1641" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1611.5" x2="1583" y1="894.1641" y2="894.1641"/><polygon fill="#A80036" points="1579,963.5508,1583,973.5508,1587,963.5508,1583,967.5508" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1583" x2="1583" y1="894.1641" y2="1050.9375"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1583" x2="1777.5" y1="1050.9375" y2="1050.9375"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1777.5" x2="1777.5" y1="1050.9375" y2="1070.9375"/><polygon fill="#A80036" points="1773.5,1060.9375,1777.5,1070.9375,1781.5,1060.9375,1777.5,1064.9375" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1777.5" x2="1777.5" y1="847.1641" y2="882.1641"/><polygon fill="#A80036" points="1773.5,872.1641,1777.5,882.1641,1781.5,872.1641,1777.5,876.1641" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1777.5" x2="1777.5" y1="752.4961" y2="813.1953"/><polygon fill="#A80036" points="1773.5,803.1953,1777.5,813.1953,1781.5,803.1953,1777.5,807.1953" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1876" x2="2001" y1="740.4961" y2="740.4961"/><polygon fill="#A80036" points="1997,949.4023,2001,959.4023,2005,949.4023,2001,953.4023" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2001" x2="2001" y1="740.4961" y2="1148.9063"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2001" x2="1789.5" y1="1148.9063" y2="1148.9063"/><polygon fill="#A80036" points="1799.5,1144.9063,1789.5,1148.9063,1799.5,1152.9063,1795.5,1148.9063" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1777.5" x2="1777.5" y1="1104.9063" y2="1136.9063"/><polygon fill="#A80036" points="1773.5,1126.9063,1777.5,1136.9063,1781.5,1126.9063,1777.5,1130.9063" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1777.5" x2="1777.5" y1="695.2422" y2="728.4961"/><polygon fill="#A80036" points="1773.5,718.4961,1777.5,728.4961,1781.5,718.4961,1777.5,722.4961" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1175.75" x2="705" y1="183.9609" y2="183.9609"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="705" x2="705" y1="183.9609" y2="205.9609"/><polygon fill="#A80036" points="701,195.9609,705,205.9609,709,195.9609,705,199.9609" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1306.75" x2="1777.5" y1="183.9609" y2="183.9609"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1777.5" x2="1777.5" y1="183.9609" y2="205.9609"/><polygon fill="#A80036" points="1773.5,195.9609,1777.5,205.9609,1781.5,195.9609,1777.5,199.9609" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="705" x2="705" y1="941.7305" y2="1178.9063"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="705" x2="1229.25" y1="1178.9063" y2="1178.9063"/><polygon fill="#A80036" points="1219.25,1174.9063,1229.25,1178.9063,1219.25,1182.9063,1223.25,1178.9063" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1777.5" x2="1777.5" y1="1160.9063" y2="1178.9063"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1777.5" x2="1253.25" y1="1178.9063" y2="1178.9063"/><polygon fill="#A80036" points="1263.25,1174.9063,1253.25,1178.9063,1263.25,1182.9063,1259.25,1178.9063" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1241.25" x2="1241.25" y1="151.9609" y2="171.9609"/><polygon fill="#A80036" points="1237.25,161.9609,1241.25,171.9609,1245.25,161.9609,1241.25,165.9609" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1537.25" x2="1537.25" y1="1260.9063" y2="1285.3086"/><polygon fill="#A80036" points="1533.25,1275.3086,1537.25,1285.3086,1541.25,1275.3086,1537.25,1279.3086" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1628.75" x2="1640.75" y1="1248.9063" y2="1248.9063"/><polygon fill="#A80036" points="1636.75,1292.293,1640.75,1302.293,1644.75,1292.293,1640.75,1296.293" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1640.75" x2="1640.75" y1="1248.9063" y2="1351.2773"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1640.75" x2="1549.25" y1="1351.2773" y2="1351.2773"/><polygon fill="#A80036" points="1559.25,1347.2773,1549.25,1351.2773,1559.25,1355.2773,1555.25,1351.2773" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1537.25" x2="1537.25" y1="1319.2773" y2="1339.2773"/><polygon fill="#A80036" points="1533.25,1329.2773,1537.25,1339.2773,1541.25,1329.2773,1537.25,1333.2773" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1017.75" x2="1017.75" y1="1216.9063" y2="1285.3086"/><polygon fill="#A80036" points="1013.75,1275.3086,1017.75,1285.3086,1021.75,1275.3086,1017.75,1279.3086" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1319.75" x2="1319.75" y1="1216.9063" y2="1285.3086"/><polygon fill="#A80036" points="1315.75,1275.3086,1319.75,1285.3086,1323.75,1275.3086,1319.75,1279.3086" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1537.25" x2="1537.25" y1="1216.9063" y2="1236.9063"/><polygon fill="#A80036" points="1533.25,1226.9063,1537.25,1236.9063,1541.25,1226.9063,1537.25,1230.9063" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1017.75" x2="1017.75" y1="1319.2773" y2="1383.2773"/><polygon fill="#A80036" points="1013.75,1373.2773,1017.75,1383.2773,1021.75,1373.2773,1017.75,1377.2773" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1319.75" x2="1319.75" y1="1319.2773" y2="1383.2773"/><polygon fill="#A80036" points="1315.75,1373.2773,1319.75,1383.2773,1323.75,1373.2773,1319.75,1377.2773" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1537.25" x2="1537.25" y1="1363.2773" y2="1383.2773"/><polygon fill="#A80036" points="1533.25,1373.2773,1537.25,1383.2773,1541.25,1373.2773,1537.25,1377.2773" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1241.25" x2="1241.25" y1="1190.9063" y2="1210.9063"/><polygon fill="#A80036" points="1237.25,1200.9063,1241.25,1210.9063,1245.25,1200.9063,1241.25,1204.9063" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1241.25" x2="1241.25" y1="1389.2773" y2="1409.2773"/><polygon fill="#A80036" points="1237.25,1399.2773,1241.25,1409.2773,1245.25,1399.2773,1241.25,1403.2773" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1241.25" x2="1241.25" y1="1443.2461" y2="1463.2461"/><polygon fill="#A80036" points="1237.25,1453.2461,1241.25,1463.2461,1245.25,1453.2461,1241.25,1457.2461" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1241.25" x2="1241.25" y1="1497.2148" y2="1517.2148"/><polygon fill="#A80036" points="1237.25,1507.2148,1241.25,1517.2148,1245.25,1507.2148,1241.25,1511.2148" style="stroke: #A80036; stroke-width: 1.0;"/><!--
2 35c9457f Thomas Schöpping
@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 delay timer (@subscriber);
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 delay timer (@subscriber);
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
      :lock next message;
61
      while (Timestamp of next is younger then of current?) is (yes)
62
        fork
63
          :unlock current mesage;
64
        fork again
65
          :lock one message further ahaead;
66
        endfork
67
      endwhile (no)
68
      :unlock next message;
69
    }
70
  endif
71
  if (Fetch next or latest message?) then (next)
72
  else (latest)
73
    partition "iterate to latest" {
74
      :lock next message;
75
      while (Timestamp of next message is younger then current?) is (yes)
76
        fork
77
          :unlock current message;
78
        fork again
79
          :lock next message;
80
        endfork
81
      endwhile (no)
82
      :unlock next message;
83
      note
84
        one message ahead still locked
85
      endnote
86
    }
87
  endif
88
endif
89
fork
90
  :set last fetched message pointer to locked message;
91
fork again
92
  :copy timestamp of message;
93 e98c61a8 Thomas Schöpping
fork again
94
  if (Copy of payload requested?) then (yes)
95
    :copy message payload;
96
  else (no)
97
  endif
98 35c9457f Thomas Schöpping
endfork
99
:unlock message;
100
:unlock topic;
101
stop
102
103
@enduml
104
105
PlantUML version 1.2018.11(Sat Sep 22 18:43:53 CEST 2018)
106
(GPL source distribution)
107
Java Runtime: OpenJDK Runtime Environment
108
JVM: OpenJDK 64-Bit Server VM
109
Java Version: 1.8.0_181-8u181-b13-0ubuntu0.16.04.1-b13
110
Operating System: Linux
111
OS Version: 4.15.0-36-generic
112
Default Encoding: UTF-8
113
Language: en
114
Country: US
115
--></g></svg>