Statistics
| Branch: | Revision:

urtware / doc / statediagrams / publisher / urtPublisherPublish.svg @ 7491c395

History | View | Annotate | Download (23.74 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="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 &amp; 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>