Statistics
| Branch: | Revision:

urtware / doc / activitydiagrams / publisher / urtPublisherPublish.svg @ ee83a495

History | View | Annotate | Download (33.835 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="1282px" preserveAspectRatio="none" style="width:2473px;height:1282px;" version="1.1" viewBox="0 0 2473 1282" width="2473px" zoomAndPan="magnify"><defs><filter height="300%" id="fgb6zrwdj1tda" 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="1191" y="26.708">µRtWare</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="183" x="1144" y="47.6611">urtPublisherPublish()</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="0" x="1238.5" y="68.6143"/><path d="M1017,72.8594 L1017,319.8516 L1402,319.8516 L1402,82.8594 L1392,72.8594 L1017,72.8594 " fill="#FBFB77" filter="url(#fgb6zrwdj1tda)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1392,72.8594 L1392,82.8594 L1402,82.8594 L1392,72.8594 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="1017" x2="1114" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1118" y="89.4263"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="69" x="1118" y="89.4263">publisher</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="110" x="1191" y="89.4263">: urt_publisher_t*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1305" x2="1402" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="197" x="1023" y="105.0591">Pointer to the publisher to use.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="76" x="1023" y="120.1919">Must not be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="1103" y="120.1919">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="1135" y="120.1919">.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1017" x2="1153.5" y1="130.8242" y2="130.8242"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1157.5" y="134.8247"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="59" x="1157.5" y="134.8247">payload</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="41" x="1220.5" y="134.8247">: void*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1265.5" x2="1402" y1="130.8242" y2="130.8242"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="226" x="1023" y="150.4575">Pointer to the data to be published.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="46" x="1023" y="165.5903">May be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="1073" y="165.5903">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="195" x="1109" y="165.5903">for messages without payload.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1017" x2="1176.5" y1="176.2227" y2="176.2227"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1180.5" y="180.2231"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="9" x="1180.5" y="180.2231">n</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="45" x="1193.5" y="180.2231">: size_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1242.5" x2="1402" y1="176.2227" y2="176.2227"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="180" x="1023" y="195.856">Size of the payload in bytes.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1017" x2="1155" y1="206.4883" y2="206.4883"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1159" y="210.4888"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="6" x="1159" y="210.4888">t</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="91" x="1169" y="210.4888">: urt_osTime_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1264" x2="1402" y1="206.4883" y2="206.4883"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="246" x="1023" y="226.1216">Timestamp to be set for the message.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1017" x2="1135.5" y1="236.7539" y2="236.7539"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1139.5" y="240.7544"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="57" x="1139.5" y="240.7544">timeout</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="79" x="1200.5" y="240.7544">: urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1283.5" x2="1402" y1="236.7539" y2="236.7539"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="364" x="1023" y="256.3872">Timeout delay in case the message cannot be published.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1017" x2="1402" y1="264.4531" y2="264.4531"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="1017" x2="1402" y1="266.4531" y2="266.4531"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="1017" x2="1138.5" y1="277.0195" y2="277.0195"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="1142.5" y="281.02"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="45" x="1142.5" y="281.02">return</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="85" x="1191.5" y="281.02">: urt_status_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="1280.5" x2="1402" y1="277.0195" y2="277.0195"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="1023" y="296.6528">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="1076" y="296.6528">URT_STATUS_OK</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="75" x="1184" y="296.6528">on success.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="1023" y="311.7856">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="128" x="1076" y="311.7856">URT_STATUS_ERROR</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="74" x="1208" y="311.7856">on timeout.</text><ellipse cx="1209.5" cy="349.8516" fill="#000000" filter="url(#fgb6zrwdj1tda)" rx="10" ry="10" style="stroke: none; stroke-width: 1.0;"/><rect fill="#FEFECE" filter="url(#fgb6zrwdj1tda)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="80" x="1169.5" y="379.8516"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="60" x="1179.5" y="400.9902">lock topic</text><rect fill="#FEFECE" filter="url(#fgb6zrwdj1tda)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="201" x="1109" y="433.8203"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="181" x="1119" y="454.959">access topic's next message</text><rect fill="#FEFECE" filter="url(#fgb6zrwdj1tda)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="524" x="947.5" y="543.4995"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="504" x="957.5" y="564.6382">wait for topic's condition variable (using topic's mutex) to be signaled or timeout</text><polygon fill="#FEFECE" filter="url(#fgb6zrwdj1tda)" points="1156.5,597.4683,1262.5,597.4683,1274.5,609.4683,1262.5,621.4683,1156.5,621.4683,1144.5,609.4683,1156.5,597.4683" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="106" x="1156.5" y="613.2764">Timeout occurred?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="1124.5" y="606.874">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="1274.5" y="606.874">no</text><rect fill="#FEFECE" filter="url(#fgb6zrwdj1tda)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="96" x="1071" y="631.4683"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="76" x="1081" y="652.6069">unlock topic</text><path d="M882,700.437 L882,725.5698 A0,0 0 0 0 882,725.5698 L1088,725.5698 A0,0 0 0 0 1088,725.5698 L1088,718.437 L1108,713.0034 L1088,710.437 L1088,710.437 L1078,700.437 L882,700.437 A0,0 0 0 0 882,700.437 " fill="#FBFB77" filter="url(#fgb6zrwdj1tda)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1078,700.437 L1078,710.437 L1088,710.437 L1078,700.437 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="888" y="717.5039">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="128" x="941" y="717.5039">URT_STATUS_ERROR</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="1069" y="717.5039">.</text><ellipse cx="1119" cy="713.0034" fill="#FFFFFF" filter="url(#fgb6zrwdj1tda)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="1119" cy="713.0034" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><rect fill="#FEFECE" filter="url(#fgb6zrwdj1tda)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="201" x="1199.5" y="679.8706"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="181" x="1209.5" y="701.0093">access topic's next message</text><polygon fill="#FEFECE" filter="url(#fgb6zrwdj1tda)" points="1199,631.4683,1401,631.4683,1413,643.4683,1401,655.4683,1199,655.4683,1187,643.4683,1199,631.4683" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="1304" y="665.6787">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="202" x="1199" y="647.2764">Message timestamp was modified?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="1413" y="640.874">no</text><polygon fill="#FEFECE" filter="url(#fgb6zrwdj1tda)" points="1300,738.2417,1312,750.2417,1300,762.2417,1288,750.2417,1300,738.2417" style="stroke: #A80036; stroke-width: 1.5;"/><polygon fill="#FEFECE" filter="url(#fgb6zrwdj1tda)" points="1101,487.7891,1318,487.7891,1330,499.7891,1318,511.7891,1101,511.7891,1089,499.7891,1101,487.7891" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="1213.5" y="521.9995">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="217" x="1101" y="503.5972">HRT consumers left for the message?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="1075" y="497.1948">no</text><rect fill="#000000" filter="url(#fgb6zrwdj1tda)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="2451" x="10" y="804.2417"/><rect fill="#000000" filter="url(#fgb6zrwdj1tda)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="960" x="22" y="924.4365"/><rect fill="#FEFECE" filter="url(#fgb6zrwdj1tda)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="251" x="34" y="950.4365"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="231" x="44" y="971.5752">iterate topic pointer to this message</text><rect fill="#FEFECE" filter="url(#fgb6zrwdj1tda)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="180" x="295" y="950.4365"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="160" x="305" y="971.5752">copy payload to message</text><rect fill="#FEFECE" filter="url(#fgb6zrwdj1tda)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="187" x="485" y="950.4365"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="167" x="495" y="971.5752">set origin time of message</text><rect fill="#FEFECE" filter="url(#fgb6zrwdj1tda)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="286" x="682" y="950.4365"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="266" x="692" y="971.5752">set number of HRT consumers (from topic)</text><rect fill="#000000" filter="url(#fgb6zrwdj1tda)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="960" x="22" y="1004.4053"/><rect fill="#FEFECE" filter="url(#fgb6zrwdj1tda)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="398" x="1010" y="950.4365"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="378" x="1020" y="971.5752">set QoS rate timer (@topic) wrt. most critical HRT subscriber</text><path d="M1470,938.7725 L1470,963.9053 A0,0 0 0 0 1470,963.9053 L1965,963.9053 A0,0 0 0 0 1965,963.9053 L1965,956.7725 L1985,951.3389 L1965,948.7725 L1965,948.7725 L1955,938.7725 L1470,938.7725 A0,0 0 0 0 1470,938.7725 " fill="#FBFB77" filter="url(#fgb6zrwdj1tda)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1955,938.7725 L1955,948.7725 L1965,948.7725 L1955,938.7725 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="474" x="1476" y="955.8394">No lock required since this timer is only accessed when the topic is locked.</text><rect fill="#FEFECE" filter="url(#fgb6zrwdj1tda)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="434" x="1985" y="934.3545"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="414" x="1995" y="955.4932">set QoS delay timer (@subscriber) wrt. origin time of the message</text><polygon fill="#FEFECE" filter="url(#fgb6zrwdj1tda)" points="2072,885.9521,2332,885.9521,2344,897.9521,2332,909.9521,2072,909.9521,2060,897.9521,2072,885.9521" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="2206" y="920.1626">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="260" x="2072" y="901.7603">QoS delay timer (@subscriber) is not armed?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="2344" y="895.3579">no</text><polygon fill="#FEFECE" filter="url(#fgb6zrwdj1tda)" points="2202,992.7256,2214,1004.7256,2202,1016.7256,2190,1004.7256,2202,992.7256" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#FEFECE" filter="url(#fgb6zrwdj1tda)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="208" x="2098" y="1036.7256"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="188" x="2108" y="1057.8643">iterate to next HRT subscriber</text><polygon fill="#FEFECE" filter="url(#fgb6zrwdj1tda)" points="2141,830.2417,2263,830.2417,2275,842.2417,2263,854.2417,2141,854.2417,2129,842.2417,2141,830.2417" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="2206" y="864.4521">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="122" x="2141" y="846.0498">HRT subscribers left?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="2115" y="839.6475">no</text><rect fill="#000000" filter="url(#fgb6zrwdj1tda)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="2451" x="10" y="1112.6943"/><path d="M814,1143.1123 L814,1168.2451 A0,0 0 0 0 814,1168.2451 L1150,1168.2451 A0,0 0 0 0 1150,1168.2451 L1150,1161.1123 L1170,1155.6787 L1150,1153.1123 L1150,1153.1123 L1140,1143.1123 L814,1143.1123 A0,0 0 0 0 814,1143.1123 " fill="#FBFB77" filter="url(#fgb6zrwdj1tda)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1140,1143.1123 L1140,1153.1123 L1150,1153.1123 L1140,1143.1123 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="315" x="820" y="1160.1792">Msut be within topic lock because of HRT counter.</text><rect fill="#FEFECE" filter="url(#fgb6zrwdj1tda)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="79" x="1170" y="1138.6943"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="59" x="1180" y="1159.833">fire event</text><rect fill="#FEFECE" filter="url(#fgb6zrwdj1tda)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="96" x="1161.5" y="1192.6631"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="76" x="1171.5" y="1213.8018">unlock topic</text><path d="M996.5,1245.0654 L996.5,1270.1982 A0,0 0 0 0 996.5,1270.1982 L1178.5,1270.1982 A0,0 0 0 0 1178.5,1270.1982 L1178.5,1263.0654 L1198.5,1257.6318 L1178.5,1255.0654 L1178.5,1255.0654 L1168.5,1245.0654 L996.5,1245.0654 A0,0 0 0 0 996.5,1245.0654 " fill="#FBFB77" filter="url(#fgb6zrwdj1tda)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1168.5,1245.0654 L1168.5,1255.0654 L1178.5,1255.0654 L1168.5,1245.0654 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="1002.5" y="1262.1323">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="1055.5" y="1262.1323">URT_STATUS_OK</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="1159.5" y="1262.1323">.</text><ellipse cx="1209.5" cy="1257.6318" fill="#FFFFFF" filter="url(#fgb6zrwdj1tda)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="1209.5" cy="1257.6318" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1209.5" x2="1209.5" y1="319.8516" y2="339.8516"/><polygon fill="#A80036" points="1205.5,329.8516,1209.5,339.8516,1213.5,329.8516,1209.5,333.8516" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1209.5" x2="1209.5" y1="359.8516" y2="379.8516"/><polygon fill="#A80036" points="1205.5,369.8516,1209.5,379.8516,1213.5,369.8516,1209.5,373.8516" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1209.5" x2="1209.5" y1="413.8203" y2="433.8203"/><polygon fill="#A80036" points="1205.5,423.8203,1209.5,433.8203,1213.5,423.8203,1209.5,427.8203" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1119" x2="1119" y1="665.437" y2="702.0034"/><polygon fill="#A80036" points="1115,692.0034,1119,702.0034,1123,692.0034,1119,696.0034" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1300" x2="1300" y1="655.4683" y2="679.8706"/><polygon fill="#A80036" points="1296,669.8706,1300,679.8706,1304,669.8706,1300,673.8706" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1413" x2="1425" y1="643.4683" y2="643.4683"/><polygon fill="#A80036" points="1421,686.855,1425,696.855,1429,686.855,1425,690.855" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1425" x2="1425" y1="643.4683" y2="750.2417"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1425" x2="1312" y1="750.2417" y2="750.2417"/><polygon fill="#A80036" points="1322,746.2417,1312,750.2417,1322,754.2417,1318,750.2417" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1300" x2="1300" y1="713.8394" y2="738.2417"/><polygon fill="#A80036" points="1296,728.2417,1300,738.2417,1304,728.2417,1300,732.2417" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1144.5" x2="1119" y1="609.4683" y2="609.4683"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1119" x2="1119" y1="609.4683" y2="631.4683"/><polygon fill="#A80036" points="1115,621.4683,1119,631.4683,1123,621.4683,1119,625.4683" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1274.5" x2="1300" y1="609.4683" y2="609.4683"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1300" x2="1300" y1="609.4683" y2="631.4683"/><polygon fill="#A80036" points="1296,621.4683,1300,631.4683,1304,621.4683,1300,625.4683" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1300" x2="1300" y1="762.2417" y2="772.2417"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1300" x2="1483.5" y1="772.2417" y2="772.2417"/><polygon fill="#A80036" points="1479.5,639.9683,1483.5,629.9683,1487.5,639.9683,1483.5,635.9683" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1483.5" x2="1483.5" y1="499.7891" y2="772.2417"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1483.5" x2="1330" y1="499.7891" y2="499.7891"/><polygon fill="#A80036" points="1340,495.7891,1330,499.7891,1340,503.7891,1336,499.7891" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1209.5" x2="1209.5" y1="577.4683" y2="597.4683"/><polygon fill="#A80036" points="1205.5,587.4683,1209.5,597.4683,1213.5,587.4683,1209.5,591.4683" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1209.5" x2="1209.5" y1="511.7891" y2="543.4995"/><polygon fill="#A80036" points="1205.5,533.4995,1209.5,543.4995,1213.5,533.4995,1209.5,537.4995" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1089" x2="860" y1="499.7891" y2="499.7891"/><polygon fill="#A80036" points="856,625.9683,860,635.9683,864,625.9683,860,629.9683" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="860" x2="860" y1="499.7891" y2="784.2417"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="860" x2="1209.5" y1="784.2417" y2="784.2417"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1209.5" x2="1209.5" y1="784.2417" y2="804.2417"/><polygon fill="#A80036" points="1205.5,794.2417,1209.5,804.2417,1213.5,794.2417,1209.5,798.2417" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1209.5" x2="1209.5" y1="467.7891" y2="487.7891"/><polygon fill="#A80036" points="1205.5,477.7891,1209.5,487.7891,1213.5,477.7891,1209.5,481.7891" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="159.5" x2="159.5" y1="930.4365" y2="950.4365"/><polygon fill="#A80036" points="155.5,940.4365,159.5,950.4365,163.5,940.4365,159.5,944.4365" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="385" x2="385" y1="930.4365" y2="950.4365"/><polygon fill="#A80036" points="381,940.4365,385,950.4365,389,940.4365,385,944.4365" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="578.5" x2="578.5" y1="930.4365" y2="950.4365"/><polygon fill="#A80036" points="574.5,940.4365,578.5,950.4365,582.5,940.4365,578.5,944.4365" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="825" x2="825" y1="930.4365" y2="950.4365"/><polygon fill="#A80036" points="821,940.4365,825,950.4365,829,940.4365,825,944.4365" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="159.5" x2="159.5" y1="984.4053" y2="1004.4053"/><polygon fill="#A80036" points="155.5,994.4053,159.5,1004.4053,163.5,994.4053,159.5,998.4053" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="385" x2="385" y1="984.4053" y2="1004.4053"/><polygon fill="#A80036" points="381,994.4053,385,1004.4053,389,994.4053,385,998.4053" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="578.5" x2="578.5" y1="984.4053" y2="1004.4053"/><polygon fill="#A80036" points="574.5,994.4053,578.5,1004.4053,582.5,994.4053,578.5,998.4053" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="825" x2="825" y1="984.4053" y2="1004.4053"/><polygon fill="#A80036" points="821,994.4053,825,1004.4053,829,994.4053,825,998.4053" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2202" x2="2202" y1="909.9521" y2="934.3545"/><polygon fill="#A80036" points="2198,924.3545,2202,934.3545,2206,924.3545,2202,928.3545" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2344" x2="2429" y1="897.9521" y2="897.9521"/><polygon fill="#A80036" points="2425,941.3389,2429,951.3389,2433,941.3389,2429,945.3389" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2429" x2="2429" y1="897.9521" y2="1004.7256"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2429" x2="2214" y1="1004.7256" y2="1004.7256"/><polygon fill="#A80036" points="2224,1000.7256,2214,1004.7256,2224,1008.7256,2220,1004.7256" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2202" x2="2202" y1="968.3232" y2="992.7256"/><polygon fill="#A80036" points="2198,982.7256,2202,992.7256,2206,982.7256,2202,986.7256" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2202" x2="2202" y1="1016.7256" y2="1036.7256"/><polygon fill="#A80036" points="2198,1026.7256,2202,1036.7256,2206,1026.7256,2202,1030.7256" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2202" x2="2202" y1="854.2417" y2="885.9521"/><polygon fill="#A80036" points="2198,875.9521,2202,885.9521,2206,875.9521,2202,879.9521" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2202" x2="2202" y1="1070.6943" y2="1080.6943"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2202" x2="2447" y1="1080.6943" y2="1080.6943"/><polygon fill="#A80036" points="2443,977.4209,2447,967.4209,2451,977.4209,2447,973.4209" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2447" x2="2447" y1="842.2417" y2="1080.6943"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2447" x2="2275" y1="842.2417" y2="842.2417"/><polygon fill="#A80036" points="2285,838.2417,2275,842.2417,2285,846.2417,2281,842.2417" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2129" x2="1448" y1="842.2417" y2="842.2417"/><polygon fill="#A80036" points="1444,963.4209,1448,973.4209,1452,963.4209,1448,967.4209" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1448" x2="1448" y1="842.2417" y2="1092.6943"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1448" x2="2202" y1="1092.6943" y2="1092.6943"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2202" x2="2202" y1="1092.6943" y2="1112.6943"/><polygon fill="#A80036" points="2198,1102.6943,2202,1112.6943,2206,1102.6943,2202,1106.6943" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="492" x2="492" y1="810.2417" y2="924.4365"/><polygon fill="#A80036" points="488,914.4365,492,924.4365,496,914.4365,492,918.4365" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1209" x2="1209" y1="810.2417" y2="950.4365"/><polygon fill="#A80036" points="1205,940.4365,1209,950.4365,1213,940.4365,1209,944.4365" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2202" x2="2202" y1="810.2417" y2="830.2417"/><polygon fill="#A80036" points="2198,820.2417,2202,830.2417,2206,820.2417,2202,824.2417" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="492" x2="492" y1="1010.4053" y2="1112.6943"/><polygon fill="#A80036" points="488,1102.6943,492,1112.6943,496,1102.6943,492,1106.6943" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1209" x2="1209" y1="984.4053" y2="1112.6943"/><polygon fill="#A80036" points="1205,1102.6943,1209,1112.6943,1213,1102.6943,1209,1106.6943" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1209.5" x2="1209.5" y1="1118.6943" y2="1138.6943"/><polygon fill="#A80036" points="1205.5,1128.6943,1209.5,1138.6943,1213.5,1128.6943,1209.5,1132.6943" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1209.5" x2="1209.5" y1="1172.6631" y2="1192.6631"/><polygon fill="#A80036" points="1205.5,1182.6631,1209.5,1192.6631,1213.5,1182.6631,1209.5,1186.6631" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1209.5" x2="1209.5" y1="1226.6318" y2="1246.6318"/><polygon fill="#A80036" points="1205.5,1236.6318,1209.5,1246.6318,1213.5,1236.6318,1209.5,1240.6318" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[197988ab9e282192e01c61c5b164982b]
2
@startuml
3

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

    
6

    
7
note
8
  - - **publisher** : urt_publisher_t* - -
9
  Pointer to the publisher to use.
10
  Must not be ""NULL"".
11
  - - **payload** : void* - -
12
  Pointer to the data to be published.
13
  May be ""NULL"" for messages without payload.
14
  - - **n** : size_t - -
15
  Size of the payload in bytes.
16
  - - **t** : urt_osTime_t - -
17
  Timestamp to be set for the message.
18
  - - **timeout** : urt_delay_t - -
19
  Timeout delay in case the message cannot be published.
20
  ====
21
  - - **return** : urt_status_t - -
22
  Returns ""URT_STATUS_OK"" on success.
23
  Returns ""URT_STATUS_ERROR"" on timeout.
24
endnote
25

    
26

    
27
start
28
:lock topic;
29
:access topic's next message;
30
while (HRT consumers left for the message?) is (yes)
31
  :wait for topic's condition variable (using topic's mutex) to be signaled or timeout;
