Statistics
| Branch: | Revision:

urtware / doc / statediagrams / publisher / publish.svg @ 6ebd2388

History | View | Annotate | Download (23.442 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="866px" preserveAspectRatio="none" style="width:2377px;height:866px;" version="1.1" viewBox="0 0 2377 866" width="2377px" zoomAndPan="magnify"><defs><filter height="300%" id="fee41veaagnt2" 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="1143" y="26.708">µRtWare</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="183" x="1096" y="47.6611">urtPublisherPublish()</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="0" x="1190.5" y="68.6143"/><ellipse cx="657.25" cy="82.8594" fill="#000000" filter="url(#fee41veaagnt2)" rx="10" ry="10" style="stroke: none; stroke-width: 1.0;"/><rect fill="#FEFECE" filter="url(#fee41veaagnt2)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="80" x="617.25" y="112.8594"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="60" x="627.25" y="133.998">lock topic</text><rect fill="#FEFECE" filter="url(#fee41veaagnt2)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="137" x="588.75" y="166.8281"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="117" x="598.75" y="187.9668">lock next message</text><rect fill="#FEFECE" filter="url(#fee41veaagnt2)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="344" x="485.25" y="276.5073"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="324" x="495.25" y="297.646">wait for condition variable to be signaled or timeout</text><polygon fill="#FEFECE" filter="url(#fee41veaagnt2)" points="509.25,220.7969,805.25,220.7969,817.25,232.7969,805.25,244.7969,509.25,244.7969,497.25,232.7969,509.25,220.7969" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="661.25" y="255.0073">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="296" x="509.25" 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="483.25" y="230.2026">no</text><polygon fill="#FEFECE" filter="url(#fee41veaagnt2)" points="604.25,352.4761,710.25,352.4761,722.25,364.4761,710.25,376.4761,604.25,376.4761,592.25,364.4761,604.25,352.4761" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="106" x="604.25" y="368.2842">Timeout occurred?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="572.25" y="361.8818">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="722.25" y="361.8818">no</text><rect fill="#FEFECE" filter="url(#fee41veaagnt2)" 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(#fee41veaagnt2)" 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(#fee41veaagnt2)" 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(#fee41veaagnt2)" rx="10" ry="10" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="71.5" cy="603.8823" fill="#000000" filter="url(#fee41veaagnt2)" rx="6" ry="6" style="stroke: none; stroke-width: 1.0;"/><rect fill="#000000" filter="url(#fee41veaagnt2)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="2223" x="142" y="386.4761"/><rect fill="#000000" filter="url(#fee41veaagnt2)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="861" x="156" y="442.7964"/><rect fill="#FEFECE" filter="url(#fee41veaagnt2)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="251" x="170" y="468.7964"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="231" x="180" y="489.9351">iterate topic pointer to this message</text><rect fill="#FEFECE" filter="url(#fee41veaagnt2)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="102" x="449" y="468.7964"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="82" x="459" y="489.9351">copy payload</text><rect fill="#FEFECE" filter="url(#fee41veaagnt2)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="110" x="579" y="468.7964"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="90" x="589" y="489.9351">set origin time</text><rect fill="#FEFECE" filter="url(#fee41veaagnt2)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="286" x="717" y="468.7964"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="266" x="727" y="489.9351">set number of HRT consumers (from topic)</text><rect fill="#000000" filter="url(#fee41veaagnt2)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="861" x="156" y="522.7651"/><rect fill="#FEFECE" filter="url(#fee41veaagnt2)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="122" x="525.5" y="563.7651"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="102" x="535.5" y="584.9038">unlock message</text><rect fill="#FEFECE" filter="url(#fee41veaagnt2)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="350" x="1045" y="503.2808"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="330" x="1055" y="524.4194">set QoS timer (rate) wrt. most critical HRT subscriber</text><path d="M1457,526.1011 L1457,551.2339 A0,0 0 0 0 1457,551.2339 L1946,551.2339 A0,0 0 0 0 1946,551.2339 L1946,544.1011 L1966,538.6675 L1946,536.1011 L1946,536.1011 L1936,526.1011 L1457,526.1011 A0,0 0 0 0 1457,526.1011 " fill="#FBFB77" filter="url(#fee41veaagnt2)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1936,526.1011 L1936,536.1011 L1946,536.1011 L1936,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="1463" y="543.168">no lock required since this timer is only accessed when the topic is locked</text><rect fill="#FEFECE" filter="url(#fee41veaagnt2)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="351" x="1966" y="521.6831"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="331" x="1976" y="542.8218">set QoS timer (delay) wrt. origin time of the message</text><polygon fill="#FEFECE" filter="url(#fee41veaagnt2)" points="2050,473.2808,2233,473.2808,2245,485.2808,2233,497.2808,2050,497.2808,2038,485.2808,2050,473.2808" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="2145.5" y="507.4912">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="183" x="2050" y="489.0889">QoS timer (delay) is not armed?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="2245" y="482.6865">no</text><polygon fill="#FEFECE" filter="url(#fee41veaagnt2)" points="2141.5,580.0542,2153.5,592.0542,2141.5,604.0542,2129.5,592.0542,2141.5,580.0542" style="stroke: #A80036; stroke-width: 1.5;"/><polygon fill="#FEFECE" filter="url(#fee41veaagnt2)" points="2080.5,412.4761,2202.5,412.4761,2214.5,424.4761,2202.5,436.4761,2080.5,436.4761,2068.5,424.4761,2080.5,412.4761" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="2145.5" y="446.6865">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="122" x="2080.5" y="428.2842">HRT subscribers left?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="2054.5" y="421.8818">no</text><rect fill="#000000" filter="url(#fee41veaagnt2)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="2223" x="142" y="648.0542"/><path d="M895,678.4722 L895,703.605 A0,0 0 0 0 895,703.605 L1194,703.605 A0,0 0 0 0 1194,703.605 L1194,696.4722 L1214,691.0386 L1194,688.4722 L1194,688.4722 L1184,678.4722 L895,678.4722 A0,0 0 0 0 895,678.4722 " fill="#FBFB77" filter="url(#fee41veaagnt2)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1184,678.4722 L1184,688.4722 L1194,688.4722 L1184,678.4722 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="278" x="901" y="695.5391">must be within lock because of HRT counter</text><rect fill="#FEFECE" filter="url(#fee41veaagnt2)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="79" x="1214" y="674.0542"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="59" x="1224" y="695.1929">fire event</text><rect fill="#FEFECE" filter="url(#fee41veaagnt2)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="96" x="1205.5" y="728.0229"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="76" x="1215.5" y="749.1616">unlock topic</text><rect fill="#FEFECE" filter="url(#fee41veaagnt2)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="114" x="1196.5" y="781.9917"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="94" x="1206.5" y="803.1304">return success</text><ellipse cx="1253.5" cy="845.9604" fill="none" filter="url(#fee41veaagnt2)" rx="10" ry="10" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="1254" cy="846.4604" fill="#000000" filter="url(#fee41veaagnt2)" rx="6" ry="6" style="stroke: none; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="657.25" x2="657.25" y1="92.8594" y2="112.8594"/><polygon fill="#A80036" points="653.25,102.8594,657.25,112.8594,661.25,102.8594,657.25,106.8594" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="657.25" x2="657.25" y1="146.8281" y2="166.8281"/><polygon fill="#A80036" points="653.25,156.8281,657.25,166.8281,661.25,156.8281,657.25,160.8281" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="657.25" x2="657.25" y1="244.7969" y2="276.5073"/><polygon fill="#A80036" points="653.25,266.5073,657.25,276.5073,661.25,266.5073,657.25,270.5073" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="657.25" x2="657.25" y1="310.4761" y2="320.4761"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="657.25" x2="841.25" y1="320.4761" y2="320.4761"/><polygon fill="#A80036" points="837.25,285.0894,841.25,275.0894,845.25,285.0894,841.25,281.0894" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="841.25" x2="841.25" y1="232.7969" y2="320.4761"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="841.25" x2="817.25" y1="232.7969" y2="232.7969"/><polygon fill="#A80036" points="827.25,228.7969,817.25,232.7969,827.25,236.7969,823.25,232.7969" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="497.25" x2="473.25" y1="232.7969" y2="232.7969"/><polygon fill="#A80036" points="469.25,271.0894,473.25,281.0894,477.25,271.0894,473.25,275.0894" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="473.25" x2="473.25" y1="232.7969" y2="332.4761"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="473.25" x2="657.25" y1="332.4761" y2="332.4761"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="657.25" x2="657.25" y1="332.4761" y2="352.4761"/><polygon fill="#A80036" points="653.25,342.4761,657.25,352.4761,661.25,342.4761,657.25,346.4761" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="657.25" x2="657.25" y1="200.7969" y2="220.7969"/><polygon fill="#A80036" points="653.25,210.7969,657.25,220.7969,661.25,210.7969,657.25,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="448.7964" y2="468.7964"/><polygon fill="#A80036" points="291.5,458.7964,295.5,468.7964,299.5,458.7964,295.5,462.7964" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="500" x2="500" y1="448.7964" y2="468.7964"/><polygon fill="#A80036" points="496,458.7964,500,468.7964,504,458.7964,500,462.7964" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="634" x2="634" y1="448.7964" y2="468.7964"/><polygon fill="#A80036" points="630,458.7964,634,468.7964,638,458.7964,634,462.7964" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="860" x2="860" y1="448.7964" y2="468.7964"/><polygon fill="#A80036" points="856,458.7964,860,468.7964,864,458.7964,860,462.7964" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="295.5" x2="295.5" y1="502.7651" y2="522.7651"/><polygon fill="#A80036" points="291.5,512.7651,295.5,522.7651,299.5,512.7651,295.5,516.7651" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="500" x2="500" y1="502.7651" y2="522.7651"/><polygon fill="#A80036" points="496,512.7651,500,522.7651,504,512.7651,500,516.7651" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="634" x2="634" y1="502.7651" y2="522.7651"/><polygon fill="#A80036" points="630,512.7651,634,522.7651,638,512.7651,634,516.7651" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="860" x2="860" y1="502.7651" y2="522.7651"/><polygon fill="#A80036" points="856,512.7651,860,522.7651,864,512.7651,860,516.7651" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="586.5" x2="586.5" y1="528.7651" y2="563.7651"/><polygon fill="#A80036" points="582.5,553.7651,586.5,563.7651,590.5,553.7651,586.5,557.7651" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2141.5" x2="2141.5" y1="497.2808" y2="521.6831"/><polygon fill="#A80036" points="2137.5,511.6831,2141.5,521.6831,2145.5,511.6831,2141.5,515.6831" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2245" x2="2327" y1="485.2808" y2="485.2808"/><polygon fill="#A80036" points="2323,528.6675,2327,538.6675,2331,528.6675,2327,532.6675" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2327" x2="2327" y1="485.2808" y2="592.0542"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2327" x2="2153.5" y1="592.0542" y2="592.0542"/><polygon fill="#A80036" points="2163.5,588.0542,2153.5,592.0542,2163.5,596.0542,2159.5,592.0542" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2141.5" x2="2141.5" y1="555.6519" y2="580.0542"/><polygon fill="#A80036" points="2137.5,570.0542,2141.5,580.0542,2145.5,570.0542,2141.5,574.0542" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2141.5" x2="2141.5" y1="436.4761" y2="473.2808"/><polygon fill="#A80036" points="2137.5,463.2808,2141.5,473.2808,2145.5,463.2808,2141.5,467.2808" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2141.5" x2="2141.5" y1="604.0542" y2="616.0542"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2141.5" x2="2351" y1="616.0542" y2="616.0542"/><polygon fill="#A80036" points="2347,530.2651,2351,520.2651,2355,530.2651,2351,526.2651" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2351" x2="2351" y1="424.4761" y2="616.0542"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2351" x2="2214.5" y1="424.4761" y2="424.4761"/><polygon fill="#A80036" points="2224.5,420.4761,2214.5,424.4761,2224.5,428.4761,2220.5,424.4761" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2068.5" x2="1435" y1="424.4761" y2="424.4761"/><polygon fill="#A80036" points="1431,516.2651,1435,526.2651,1439,516.2651,1435,520.2651" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1435" x2="1435" y1="424.4761" y2="628.0542"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1435" x2="2141.5" y1="628.0542" y2="628.0542"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2141.5" x2="2141.5" y1="628.0542" y2="648.0542"/><polygon fill="#A80036" points="2137.5,638.0542,2141.5,648.0542,2145.5,638.0542,2141.5,642.0542" 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="442.7964"/><polygon fill="#A80036" points="582.5,432.7964,586.5,442.7964,590.5,432.7964,586.5,436.7964" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1220" x2="1220" y1="392.4761" y2="503.2808"/><polygon fill="#A80036" points="1216,493.2808,1220,503.2808,1224,493.2808,1220,497.2808" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2141.5" x2="2141.5" y1="392.4761" y2="412.4761"/><polygon fill="#A80036" points="2137.5,402.4761,2141.5,412.4761,2145.5,402.4761,2141.5,406.4761" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="586.5" x2="586.5" y1="597.7339" y2="648.0542"/><polygon fill="#A80036" points="582.5,638.0542,586.5,648.0542,590.5,638.0542,586.5,642.0542" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1220" x2="1220" y1="537.2495" y2="648.0542"/><polygon fill="#A80036" points="1216,638.0542,1220,648.0542,1224,638.0542,1220,642.0542" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1253.5" x2="1253.5" y1="654.0542" y2="674.0542"/><polygon fill="#A80036" points="1249.5,664.0542,1253.5,674.0542,1257.5,664.0542,1253.5,668.0542" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1253.5" x2="1253.5" y1="708.0229" y2="728.0229"/><polygon fill="#A80036" points="1249.5,718.0229,1253.5,728.0229,1257.5,718.0229,1253.5,722.0229" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1253.5" x2="1253.5" y1="761.9917" y2="781.9917"/><polygon fill="#A80036" points="1249.5,771.9917,1253.5,781.9917,1257.5,771.9917,1253.5,775.9917" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1253.5" x2="1253.5" y1="815.9604" y2="835.9604"/><polygon fill="#A80036" points="1249.5,825.9604,1253.5,835.9604,1257.5,825.9604,1253.5,829.9604" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="592.25" 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="722.25" x2="1253.5" y1="364.4761" y2="364.4761"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1253.5" x2="1253.5" y1="364.4761" y2="386.4761"/><polygon fill="#A80036" points="1249.5,376.4761,1253.5,386.4761,1257.5,376.4761,1253.5,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 timer (rate) wrt. most critical HRT subscriber;
33
  fork again
34
    while (HRT subscribers left?) is (yes)
35
      if (QoS timer (delay) is not armed?) then (yes)
36
        :set QoS timer (delay) 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
    endwhile (no)
43
  endfork
44
  :fire event;
45
  note
46
    must be within lock because of HRT counter
47
  endnote
48
  :unlock topic;
49
  :return success;
50
  stop
51
endif
52

    
53
@enduml
54

    
55
PlantUML version 1.2018.11(Sat Sep 22 18:43:53 CEST 2018)
56
(GPL source distribution)
57
Java Runtime: OpenJDK Runtime Environment
58
JVM: OpenJDK 64-Bit Server VM
59
Java Version: 1.8.0_181-8u181-b13-0ubuntu0.16.04.1-b13
60
Operating System: Linux
61
OS Version: 4.15.0-36-generic
62
Default Encoding: UTF-8
63
Language: en
64
Country: US
65
--></g></svg>