urtware / doc / statediagrams / publisher / urtPublisherPublish.svg @ 7491c395
History | View | Annotate | Download (23.74 KB)
1 | 35c9457f | 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="933px" preserveAspectRatio="none" style="width:2508px;height:933px;" version="1.1" viewBox="0 0 2508 933" width="2508px" zoomAndPan="magnify"><defs><filter height="300%" id="f1ns8p1bc9moh9" 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="1208.5" y="26.708">µRtWare</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="183" x="1161.5" y="47.6611">urtPublisherPublish()</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="0" x="1256" y="68.6143"/><ellipse cx="690" cy="82.8594" fill="#000000" filter="url(#f1ns8p1bc9moh9)" rx="10" ry="10" style="stroke: none; stroke-width: 1.0;"/><rect fill="#FEFECE" filter="url(#f1ns8p1bc9moh9)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="80" x="650" y="112.8594"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="60" x="660" y="133.998">lock topic</text><rect fill="#FEFECE" filter="url(#f1ns8p1bc9moh9)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="137" x="621.5" y="166.8281"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="117" x="631.5" y="187.9668">lock next message</text><rect fill="#FEFECE" filter="url(#f1ns8p1bc9moh9)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="344" x="518" y="276.5073"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="324" x="528" y="297.646">wait for condition variable to be signaled or timeout</text><polygon fill="#FEFECE" filter="url(#f1ns8p1bc9moh9)" points="542,220.7969,838,220.7969,850,232.7969,838,244.7969,542,244.7969,530,232.7969,542,220.7969" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="694" y="255.0073">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="296" x="542" y="236.605">HRT consumers left for the message & no timeout?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="516" y="230.2026">no</text><polygon fill="#FEFECE" filter="url(#f1ns8p1bc9moh9)" points="637,352.4761,743,352.4761,755,364.4761,743,376.4761,637,376.4761,625,364.4761,637,352.4761" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="106" x="637" y="368.2842">Timeout occurred?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="605" y="361.8818">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="755" y="361.8818">no</text><rect fill="#FEFECE" filter="url(#f1ns8p1bc9moh9)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="122" x="10" y="386.4761"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="102" x="20" y="407.6147">unlock message</text><rect fill="#FEFECE" filter="url(#f1ns8p1bc9moh9)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="96" x="23" y="455.4448"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="76" x="33" y="476.5835">unlock topic</text><rect fill="#FEFECE" filter="url(#f1ns8p1bc9moh9)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="94" x="24" y="524.4136"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="74" x="34" y="545.5522">return error</text><ellipse cx="71" cy="603.3823" fill="none" filter="url(#f1ns8p1bc9moh9)" rx="10" ry="10" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="71.5" cy="603.8823" fill="#000000" filter="url(#f1ns8p1bc9moh9)" rx="6" ry="6" style="stroke: none; stroke-width: 1.0;"/><rect fill="#000000" filter="url(#f1ns8p1bc9moh9)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="2354" x="142" y="386.4761"/><rect fill="#000000" filter="url(#f1ns8p1bc9moh9)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="861" x="156" y="477.2808"/><rect fill="#FEFECE" filter="url(#f1ns8p1bc9moh9)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="251" x="170" y="503.2808"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="231" x="180" y="524.4194">iterate topic pointer to this message</text><rect fill="#FEFECE" filter="url(#f1ns8p1bc9moh9)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="102" x="449" y="503.2808"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="82" x="459" y="524.4194">copy payload</text><rect fill="#FEFECE" filter="url(#f1ns8p1bc9moh9)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="110" x="579" y="503.2808"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="90" x="589" y="524.4194">set origin time</text><rect fill="#FEFECE" filter="url(#f1ns8p1bc9moh9)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="286" x="717" y="503.2808"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="266" x="727" y="524.4194">set number of HRT consumers (from topic)</text><rect fill="#000000" filter="url(#f1ns8p1bc9moh9)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="861" x="156" y="557.2495"/><rect fill="#FEFECE" filter="url(#f1ns8p1bc9moh9)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="122" x="525.5" y="598.2495"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="102" x="535.5" y="619.3882">unlock message</text><rect fill="#FEFECE" filter="url(#f1ns8p1bc9moh9)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="398" x="1045" y="537.7651"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="378" x="1055" y="558.9038">set QoS rate timer (@topic) wrt. most critical HRT subscriber</text><path d="M1505,526.1011 L1505,551.2339 A0,0 0 0 0 1505,551.2339 L1994,551.2339 A0,0 0 0 0 1994,551.2339 L1994,544.1011 L2014,538.6675 L1994,536.1011 L1994,536.1011 L1984,526.1011 L1505,526.1011 A0,0 0 0 0 1505,526.1011 " fill="#FBFB77" filter="url(#f1ns8p1bc9moh9)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1984,526.1011 L1984,536.1011 L1994,536.1011 L1984,526.1011 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="468" x="1511" y="543.168">no lock required since this timer is only accessed when the topic is locked</text><rect fill="#FEFECE" filter="url(#f1ns8p1bc9moh9)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="434" x="2014" y="521.6831"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="414" x="2024" y="542.8218">set QoS delay timer (@subscriber) wrt. origin time of the message</text><polygon fill="#FEFECE" filter="url(#f1ns8p1bc9moh9)" points="2101,473.2808,2361,473.2808,2373,485.2808,2361,497.2808,2101,497.2808,2089,485.2808,2101,473.2808" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="2235" y="507.4912">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="260" x="2101" y="489.0889">QoS delay timer (@subscriber) is not armed?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="2373" y="482.6865">no</text><polygon fill="#FEFECE" filter="url(#f1ns8p1bc9moh9)" points="2231,580.0542,2243,592.0542,2231,604.0542,2219,592.0542,2231,580.0542" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#FEFECE" filter="url(#f1ns8p1bc9moh9)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="208" x="2127" y="639.0542"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="188" x="2137" y="660.1929">iterate to next HRT subscriber</text><polygon fill="#FEFECE" filter="url(#f1ns8p1bc9moh9)" points="2170,412.4761,2292,412.4761,2304,424.4761,2292,436.4761,2170,436.4761,2158,424.4761,2170,412.4761" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="2235" y="446.6865">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="122" x="2170" y="428.2842">HRT subscribers left?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="2144" y="421.8818">no</text><rect fill="#000000" filter="url(#f1ns8p1bc9moh9)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="2354" x="142" y="715.0229"/><path d="M960.5,745.4409 L960.5,770.5737 A0,0 0 0 0 960.5,770.5737 L1259.5,770.5737 A0,0 0 0 0 1259.5,770.5737 L1259.5,763.4409 L1279.5,758.0073 L1259.5,755.4409 L1259.5,755.4409 L1249.5,745.4409 L960.5,745.4409 A0,0 0 0 0 960.5,745.4409 " fill="#FBFB77" filter="url(#f1ns8p1bc9moh9)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1249.5,745.4409 L1249.5,755.4409 L1259.5,755.4409 L1249.5,745.4409 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="278" x="966.5" y="762.5078">must be within lock because of HRT counter</text><rect fill="#FEFECE" filter="url(#f1ns8p1bc9moh9)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="79" x="1279.5" y="741.0229"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="59" x="1289.5" y="762.1616">fire event</text><rect fill="#FEFECE" filter="url(#f1ns8p1bc9moh9)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="96" x="1271" y="794.9917"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="76" x="1281" y="816.1304">unlock topic</text><rect fill="#FEFECE" filter="url(#f1ns8p1bc9moh9)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="114" x="1262" y="848.9604"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="94" x="1272" y="870.0991">return success</text><ellipse cx="1319" cy="912.9292" fill="none" filter="url(#f1ns8p1bc9moh9)" rx="10" ry="10" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="1319.5" cy="913.4292" fill="#000000" filter="url(#f1ns8p1bc9moh9)" rx="6" ry="6" style="stroke: none; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="690" x2="690" y1="92.8594" y2="112.8594"/><polygon fill="#A80036" points="686,102.8594,690,112.8594,694,102.8594,690,106.8594" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="690" x2="690" y1="146.8281" y2="166.8281"/><polygon fill="#A80036" points="686,156.8281,690,166.8281,694,156.8281,690,160.8281" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="690" x2="690" y1="244.7969" y2="276.5073"/><polygon fill="#A80036" points="686,266.5073,690,276.5073,694,266.5073,690,270.5073" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="690" x2="690" y1="310.4761" y2="320.4761"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="690" x2="874" y1="320.4761" y2="320.4761"/><polygon fill="#A80036" points="870,285.0894,874,275.0894,878,285.0894,874,281.0894" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="874" x2="874" y1="232.7969" y2="320.4761"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="874" x2="850" y1="232.7969" y2="232.7969"/><polygon fill="#A80036" points="860,228.7969,850,232.7969,860,236.7969,856,232.7969" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="530" x2="506" y1="232.7969" y2="232.7969"/><polygon fill="#A80036" points="502,271.0894,506,281.0894,510,271.0894,506,275.0894" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="506" x2="506" y1="232.7969" y2="332.4761"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="506" x2="690" y1="332.4761" y2="332.4761"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="690" x2="690" y1="332.4761" y2="352.4761"/><polygon fill="#A80036" points="686,342.4761,690,352.4761,694,342.4761,690,346.4761" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="690" x2="690" y1="200.7969" y2="220.7969"/><polygon fill="#A80036" points="686,210.7969,690,220.7969,694,210.7969,690,214.7969" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="71" x2="71" y1="420.4448" y2="455.4448"/><polygon fill="#A80036" points="67,445.4448,71,455.4448,75,445.4448,71,449.4448" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="71" x2="71" y1="489.4136" y2="524.4136"/><polygon fill="#A80036" points="67,514.4136,71,524.4136,75,514.4136,71,518.4136" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="71" x2="71" y1="558.3823" y2="593.3823"/><polygon fill="#A80036" points="67,583.3823,71,593.3823,75,583.3823,71,587.3823" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="295.5" x2="295.5" y1="483.2808" y2="503.2808"/><polygon fill="#A80036" points="291.5,493.2808,295.5,503.2808,299.5,493.2808,295.5,497.2808" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="500" x2="500" y1="483.2808" y2="503.2808"/><polygon fill="#A80036" points="496,493.2808,500,503.2808,504,493.2808,500,497.2808" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="634" x2="634" y1="483.2808" y2="503.2808"/><polygon fill="#A80036" points="630,493.2808,634,503.2808,638,493.2808,634,497.2808" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="860" x2="860" y1="483.2808" y2="503.2808"/><polygon fill="#A80036" points="856,493.2808,860,503.2808,864,493.2808,860,497.2808" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="295.5" x2="295.5" y1="537.2495" y2="557.2495"/><polygon fill="#A80036" points="291.5,547.2495,295.5,557.2495,299.5,547.2495,295.5,551.2495" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="500" x2="500" y1="537.2495" y2="557.2495"/><polygon fill="#A80036" points="496,547.2495,500,557.2495,504,547.2495,500,551.2495" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="634" x2="634" y1="537.2495" y2="557.2495"/><polygon fill="#A80036" points="630,547.2495,634,557.2495,638,547.2495,634,551.2495" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="860" x2="860" y1="537.2495" y2="557.2495"/><polygon fill="#A80036" points="856,547.2495,860,557.2495,864,547.2495,860,551.2495" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="586.5" x2="586.5" y1="563.2495" y2="598.2495"/><polygon fill="#A80036" points="582.5,588.2495,586.5,598.2495,590.5,588.2495,586.5,592.2495" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2231" x2="2231" y1="497.2808" y2="521.6831"/><polygon fill="#A80036" points="2227,511.6831,2231,521.6831,2235,511.6831,2231,515.6831" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2373" x2="2458" y1="485.2808" y2="485.2808"/><polygon fill="#A80036" points="2454,528.6675,2458,538.6675,2462,528.6675,2458,532.6675" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2458" x2="2458" y1="485.2808" y2="592.0542"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2458" x2="2243" y1="592.0542" y2="592.0542"/><polygon fill="#A80036" points="2253,588.0542,2243,592.0542,2253,596.0542,2249,592.0542" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2231" x2="2231" y1="555.6519" y2="580.0542"/><polygon fill="#A80036" points="2227,570.0542,2231,580.0542,2235,570.0542,2231,574.0542" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2231" x2="2231" y1="604.0542" y2="639.0542"/><polygon fill="#A80036" points="2227,629.0542,2231,639.0542,2235,629.0542,2231,633.0542" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2231" x2="2231" y1="436.4761" y2="473.2808"/><polygon fill="#A80036" points="2227,463.2808,2231,473.2808,2235,463.2808,2231,467.2808" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2231" x2="2231" y1="673.0229" y2="683.0229"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2231" x2="2482" y1="683.0229" y2="683.0229"/><polygon fill="#A80036" points="2478,564.7495,2482,554.7495,2486,564.7495,2482,560.7495" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2482" x2="2482" y1="424.4761" y2="683.0229"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2482" x2="2304" y1="424.4761" y2="424.4761"/><polygon fill="#A80036" points="2314,420.4761,2304,424.4761,2314,428.4761,2310,424.4761" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2158" x2="1483" y1="424.4761" y2="424.4761"/><polygon fill="#A80036" points="1479,550.7495,1483,560.7495,1487,550.7495,1483,554.7495" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1483" x2="1483" y1="424.4761" y2="695.0229"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1483" x2="2231" y1="695.0229" y2="695.0229"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2231" x2="2231" y1="695.0229" y2="715.0229"/><polygon fill="#A80036" points="2227,705.0229,2231,715.0229,2235,705.0229,2231,709.0229" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="586.5" x2="586.5" y1="392.4761" y2="477.2808"/><polygon fill="#A80036" points="582.5,467.2808,586.5,477.2808,590.5,467.2808,586.5,471.2808" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1244" x2="1244" y1="392.4761" y2="537.7651"/><polygon fill="#A80036" points="1240,527.7651,1244,537.7651,1248,527.7651,1244,531.7651" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2231" x2="2231" y1="392.4761" y2="412.4761"/><polygon fill="#A80036" points="2227,402.4761,2231,412.4761,2235,402.4761,2231,406.4761" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="586.5" x2="586.5" y1="632.2183" y2="715.0229"/><polygon fill="#A80036" points="582.5,705.0229,586.5,715.0229,590.5,705.0229,586.5,709.0229" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1244" x2="1244" y1="571.7339" y2="715.0229"/><polygon fill="#A80036" points="1240,705.0229,1244,715.0229,1248,705.0229,1244,709.0229" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1319" x2="1319" y1="721.0229" y2="741.0229"/><polygon fill="#A80036" points="1315,731.0229,1319,741.0229,1323,731.0229,1319,735.0229" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1319" x2="1319" y1="774.9917" y2="794.9917"/><polygon fill="#A80036" points="1315,784.9917,1319,794.9917,1323,784.9917,1319,788.9917" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1319" x2="1319" y1="828.9604" y2="848.9604"/><polygon fill="#A80036" points="1315,838.9604,1319,848.9604,1323,838.9604,1319,842.9604" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1319" x2="1319" y1="882.9292" y2="902.9292"/><polygon fill="#A80036" points="1315,892.9292,1319,902.9292,1323,892.9292,1319,896.9292" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="625" x2="71" y1="364.4761" y2="364.4761"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="71" x2="71" y1="364.4761" y2="386.4761"/><polygon fill="#A80036" points="67,376.4761,71,386.4761,75,376.4761,71,380.4761" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="755" x2="1319" y1="364.4761" y2="364.4761"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1319" x2="1319" y1="364.4761" y2="386.4761"/><polygon fill="#A80036" points="1315,376.4761,1319,386.4761,1323,376.4761,1319,380.4761" style="stroke: #A80036; stroke-width: 1.0;"/><!-- |
---|---|---|---|
2 | @startuml |
||
3 | |||
4 | title **µRtWare**\nurtPublisherPublish()\n |
||
5 | |||
6 | |||
7 | |||
8 | start |
||
9 | :lock topic; |
||
10 | :lock next message; |
||
11 | while (HRT consumers left for the message & no timeout?) is (yes) |
||
12 | :wait for condition variable to be signaled or timeout; |
||
13 | endwhile (no) |
||
14 | if (Timeout occurred?) then (yes) |
||
15 | :unlock message; |
||
16 | :unlock topic; |
||
17 | :return error; |
||
18 | stop |
||
19 | else (no) |
||
20 | fork |
||
21 | fork |
||
22 | :iterate topic pointer to this message; |
||
23 | fork again |
||
24 | :copy payload; |
||
25 | fork again |
||
26 | :set origin time; |
||
27 | fork again |
||
28 | :set number of HRT consumers (from topic); |
||
29 | endfork |
||
30 | :unlock message; |
||
31 | fork again |
||
32 | :set QoS rate timer (@topic) wrt. most critical HRT subscriber; |
||
33 | fork again |
||
34 | while (HRT subscribers left?) is (yes) |
||
35 | if (QoS delay timer (@subscriber) is not armed?) then (yes) |
||
36 | :set QoS delay timer (@subscriber) wrt. origin time of the message; |
||
37 | note |
||
38 | no lock required since this timer is only accessed when the topic is locked |
||
39 | endnote |
||
40 | else (no) |
||
41 | endif |
||
42 | :iterate to next HRT subscriber; |
||
43 | endwhile (no) |
||
44 | endfork |
||
45 | :fire event; |
||
46 | note |
||
47 | must be within lock because of HRT counter |
||
48 | endnote |
||
49 | :unlock topic; |
||
50 | :return success; |
||
51 | stop |
||
52 | endif |
||
53 | |||
54 | @enduml |
||
55 | |||
56 | PlantUML version 1.2018.11(Sat Sep 22 18:43:53 CEST 2018) |
||
57 | (GPL source distribution) |
||
58 | Java Runtime: OpenJDK Runtime Environment |
||
59 | JVM: OpenJDK 64-Bit Server VM |
||
60 | Java Version: 1.8.0_181-8u181-b13-0ubuntu0.16.04.1-b13 |
||
61 | Operating System: Linux |
||
62 | OS Version: 4.15.0-36-generic |
||
63 | Default Encoding: UTF-8 |
||
64 | Language: en |
||
65 | Country: US |
||
66 | --></g></svg> |