32
  if (Timeout occurred?) then (yes)
33
    :unlock topic;
34
    stop
35
    note
36
      Returns ""URT_STATUS_ERROR"".
37
    endnote
38
  else (no)
39
    if (Message timestamp was modified?) then (yes)
40
      :access topic's next message;
41
    else (no)
42
    endif
43
  endif
44
endwhile (no)
45
fork
46
  fork
47
    :iterate topic pointer to this message;
48
  fork again
49
    :copy payload to message;
50
  fork again
51
    :set origin time of message;
52
  fork again
53
    :set number of HRT consumers (from topic);
54
  endfork
55
fork again
56
  :set QoS rate timer (@topic) wrt. most critical HRT subscriber;
57
fork again
58
  while (HRT subscribers left?) is (yes)
59
    if (QoS delay timer (@subscriber) is not armed?) then (yes)
60
      :set QoS delay timer (@subscriber) wrt. origin time of the message;
61
      note: No lock required since this timer is only accessed when the topic is locked.
62
    else (no)
63
    endif
64
    :iterate to next HRT subscriber;
65
  endwhile (no)
66
endfork
67
:fire event;
68
note: Msut be within topic lock because of HRT counter.
69
:unlock topic;
70
stop
71
note
72
 Returns ""URT_STATUS_OK"".
73
endnote
74

    
75

    
76
@enduml
77

    
78
PlantUML version 1.2020.00(Sat Jan 11 13:30:53 CET 2020)
79
(GPL source distribution)
80
Java Runtime: OpenJDK Runtime Environment
81
JVM: OpenJDK 64-Bit Server VM
82
Java Version: 11.0.6+10-post-Ubuntu-1ubuntu118.04.1
83
Operating System: Linux
84
Default Encoding: UTF-8
85
Language: en
86
Country: US
87
--></g></svg>