Revision ee83a495
doc/activitydiagrams/contributemessages.iuml | ||
---|---|---|
1 |
/' |
|
2 |
µRtWare is a lightweight publish/subscribe middleware for real-time |
|
3 |
applications. It was developed as part of the software habitat for the |
|
4 |
Autonomous Mini Robot [1] (AMiRo) but can be used for other purposes as well. |
|
5 |
|
|
6 |
Copyright (C) 2018..2020 Thomas Schöpping et al. |
|
7 |
|
|
8 |
This program is free software: you can redistribute it and/or modify |
|
9 |
it under the terms of the GNU General Public License as published by |
|
10 |
the Free Software Foundation, either version 3 of the License, or |
|
11 |
(at your option) any later version. |
|
12 |
|
|
13 |
This program is distributed in the hope that it will be useful, |
|
14 |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
15 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
16 |
GNU General Public License for more details. |
|
17 |
|
|
18 |
You should have received a copy of the GNU General Public License |
|
19 |
along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
20 |
'/ |
|
21 |
|
|
22 |
partition "contribute messages" { |
|
23 |
fork |
|
24 |
:set next pointer of topic's latest message to first message to contribute; |
|
25 |
fork again |
|
26 |
:set next pointer of last message to contribute to the message after the topic's latest message; |
|
27 |
endfork |
|
28 |
} |
|
29 |
|
doc/activitydiagrams/core/urtCoreGetService.svg | ||
---|---|---|
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="596px" preserveAspectRatio="none" style="width:499px;height:596px;" version="1.1" viewBox="0 0 499 596" width="499px" zoomAndPan="magnify"><defs><filter height="300%" id="f1s3gz6elyl2re" 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="204" y="26.708">µRtWare</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="181" x="158" y="47.6611">urtCoreGetService()</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="0" x="251.5" y="68.6143"/><path d="M157,72.8594 L157,168.5234 L487,168.5234 L487,82.8594 L477,72.8594 L157,72.8594 " fill="#FBFB77" filter="url(#f1s3gz6elyl2re)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M477,72.8594 L477,82.8594 L487,82.8594 L477,72.8594 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="157" x2="258.5" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="262.5" y="89.4263"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="14" x="262.5" y="89.4263">id</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="101" x="280.5" y="89.4263">: urt_serviceid_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="385.5" x2="487" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="219" x="163" y="105.0591">Identifier of the service to retrieve.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="157" x2="487" y1="113.125" y2="113.125"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="157" x2="487" y1="115.125" y2="115.125"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="157" x2="245" y1="125.6914" y2="125.6914"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="249" y="129.6919"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="45" x="249" y="129.6919">return</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="97" x="298" y="129.6919">: urt_service_t*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="399" x2="487" y1="125.6914" y2="125.6914"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="274" x="163" y="145.3247">Returns a pointer to the requested service.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="163" y="160.4575">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="216" y="160.4575">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="220" x="252" y="160.4575">if no service matches the given ID.</text><ellipse cx="322" cy="198.5234" fill="#000000" filter="url(#f1s3gz6elyl2re)" rx="10" ry="10" style="stroke: none; stroke-width: 1.0;"/><rect fill="#FEFECE" filter="url(#f1s3gz6elyl2re)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="77" x="283.5" y="228.5234"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="57" x="293.5" y="249.6621">lock core</text><rect fill="#FEFECE" filter="url(#f1s3gz6elyl2re)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="140" x="252" y="282.4922"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="120" x="262" y="303.6309">access first service</text><rect fill="#FEFECE" filter="url(#f1s3gz6elyl2re)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="168" x="238" y="393.7808"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="148" x="248" y="414.9194">proceed to next service</text><polygon fill="#FEFECE" filter="url(#f1s3gz6elyl2re)" points="254,336.4609,390,336.4609,402,349.2656,390,362.0703,254,362.0703,242,349.2656,254,336.4609" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="326" y="372.2808">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="78" x="254" y="346.6714">Service is not</text><text fill="#000000" font-family="monospace" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="28" x="336" y="346.6714">NULL</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="136" x="254" y="359.4761">and service ID is lower?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="228" y="346.6714">no</text><rect fill="#FEFECE" filter="url(#f1s3gz6elyl2re)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="93" x="275.5" y="469.7495"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="73" x="285.5" y="490.8882">unlock core</text><polygon fill="#FEFECE" filter="url(#f1s3gz6elyl2re)" points="252,523.7183,392,523.7183,404,536.5229,392,549.3276,252,549.3276,240,536.5229,252,523.7183" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="78" x="252" y="533.9287">Service is not</text><text fill="#000000" font-family="monospace" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="28" x="334" y="533.9287">NULL</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="140" x="252" y="546.7334">and service ID matches?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="220" y="533.9287">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="404" y="533.9287">no</text><path d="M10,559.3276 L10,584.4604 A0,0 0 0 0 10,584.4604 L199,584.4604 A0,0 0 0 0 199,584.4604 L199,577.3276 L219,571.894 L199,569.3276 L199,569.3276 L189,559.3276 L10,559.3276 A0,0 0 0 0 10,559.3276 " fill="#FBFB77" filter="url(#f1s3gz6elyl2re)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M189,559.3276 L189,569.3276 L199,569.3276 L189,559.3276 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="168" x="16" y="576.3945">Returns pointer to service.</text><ellipse cx="230" cy="571.894" fill="#FFFFFF" filter="url(#f1s3gz6elyl2re)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="230" cy="571.894" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><path d="M273,559.3276 L273,584.4604 A0,0 0 0 0 273,584.4604 L383,584.4604 A0,0 0 0 0 383,584.4604 L383,577.3276 L403,571.894 L383,569.3276 L383,569.3276 L373,559.3276 L273,559.3276 A0,0 0 0 0 273,559.3276 " fill="#FBFB77" filter="url(#f1s3gz6elyl2re)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M373,559.3276 L373,569.3276 L383,569.3276 L373,559.3276 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="279" y="576.3945">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="332" y="576.3945">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="364" y="576.3945">.</text><ellipse cx="414" cy="571.894" fill="#FFFFFF" filter="url(#f1s3gz6elyl2re)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="414" cy="571.894" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="322" x2="322" y1="168.5234" y2="188.5234"/><polygon fill="#A80036" points="318,178.5234,322,188.5234,326,178.5234,322,182.5234" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="322" x2="322" y1="208.5234" y2="228.5234"/><polygon fill="#A80036" points="318,218.5234,322,228.5234,326,218.5234,322,222.5234" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="322" x2="322" y1="262.4922" y2="282.4922"/><polygon fill="#A80036" points="318,272.4922,322,282.4922,326,272.4922,322,276.4922" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="322" x2="322" y1="362.0703" y2="393.7808"/><polygon fill="#A80036" points="318,383.7808,322,393.7808,326,383.7808,322,387.7808" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="322" x2="322" y1="427.7495" y2="437.7495"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="322" x2="418" y1="437.7495" y2="437.7495"/><polygon fill="#A80036" points="414,401.9604,418,391.9604,422,401.9604,418,397.9604" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="418" x2="418" y1="349.2656" y2="437.7495"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="418" x2="402" y1="349.2656" y2="349.2656"/><polygon fill="#A80036" points="412,345.2656,402,349.2656,412,353.2656,408,349.2656" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="242" x2="226" y1="349.2656" y2="349.2656"/><polygon fill="#A80036" points="222,387.9604,226,397.9604,230,387.9604,226,391.9604" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="226" x2="226" y1="349.2656" y2="449.7495"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="226" x2="322" y1="449.7495" y2="449.7495"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="322" x2="322" y1="449.7495" y2="469.7495"/><polygon fill="#A80036" points="318,459.7495,322,469.7495,326,459.7495,322,463.7495" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="322" x2="322" y1="316.4609" y2="336.4609"/><polygon fill="#A80036" points="318,326.4609,322,336.4609,326,326.4609,322,330.4609" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="240" x2="230" y1="536.5229" y2="536.5229"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="230" x2="230" y1="536.5229" y2="560.894"/><polygon fill="#A80036" points="226,550.894,230,560.894,234,550.894,230,554.894" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="404" x2="414" y1="536.5229" y2="536.5229"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="414" x2="414" y1="536.5229" y2="560.894"/><polygon fill="#A80036" points="410,550.894,414,560.894,418,550.894,414,554.894" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="322" x2="322" y1="503.7183" y2="523.7183"/><polygon fill="#A80036" points="318,513.7183,322,523.7183,326,513.7183,322,517.7183" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[7678d951c90c7df700bc271ce4fad75f] |
|
2 |
@startuml |
|
3 |
|
|
4 |
title **µRtWare**\nurtCoreGetService()\n |
|
5 |
|
|
6 |
|
|
7 |
note |
|
8 |
- - **id** : urt_serviceid_t - - |
|
9 |
Identifier of the service to retrieve. |
|
10 |
==== |
|
11 |
- - **return** : urt_service_t* - - |
|
12 |
Returns a pointer to the requested service. |
|
13 |
Returns ""NULL"" if no service matches the given ID. |
|
14 |
endnote |
|
15 |
|
|
16 |
|
|
17 |
start |
|
18 |
:lock core; |
|
19 |
:access first service; |
|
20 |
while (Service is not ""NULL""\nand service ID is lower?) is (yes) |
|
21 |
:proceed to next service; |
|
22 |
endwhile (no) |
|
23 |
:unlock core; |
|
24 |
if (Service is not ""NULL""\nand service ID matches?) then (yes) |
|
25 |
stop |
|
26 |
note |
|
27 |
Returns pointer to service. |
|
28 |
endnote |
|
29 |
else (no) |
|
30 |
stop |
|
31 |
note |
|
32 |
Returns ""NULL"". |
|
33 |
endnote |
|
34 |
endif |
|
35 |
|
|
36 |
|
|
37 |
@enduml |
|
38 |
|
|
39 |
PlantUML version 1.2020.00(Sat Jan 11 13:30:53 CET 2020) |
|
40 |
(GPL source distribution) |
|
41 |
Java Runtime: OpenJDK Runtime Environment |
|
42 |
JVM: OpenJDK 64-Bit Server VM |
|
43 |
Java Version: 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 |
|
44 |
Operating System: Linux |
|
45 |
Default Encoding: UTF-8 |
|
46 |
Language: en |
|
47 |
Country: US |
|
48 |
--></g></svg> |
doc/activitydiagrams/core/urtCoreGetService.uml | ||
---|---|---|
1 |
/' |
|
2 |
µRtWare is a lightweight publish/subscribe middleware for real-time |
|
3 |
applications. It was developed as part of the software habitat for the |
|
4 |
Autonomous Mini Robot [1] (AMiRo) but can be used for other purposes as well. |
|
5 |
|
|
6 |
Copyright (C) 2018..2020 Thomas Schöpping et al. |
|
7 |
|
|
8 |
This program is free software: you can redistribute it and/or modify |
|
9 |
it under the terms of the GNU General Public License as published by |
|
10 |
the Free Software Foundation, either version 3 of the License, or |
|
11 |
(at your option) any later version. |
|
12 |
|
|
13 |
This program is distributed in the hope that it will be useful, |
|
14 |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
15 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
16 |
GNU General Public License for more details. |
|
17 |
|
|
18 |
You should have received a copy of the GNU General Public License |
|
19 |
along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
20 |
'/ |
|
21 |
|
|
22 |
/'### INTRO ##################################################################'/ |
|
23 |
|
|
24 |
@startuml |
|
25 |
|
|
26 |
title **µRtWare**\nurtCoreGetService()\n |
|
27 |
|
|
28 |
/'### PARAMETERS & RETURN ####################################################'/ |
|
29 |
|
|
30 |
note |
|
31 |
-- **id** : urt_serviceid_t -- |
|
32 |
Identifier of the service to retrieve. |
|
33 |
==== |
|
34 |
-- **return** : urt_service_t* -- |
|
35 |
Returns a pointer to the requested service. |
|
36 |
Returns ""NULL"" if no service matches the given ID. |
|
37 |
endnote |
|
38 |
|
|
39 |
/'### PROCEDURE ##############################################################'/ |
|
40 |
|
|
41 |
start |
|
42 |
:lock core; |
|
43 |
:access first service; |
|
44 |
while (Service is not ""NULL""\nand service ID is lower?) is (yes) |
|
45 |
:proceed to next service; |
|
46 |
endwhile (no) |
|
47 |
:unlock core; |
|
48 |
if (Service is not ""NULL""\nand service ID matches?) then (yes) |
|
49 |
stop |
|
50 |
note |
|
51 |
Returns pointer to service. |
|
52 |
endnote |
|
53 |
else (no) |
|
54 |
stop |
|
55 |
note |
|
56 |
Returns ""NULL"". |
|
57 |
endnote |
|
58 |
endif |
|
59 |
|
|
60 |
/'### OUTRO ##################################################################'/ |
|
61 |
|
|
62 |
@enduml |
doc/activitydiagrams/core/urtCoreGetTopic.svg | ||
---|---|---|
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="596px" preserveAspectRatio="none" style="width:472px;height:596px;" version="1.1" viewBox="0 0 472 596" width="472px" zoomAndPan="magnify"><defs><filter height="300%" id="fsrkmh5myir7y" 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="190.5" y="26.708">µRtWare</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="163" x="153.5" y="47.6611">urtCoreGetTopic()</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="0" x="238" y="68.6143"/><path d="M144,72.8594 L144,168.5234 L460,168.5234 L460,82.8594 L450,72.8594 L144,72.8594 " fill="#FBFB77" filter="url(#fsrkmh5myir7y)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M450,72.8594 L450,82.8594 L460,82.8594 L450,72.8594 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="144" x2="245.5" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="249.5" y="89.4263"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="14" x="249.5" y="89.4263">id</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="87" x="267.5" y="89.4263">: urt_topicid_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="358.5" x2="460" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="205" x="150" y="105.0591">Identifier of the topic to retrieve.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="144" x2="460" y1="113.125" y2="113.125"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="144" x2="460" y1="115.125" y2="115.125"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="144" x2="232" y1="125.6914" y2="125.6914"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="236" y="129.6919"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="45" x="236" y="129.6919">return</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="83" x="285" y="129.6919">: urt_topic_t*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="372" x2="460" y1="125.6914" y2="125.6914"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="260" x="150" y="145.3247">Returns a pointer to the requested topic.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="150" y="160.4575">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="203" y="160.4575">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="206" x="239" y="160.4575">if no topic matches the given ID.</text><ellipse cx="302" cy="198.5234" fill="#000000" filter="url(#fsrkmh5myir7y)" rx="10" ry="10" style="stroke: none; stroke-width: 1.0;"/><rect fill="#FEFECE" filter="url(#fsrkmh5myir7y)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="77" x="263.5" y="228.5234"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="57" x="273.5" y="249.6621">lock core</text><rect fill="#FEFECE" filter="url(#fsrkmh5myir7y)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="127" x="238.5" y="282.4922"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="107" x="248.5" y="303.6309">access first topic</text><rect fill="#FEFECE" filter="url(#fsrkmh5myir7y)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="155" x="224.5" y="393.7808"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="135" x="234.5" y="414.9194">proceed to next topic</text><polygon fill="#FEFECE" filter="url(#fsrkmh5myir7y)" points="241,336.4609,363,336.4609,375,349.2656,363,362.0703,241,362.0703,229,349.2656,241,336.4609" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="306" y="372.2808">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="70" x="241" y="346.6714">Topic ist not</text><text fill="#000000" font-family="monospace" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="28" x="315" y="346.6714">NULL</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="122" x="241" y="359.4761">and topic ID is lower?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="215" y="346.6714">no</text><rect fill="#FEFECE" filter="url(#fsrkmh5myir7y)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="93" x="255.5" y="469.7495"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="73" x="265.5" y="490.8882">unlock core</text><polygon fill="#FEFECE" filter="url(#fsrkmh5myir7y)" points="239,523.7183,365,523.7183,377,536.5229,365,549.3276,239,549.3276,227,536.5229,239,523.7183" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="66" x="239" y="533.9287">Topic is not</text><text fill="#000000" font-family="monospace" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="28" x="309" y="533.9287">NULL</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="126" x="239" y="546.7334">and topic ID matches?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="207" y="533.9287">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="377" y="533.9287">no</text><path d="M10,559.3276 L10,584.4604 A0,0 0 0 0 10,584.4604 L185,584.4604 A0,0 0 0 0 185,584.4604 L185,577.3276 L205,571.894 L185,569.3276 L185,569.3276 L175,559.3276 L10,559.3276 A0,0 0 0 0 10,559.3276 " fill="#FBFB77" filter="url(#fsrkmh5myir7y)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M175,559.3276 L175,569.3276 L185,569.3276 L175,559.3276 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="154" x="16" y="576.3945">Returns pointer to topic.</text><ellipse cx="216" cy="571.894" fill="#FFFFFF" filter="url(#fsrkmh5myir7y)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="216" cy="571.894" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><path d="M247,559.3276 L247,584.4604 A0,0 0 0 0 247,584.4604 L357,584.4604 A0,0 0 0 0 357,584.4604 L357,577.3276 L377,571.894 L357,569.3276 L357,569.3276 L347,559.3276 L247,559.3276 A0,0 0 0 0 247,559.3276 " fill="#FBFB77" filter="url(#fsrkmh5myir7y)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M347,559.3276 L347,569.3276 L357,569.3276 L347,559.3276 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="253" y="576.3945">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="306" y="576.3945">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="338" y="576.3945">.</text><ellipse cx="388" cy="571.894" fill="#FFFFFF" filter="url(#fsrkmh5myir7y)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="388" cy="571.894" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="302" x2="302" y1="168.5234" y2="188.5234"/><polygon fill="#A80036" points="298,178.5234,302,188.5234,306,178.5234,302,182.5234" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="302" x2="302" y1="208.5234" y2="228.5234"/><polygon fill="#A80036" points="298,218.5234,302,228.5234,306,218.5234,302,222.5234" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="302" x2="302" y1="262.4922" y2="282.4922"/><polygon fill="#A80036" points="298,272.4922,302,282.4922,306,272.4922,302,276.4922" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="302" x2="302" y1="362.0703" y2="393.7808"/><polygon fill="#A80036" points="298,383.7808,302,393.7808,306,383.7808,302,387.7808" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="302" x2="302" y1="427.7495" y2="437.7495"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="302" x2="391.5" y1="437.7495" y2="437.7495"/><polygon fill="#A80036" points="387.5,401.9604,391.5,391.9604,395.5,401.9604,391.5,397.9604" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="391.5" x2="391.5" y1="349.2656" y2="437.7495"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="391.5" x2="375" y1="349.2656" y2="349.2656"/><polygon fill="#A80036" points="385,345.2656,375,349.2656,385,353.2656,381,349.2656" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="229" x2="212.5" y1="349.2656" y2="349.2656"/><polygon fill="#A80036" points="208.5,387.9604,212.5,397.9604,216.5,387.9604,212.5,391.9604" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="212.5" x2="212.5" y1="349.2656" y2="449.7495"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="212.5" x2="302" y1="449.7495" y2="449.7495"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="302" x2="302" y1="449.7495" y2="469.7495"/><polygon fill="#A80036" points="298,459.7495,302,469.7495,306,459.7495,302,463.7495" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="302" x2="302" y1="316.4609" y2="336.4609"/><polygon fill="#A80036" points="298,326.4609,302,336.4609,306,326.4609,302,330.4609" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="227" x2="216" y1="536.5229" y2="536.5229"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="216" x2="216" y1="536.5229" y2="560.894"/><polygon fill="#A80036" points="212,550.894,216,560.894,220,550.894,216,554.894" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="377" x2="388" y1="536.5229" y2="536.5229"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="388" x2="388" y1="536.5229" y2="560.894"/><polygon fill="#A80036" points="384,550.894,388,560.894,392,550.894,388,554.894" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="302" x2="302" y1="503.7183" y2="523.7183"/><polygon fill="#A80036" points="298,513.7183,302,523.7183,306,513.7183,302,517.7183" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[e10488ce6407e6aad5cae1b04658f332] |
|
2 |
@startuml |
|
3 |
|
|
4 |
title **µRtWare**\nurtCoreGetTopic()\n |
|
5 |
|
|
6 |
|
|
7 |
note |
|
8 |
- - **id** : urt_topicid_t - - |
|
9 |
Identifier of the topic to retrieve. |
|
10 |
==== |
|
11 |
- - **return** : urt_topic_t* - - |
|
12 |
Returns a pointer to the requested topic. |
|
13 |
Returns ""NULL"" if no topic matches the given ID. |
|
14 |
endnote |
|
15 |
|
|
16 |
|
|
17 |
start |
|
18 |
:lock core; |
|
19 |
:access first topic; |
|
20 |
while (Topic ist not ""NULL""\nand topic ID is lower?) is (yes) |
|
21 |
:proceed to next topic; |
|
22 |
endwhile (no) |
|
23 |
:unlock core; |
|
24 |
if (Topic is not ""NULL""\nand topic ID matches?) then (yes) |
|
25 |
stop |
|
26 |
note |
|
27 |
Returns pointer to topic. |
|
28 |
endnote |
|
29 |
else (no) |
|
30 |
stop |
|
31 |
note |
|
32 |
Returns ""NULL"". |
|
33 |
endnote |
|
34 |
endif |
|
35 |
|
|
36 |
|
|
37 |
@enduml |
|
38 |
|
|
39 |
PlantUML version 1.2020.00(Sat Jan 11 13:30:53 CET 2020) |
|
40 |
(GPL source distribution) |
|
41 |
Java Runtime: OpenJDK Runtime Environment |
|
42 |
JVM: OpenJDK 64-Bit Server VM |
|
43 |
Java Version: 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 |
|
44 |
Operating System: Linux |
|
45 |
Default Encoding: UTF-8 |
|
46 |
Language: en |
|
47 |
Country: US |
|
48 |
--></g></svg> |
doc/activitydiagrams/core/urtCoreGetTopic.uml | ||
---|---|---|
1 |
/' |
|
2 |
µRtWare is a lightweight publish/subscribe middleware for real-time |
|
3 |
applications. It was developed as part of the software habitat for the |
|
4 |
Autonomous Mini Robot [1] (AMiRo) but can be used for other purposes as well. |
|
5 |
|
|
6 |
Copyright (C) 2018..2020 Thomas Schöpping et al. |
|
7 |
|
|
8 |
This program is free software: you can redistribute it and/or modify |
|
9 |
it under the terms of the GNU General Public License as published by |
|
10 |
the Free Software Foundation, either version 3 of the License, or |
|
11 |
(at your option) any later version. |
|
12 |
|
|
13 |
This program is distributed in the hope that it will be useful, |
|
14 |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
15 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
16 |
GNU General Public License for more details. |
|
17 |
|
|
18 |
You should have received a copy of the GNU General Public License |
|
19 |
along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
20 |
'/ |
|
21 |
|
|
22 |
/'### INTRO ##################################################################'/ |
|
23 |
|
|
24 |
@startuml |
|
25 |
|
|
26 |
title **µRtWare**\nurtCoreGetTopic()\n |
|
27 |
|
|
28 |
/'### PARAMETERS & RETURN ####################################################'/ |
|
29 |
|
|
30 |
note |
|
31 |
-- **id** : urt_topicid_t -- |
|
32 |
Identifier of the topic to retrieve. |
|
33 |
==== |
|
34 |
-- **return** : urt_topic_t* -- |
|
35 |
Returns a pointer to the requested topic. |
|
36 |
Returns ""NULL"" if no topic matches the given ID. |
|
37 |
endnote |
|
38 |
|
|
39 |
/'### PROCEDURE ##############################################################'/ |
|
40 |
|
|
41 |
start |
|
42 |
:lock core; |
|
43 |
:access first topic; |
|
44 |
while (Topic ist not ""NULL""\nand topic ID is lower?) is (yes) |
|
45 |
:proceed to next topic; |
|
46 |
endwhile (no) |
|
47 |
:unlock core; |
|
48 |
if (Topic is not ""NULL""\nand topic ID matches?) then (yes) |
|
49 |
stop |
|
50 |
note |
|
51 |
Returns pointer to topic. |
|
52 |
endnote |
|
53 |
else (no) |
|
54 |
stop |
|
55 |
note |
|
56 |
Returns ""NULL"". |
|
57 |
endnote |
|
58 |
endif |
|
59 |
|
|
60 |
/'### OUTRO ##################################################################'/ |
|
61 |
|
|
62 |
@enduml |
doc/activitydiagrams/core/urtCoreInit.svg | ||
---|---|---|
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="359px" preserveAspectRatio="none" style="width:493px;height:359px;" version="1.1" viewBox="0 0 493 359" width="493px" zoomAndPan="magnify"><defs><filter height="300%" id="f5d7eez7u0tan" 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="201.25" y="26.708">µRtWare</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="112" x="189.75" y="47.6611">urtCoreInit()</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="0" x="248.75" y="68.6143"/><path d="M255.5,72.8594 L255.5,138.2578 L481.5,138.2578 L481.5,82.8594 L471.5,72.8594 L255.5,72.8594 " fill="#FBFB77" filter="url(#f5d7eez7u0tan)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M471.5,72.8594 L471.5,82.8594 L481.5,82.8594 L471.5,72.8594 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="255.5" x2="351" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="355" y="89.4263"/><text fill="#000000" font-family="sans-serif" font-size="13" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="27" x="355" y="89.4263">void</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="386" y="89.4263"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="386" x2="481.5" y1="85.4258" y2="85.4258"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="255.5" x2="481.5" y1="97.9922" y2="97.9922"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="255.5" x2="481.5" y1="99.9922" y2="99.9922"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="255.5" x2="297.5" y1="110.5586" y2="110.5586"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="301.5" y="114.5591"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="45" x="301.5" y="114.5591">return</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="85" x="350.5" y="114.5591">: urt_status_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="439.5" x2="481.5" y1="110.5586" y2="110.5586"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="93" x="261.5" y="130.1919">Always returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="358.5" y="130.1919">URT_STATUS_OK</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="462.5" y="130.1919">.</text><ellipse cx="368.5" cy="168.2578" fill="#000000" filter="url(#f5d7eez7u0tan)" rx="10" ry="10" style="stroke: none; stroke-width: 1.0;"/><path d="M10,188.2578 L10,304.1875 A0,0 0 0 0 10,304.1875 L283,304.1875 A0,0 0 0 0 283,304.1875 L283,250.2227 L303,246.2227 L283,242.2227 L283,198.2578 L273,188.2578 L10,188.2578 A0,0 0 0 0 10,188.2578 " fill="#FBFB77" filter="url(#f5d7eez7u0tan)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M273,188.2578 L273,198.2578 L283,198.2578 L273,188.2578 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="52" x="16" y="205.3247">_nodes</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="11" x="72" y="205.3247">←</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="87" y="205.3247">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="123" x="16" y="220.4575">urtEventSourceInit(</text><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="80" x="139" y="220.4575">_evtSource</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="5" x="219" y="220.4575">)</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="81" x="16" y="235.5903">urtMutexInit(</text><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="37" x="97" y="235.5903">_lock</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="5" x="134" y="235.5903">)</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="10" x2="20.5" y1="246.2227" y2="246.2227"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="244" x="24.5" y="250.2231">URT_CFG_PUBSUB_ENABLED == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="272.5" x2="283" y1="246.2227" y2="246.2227"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="52" x="16" y="265.856">_topics</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="11" x="72" y="265.856">←</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="87" y="265.856">NULL</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="10" x2="35.5" y1="276.4883" y2="276.4883"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="214" x="39.5" y="280.4888">URT_CFG_RPC_ENABLED == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="257.5" x2="283" y1="276.4883" y2="276.4883"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="67" x="16" y="296.1216">_services</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="11" x="87" y="296.1216">←</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="102" y="296.1216">NULL</text><rect fill="#FEFECE" filter="url(#f5d7eez7u0tan)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="131" x="303" y="229.2383"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="111" x="313" y="250.377">initialize members</text><path d="M155.5,322.6211 L155.5,347.7539 A0,0 0 0 0 155.5,347.7539 L337.5,347.7539 A0,0 0 0 0 337.5,347.7539 L337.5,340.6211 L357.5,335.1875 L337.5,332.6211 L337.5,332.6211 L327.5,322.6211 L155.5,322.6211 A0,0 0 0 0 155.5,322.6211 " fill="#FBFB77" filter="url(#f5d7eez7u0tan)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M327.5,322.6211 L327.5,332.6211 L337.5,332.6211 L327.5,322.6211 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="161.5" y="339.688">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="214.5" y="339.688">URT_STATUS_OK</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="318.5" y="339.688">.</text><ellipse cx="368.5" cy="335.1875" fill="#FFFFFF" filter="url(#f5d7eez7u0tan)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="368.5" cy="335.1875" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="368.5" x2="368.5" y1="138.2578" y2="158.2578"/><polygon fill="#A80036" points="364.5,148.2578,368.5,158.2578,372.5,148.2578,368.5,152.2578" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="368.5" x2="368.5" y1="178.2578" y2="229.2383"/><polygon fill="#A80036" points="364.5,219.2383,368.5,229.2383,372.5,219.2383,368.5,223.2383" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="368.5" x2="368.5" y1="263.207" y2="324.1875"/><polygon fill="#A80036" points="364.5,314.1875,368.5,324.1875,372.5,314.1875,368.5,318.1875" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[06dedabe65f0ca2bb27e171527687956] |
|
2 |
@startuml |
|
3 |
|
|
4 |
title **µRtWare**\nurtCoreInit()\n |
|
5 |
|
|
6 |
|
|
7 |
note |
|
8 |
- - //void// - - |
|
9 |
==== |
|
10 |
- - **return** : urt_status_t - - |
|
11 |
Always returns ""URT_STATUS_OK"". |
|
12 |
endnote |
|
13 |
|
|
14 |
|
|
15 |
start |
|
16 |
:initialize members; |
|
17 |
note |
|
18 |
**_nodes** ← ""NULL"" |
|
19 |
urtEventSourceInit(**_evtSource**) |
|
20 |
urtMutexInit(**_lock**) |
|
21 |
.. URT_CFG_PUBSUB_ENABLED == true .. |
|
22 |
**_topics** ← ""NULL"" |
|
23 |
.. URT_CFG_RPC_ENABLED == true .. |
|
24 |
**_services** ← ""NULL"" |
|
25 |
endnote |
|
26 |
stop |
|
27 |
note |
|
28 |
Returns ""URT_STATUS_OK"". |
|
29 |
endnote |
|
30 |
|
|
31 |
|
|
32 |
@enduml |
|
33 |
|
|
34 |
PlantUML version 1.2020.00(Sat Jan 11 13:30:53 CET 2020) |
|
35 |
(GPL source distribution) |
|
36 |
Java Runtime: OpenJDK Runtime Environment |
|
37 |
JVM: OpenJDK 64-Bit Server VM |
|
38 |
Java Version: 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 |
|
39 |
Operating System: Linux |
|
40 |
Default Encoding: UTF-8 |
|
41 |
Language: en |
|
42 |
Country: US |
|
43 |
--></g></svg> |
doc/activitydiagrams/core/urtCoreInit.uml | ||
---|---|---|
1 |
/' |
|
2 |
µRtWare is a lightweight publish/subscribe middleware for real-time |
|
3 |
applications. It was developed as part of the software habitat for the |
|
4 |
Autonomous Mini Robot [1] (AMiRo) but can be used for other purposes as well. |
|
5 |
|
|
6 |
Copyright (C) 2018..2020 Thomas Schöpping et al. |
|
7 |
|
|
8 |
This program is free software: you can redistribute it and/or modify |
|
9 |
it under the terms of the GNU General Public License as published by |
|
10 |
the Free Software Foundation, either version 3 of the License, or |
|
11 |
(at your option) any later version. |
|
12 |
|
|
13 |
This program is distributed in the hope that it will be useful, |
|
14 |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
15 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
16 |
GNU General Public License for more details. |
|
17 |
|
|
18 |
You should have received a copy of the GNU General Public License |
|
19 |
along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
20 |
'/ |
|
21 |
|
|
22 |
/'### INTRO ##################################################################'/ |
|
23 |
|
|
24 |
@startuml |
|
25 |
|
|
26 |
title **µRtWare**\nurtCoreInit()\n |
|
27 |
|
|
28 |
/'### PARAMETERS & RETURN ####################################################'/ |
|
29 |
|
|
30 |
note |
|
31 |
-- //void// -- |
|
32 |
==== |
|
33 |
-- **return** : urt_status_t -- |
|
34 |
Always returns ""URT_STATUS_OK"". |
|
35 |
endnote |
|
36 |
|
|
37 |
/'### PROCEDURE ##############################################################'/ |
|
38 |
|
|
39 |
start |
|
40 |
:initialize members; |
|
41 |
note |
|
42 |
**_nodes** ← ""NULL"" |
|
43 |
urtEventSourceInit(**_evtSource**) |
|
44 |
urtMutexInit(**_lock**) |
|
45 |
.. URT_CFG_PUBSUB_ENABLED == true .. |
|
46 |
**_topics** ← ""NULL"" |
|
47 |
.. URT_CFG_RPC_ENABLED == true .. |
|
48 |
**_services** ← ""NULL"" |
|
49 |
endnote |
|
50 |
stop |
|
51 |
note |
|
52 |
Returns ""URT_STATUS_OK"". |
|
53 |
endnote |
|
54 |
|
|
55 |
/'### OUTRO ##################################################################'/ |
|
56 |
|
|
57 |
@enduml |
doc/activitydiagrams/message/urtMessageInit.svg | ||
---|---|---|
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="275px" preserveAspectRatio="none" style="width:418px;height:275px;" version="1.1" viewBox="0 0 418 275" width="418px" zoomAndPan="magnify"><defs><filter height="300%" id="f160ofdjzs96s" 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="163.75" y="26.708">µRtWare</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="144" x="136.25" y="47.6611">urtMessageInit()</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="0" x="211.25" y="68.6143"/><path d="M10,72.8594 L10,158.5234 A0,0 0 0 0 10,158.5234 L312,158.5234 A0,0 0 0 0 312,158.5234 L312,119.6914 L332,115.6914 L312,111.6914 L312,82.8594 L302,72.8594 L10,72.8594 A0,0 0 0 0 10,72.8594 " fill="#FBFB77" filter="url(#f160ofdjzs96s)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M302,72.8594 L302,82.8594 L312,82.8594 L302,72.8594 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="10" x2="61" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="65" y="89.4263"/><text fill="#000000" font-family="monospace" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="56" x="65" y="89.4263">message</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="128" x="129" y="89.4263">: urt_message_t*</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="261" y="89.4263"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="261" x2="312" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="162" x="16" y="105.0591">The message to initialize.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="76" x="16" y="120.1919">Must not be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="96" y="120.1919">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="128" y="120.1919">.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="10" x2="97" y1="130.8242" y2="130.8242"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="101" y="134.8247"/><text fill="#000000" font-family="monospace" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="56" x="101" y="134.8247">payload</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="56" x="165" y="134.8247">: void*</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="225" y="134.8247"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="225" x2="312" y1="130.8242" y2="130.8242"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="46" x="16" y="150.4575">May be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="66" y="150.4575">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="195" x="102" y="150.4575">for messages without payload.</text><ellipse cx="342" cy="115.6914" fill="#000000" filter="url(#f160ofdjzs96s)" rx="10" ry="10" style="stroke: none; stroke-width: 1.0;"/><rect fill="#FEFECE" filter="url(#f160ofdjzs96s)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="131" x="276.5" y="178.5234"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="111" x="286.5" y="199.6621">initialize members</text><path d="M129,223.3594 L129,263.625 A0,0 0 0 0 129,263.625 L311,263.625 A0,0 0 0 0 311,263.625 L311,247.4922 L331,243.4922 L311,239.4922 L311,233.3594 L301,223.3594 L129,223.3594 A0,0 0 0 0 129,223.3594 " fill="#FBFB77" filter="url(#f160ofdjzs96s)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M301,223.3594 L301,233.3594 L311,233.3594 L301,223.3594 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="129" x2="143.5" y1="235.9258" y2="235.9258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="147.5" y="239.9263"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="45" x="147.5" y="239.9263">return</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="196.5" y="239.9263"/><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="96" x="196.5" y="239.9263">urt_status_t</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="296.5" y="239.9263"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="296.5" x2="311" y1="235.9258" y2="235.9258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="135" y="255.5591">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="188" y="255.5591">URT_STATUS_OK</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="292" y="255.5591">.</text><ellipse cx="342" cy="243.4922" fill="#FFFFFF" filter="url(#f160ofdjzs96s)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="342" cy="243.4922" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="342" x2="342" y1="125.6914" y2="178.5234"/><polygon fill="#A80036" points="338,168.5234,342,178.5234,346,168.5234,342,172.5234" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="342" x2="342" y1="212.4922" y2="232.4922"/><polygon fill="#A80036" points="338,222.4922,342,232.4922,346,222.4922,342,226.4922" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[cf41be7f63b42d9455c93a9cc8728d76]
|
|
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="405px" preserveAspectRatio="none" style="width:536px;height:405px;" version="1.1" viewBox="0 0 536 405" width="536px" zoomAndPan="magnify"><defs><filter height="300%" id="fawtppr2uev6i" 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="222.75" y="26.708">µRtWare</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="144" x="195.25" y="47.6611">urtMessageInit()</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="0" x="270.25" y="68.6143"/><path d="M222.5,72.8594 L222.5,198.7891 L524.5,198.7891 L524.5,82.8594 L514.5,72.8594 L222.5,72.8594 " fill="#FBFB77" filter="url(#fawtppr2uev6i)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M514.5,72.8594 L514.5,82.8594 L524.5,82.8594 L514.5,72.8594 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="222.5" x2="278.5" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="282.5" y="89.4263"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="67" x="282.5" y="89.4263">message</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="111" x="353.5" y="89.4263">: urt_message_t*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="468.5" x2="524.5" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="162" x="228.5" y="105.0591">The message to initialize.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="76" x="228.5" y="120.1919">Must not be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="308.5" y="120.1919">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="340.5" y="120.1919">.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="222.5" x2="317.5" y1="130.8242" y2="130.8242"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="321.5" y="134.8247"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="59" x="321.5" y="134.8247">payload</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="41" x="384.5" y="134.8247">: void*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="429.5" x2="524.5" y1="130.8242" y2="130.8242"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="46" x="228.5" y="150.4575">May be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="278.5" y="150.4575">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="195" x="314.5" y="150.4575">for messages without payload.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="222.5" x2="524.5" y1="158.5234" y2="158.5234"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="222.5" x2="524.5" y1="160.5234" y2="160.5234"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="222.5" x2="302.5" y1="171.0898" y2="171.0898"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="306.5" y="175.0903"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="45" x="306.5" y="175.0903">return</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="85" x="355.5" y="175.0903">: urt_status_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="444.5" x2="524.5" y1="171.0898" y2="171.0898"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="93" x="228.5" y="190.7231">Always returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="325.5" y="190.7231">URT_STATUS_OK</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="429.5" y="190.7231">.</text><ellipse cx="373.5" cy="228.7891" fill="#000000" filter="url(#fawtppr2uev6i)" rx="10" ry="10" style="stroke: none; stroke-width: 1.0;"/><path d="M10,248.7891 L10,349.5859 A0,0 0 0 0 10,349.5859 L288,349.5859 A0,0 0 0 0 288,349.5859 L288,303.1875 L308,299.1875 L288,295.1875 L288,258.7891 L278,248.7891 L10,248.7891 A0,0 0 0 0 10,248.7891 " fill="#FBFB77" filter="url(#fawtppr2uev6i)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M278,248.7891 L278,258.7891 L288,258.7891 L278,248.7891 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="32" x="16" y="265.856">next</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="11" x="52" y="265.856">←</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="67" y="265.856">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="59" x="16" y="280.9888">payload</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="65" x="79" y="280.9888">← payload</text><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="77" x="16" y="296.1216">originTime</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="23" x="97" y="296.1216">← 0</text><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="176" x="16" y="311.2544">numHrtConsumbersLeft</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="23" x="196" y="311.2544">← 0</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="10" x2="20.5" y1="321.8867" y2="321.8867"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="249" x="24.5" y="325.8872">URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="277.5" x2="288" y1="321.8867" y2="321.8867"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="143" x="16" y="341.52">numConsumersLeft</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="23" x="163" y="341.52">← 0</text><rect fill="#FEFECE" filter="url(#fawtppr2uev6i)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="131" x="308" y="282.2031"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="111" x="318" y="303.3418">initialize members</text><path d="M160.5,368.0195 L160.5,393.1523 A0,0 0 0 0 160.5,393.1523 L342.5,393.1523 A0,0 0 0 0 342.5,393.1523 L342.5,386.0195 L362.5,380.5859 L342.5,378.0195 L342.5,378.0195 L332.5,368.0195 L160.5,368.0195 A0,0 0 0 0 160.5,368.0195 " fill="#FBFB77" filter="url(#fawtppr2uev6i)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M332.5,368.0195 L332.5,378.0195 L342.5,378.0195 L332.5,368.0195 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="166.5" y="385.0864">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="219.5" y="385.0864">URT_STATUS_OK</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="323.5" y="385.0864">.</text><ellipse cx="373.5" cy="380.5859" fill="#FFFFFF" filter="url(#fawtppr2uev6i)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="373.5" cy="380.5859" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="373.5" x2="373.5" y1="198.7891" y2="218.7891"/><polygon fill="#A80036" points="369.5,208.7891,373.5,218.7891,377.5,208.7891,373.5,212.7891" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="373.5" x2="373.5" y1="238.7891" y2="282.2031"/><polygon fill="#A80036" points="369.5,272.2031,373.5,282.2031,377.5,272.2031,373.5,276.2031" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="373.5" x2="373.5" y1="316.1719" y2="369.5859"/><polygon fill="#A80036" points="369.5,359.5859,373.5,369.5859,377.5,359.5859,373.5,363.5859" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[42dceccd0ec0bb4e33e54645d4db1fb5]
|
|
2 | 2 |
@startuml |
3 | 3 |
|
4 | 4 |
title **µRtWare**\nurtMessageInit()\n |
5 | 5 |
|
6 | 6 |
|
7 |
|
|
8 |
|
|
9 |
|
|
10 |
|
|
11 |
|
|
12 |
|
|
13 |
|
|
14 |
|
|
15 |
|
|
16 |
|
|
17 |
start |
|
18 | 7 |
note |
19 |
- - ""**message** : urt_message_t*"" - -
|
|
8 |
- - **message** : urt_message_t* - -
|
|
20 | 9 |
The message to initialize. |
21 | 10 |
Must not be ""NULL"". |
22 |
- - ""**payload** : void*"" - -
|
|
11 |
- - **payload** : void* - -
|
|
23 | 12 |
May be ""NULL"" for messages without payload. |
24 |
end note |
|
13 |
==== |
|
14 |
- - **return** : urt_status_t - - |
|
15 |
Always returns ""URT_STATUS_OK"". |
|
16 |
endnote |
|
25 | 17 |
|
26 | 18 |
|
19 |
start |
|
27 | 20 |
:initialize members; |
28 |
|
|
29 |
|
|
21 |
note |
|
22 |
**next** ← ""NULL"" |
|
23 |
**payload** ← payload |
|
24 |
**originTime** ← 0 |
|
25 |
**numHrtConsumbersLeft** ← 0 |
|
26 |
.. URT_CFG_PUBSUB_PROFILING == true .. |
|
27 |
**numConsumersLeft** ← 0 |
|
28 |
endnote |
|
30 | 29 |
stop |
31 | 30 |
note |
32 |
- - **return** ""urt_status_t"" - - |
|
33 | 31 |
Returns ""URT_STATUS_OK"". |
34 |
end note
|
|
32 |
endnote |
|
35 | 33 |
|
36 | 34 |
|
37 | 35 |
@enduml |
doc/activitydiagrams/message/urtMessageInit.uml | ||
---|---|---|
25 | 25 |
|
26 | 26 |
title **µRtWare**\nurtMessageInit()\n |
27 | 27 |
|
28 |
!include ../../functions.iuml
|
|
28 |
/'### PARAMETERS & RETURN ####################################################'/
|
|
29 | 29 |
|
30 |
/'### PARAMETERS & START #####################################################'/ |
|
31 |
|
|
32 |
start |
|
33 | 30 |
note |
34 |
-- ""**message** : urt_message_t*"" --
|
|
31 |
-- **message** : urt_message_t* --
|
|
35 | 32 |
The message to initialize. |
36 | 33 |
Must not be ""NULL"". |
37 |
-- ""**payload** : void*"" --
|
|
34 |
-- **payload** : void* --
|
|
38 | 35 |
May be ""NULL"" for messages without payload. |
39 |
end note |
|
36 |
==== |
|
37 |
-- **return** : urt_status_t -- |
|
38 |
Always returns ""URT_STATUS_OK"". |
|
39 |
endnote |
|
40 | 40 |
|
41 | 41 |
/'### PROCEDURE ##############################################################'/ |
42 | 42 |
|
43 |
start |
|
43 | 44 |
:initialize members; |
44 |
|
|
45 |
/'### STOP & RETURN ##########################################################'/ |
|
46 |
|
|
45 |
note |
|
46 |
**next** ← ""NULL"" |
|
47 |
**payload** ← payload |
|
48 |
**originTime** ← 0 |
|
49 |
**numHrtConsumbersLeft** ← 0 |
|
50 |
.. URT_CFG_PUBSUB_PROFILING == true .. |
|
51 |
**numConsumersLeft** ← 0 |
|
52 |
endnote |
|
47 | 53 |
stop |
48 | 54 |
note |
49 |
-- **return** ""urt_status_t"" -- |
|
50 | 55 |
Returns ""URT_STATUS_OK"". |
51 |
end note
|
|
56 |
endnote |
|
52 | 57 |
|
53 | 58 |
/'### OUTRO ##################################################################'/ |
54 | 59 |
|
doc/activitydiagrams/node/urtNodeInit.svg | ||
---|---|---|
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="839px" preserveAspectRatio="none" style="width:831px;height:839px;" version="1.1" viewBox="0 0 831 839" width="831px" zoomAndPan="magnify"><defs><filter height="300%" id="fm3mdz4xzb1ad" 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="370.25" y="26.708">µRtWare</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="116" x="356.75" y="47.6611">urtNodeInit()</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="0" x="417.75" y="68.6143"/><path d="M375.5,72.8594 L375.5,410.6484 L819.5,410.6484 L819.5,82.8594 L809.5,72.8594 L375.5,72.8594 " fill="#FBFB77" filter="url(#fm3mdz4xzb1ad)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M809.5,72.8594 L809.5,82.8594 L819.5,82.8594 L809.5,72.8594 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="375.5" x2="531" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="535" y="89.4263"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="37" x="535" y="89.4263">node</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="84" x="576" y="89.4263">: urt_node_t*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="664" x2="819.5" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="135" x="381.5" y="105.0591">The node to initialize.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="76" x="381.5" y="120.1919">Must not be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="461.5" y="120.1919">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="493.5" y="120.1919">.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="375.5" x2="511.5" y1="130.8242" y2="130.8242"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="515.5" y="134.8247"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="49" x="515.5" y="134.8247">thread</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="111" x="568.5" y="134.8247">: urt_osThread_t*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="683.5" x2="819.5" y1="130.8242" y2="130.8242"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="335" x="381.5" y="150.4575">The already initialized, exclusive thread for the node.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="76" x="381.5" y="165.5903">Must not be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="461.5" y="165.5903">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="493.5" y="165.5903">.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="375.5" x2="452.5" y1="176.2227" y2="176.2227"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="456.5" y="180.2231"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="103" x="456.5" y="180.2231">setupcallback</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="175" x="563.5" y="180.2231">: urt_nodeSetupCallback_t*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="742.5" x2="819.5" y1="176.2227" y2="176.2227"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="296" x="381.5" y="195.856">Callback function to be executed during setup.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="46" x="381.5" y="210.9888">May be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="431.5" y="210.9888">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="142" x="467.5" y="210.9888">if no setup is required.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="375.5" x2="522" y1="221.6211" y2="221.6211"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="530" y="225.6216"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="98" x="530" y="225.6216">setupparams</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="41" x="632" y="225.6216">: void*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="673" x2="819.5" y1="221.6211" y2="221.6211"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="332" x="381.5" y="241.2544">Optional parameters for the setup callback function.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="51" x="381.5" y="256.3872">Must be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="436.5" y="256.3872">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="160" x="472.5" y="256.3872">if no callback is specified.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="46" x="381.5" y="271.52">May be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="431.5" y="271.52">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="337" x="467.5" y="271.52">if the specified callback does not expect parameters.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="375.5" x2="461" y1="282.1523" y2="282.1523"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="465" y="286.1528"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="93" x="465" y="286.1528">loopcallback</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="168" x="562" y="286.1528">: urt_nodeLoopCallback_t*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="734" x2="819.5" y1="282.1523" y2="282.1523"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="270" x="381.5" y="301.7856">Callback function to be executed in a loop.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="76" x="381.5" y="316.9185">Must not be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="461.5" y="316.9185">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="493.5" y="316.9185">.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="375.5" x2="527" y1="327.5508" y2="327.5508"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="531" y="331.5513"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="88" x="531" y="331.5513">loopparams</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="41" x="623" y="331.5513">: void*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="668" x2="819.5" y1="327.5508" y2="327.5508"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="323" x="381.5" y="347.1841">Optional parameters for the loop callback function.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="46" x="381.5" y="362.3169">May be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="431.5" y="362.3169">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="337" x="467.5" y="362.3169">if the specified callback does not expect parameters.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="375.5" x2="819.5" y1="370.3828" y2="370.3828"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="375.5" x2="819.5" y1="372.3828" y2="372.3828"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="375.5" x2="526.5" y1="382.9492" y2="382.9492"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="530.5" y="386.9497"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="45" x="530.5" y="386.9497">return</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="85" x="579.5" y="386.9497">: urt_status_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="668.5" x2="819.5" y1="382.9492" y2="382.9492"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="93" x="381.5" y="402.5825">Always returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="478.5" y="402.5825">URT_STATUS_OK</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="582.5" y="402.5825">.</text><ellipse cx="597.5" cy="440.6484" fill="#000000" filter="url(#fm3mdz4xzb1ad)" rx="10" ry="10" style="stroke: none; stroke-width: 1.0;"/><path d="M10,460.6484 L10,621.9766 A0,0 0 0 0 10,621.9766 L512,621.9766 A0,0 0 0 0 512,621.9766 L512,545.3125 L532,541.3125 L512,537.3125 L512,470.6484 L502,460.6484 L10,460.6484 A0,0 0 0 0 10,460.6484 " fill="#FBFB77" filter="url(#fm3mdz4xzb1ad)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M502,460.6484 L502,470.6484 L512,470.6484 L502,460.6484 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="32" x="16" y="477.7153">next</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="11" x="52" y="477.7153">←</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="67" y="477.7153">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="49" x="16" y="492.8481">thread</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="57" x="69" y="492.8481">← thread</text><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="103" x="16" y="507.981">setupcallback</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="102" x="123" y="507.981">← setupcallback</text><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="98" x="16" y="523.1138">setupparams</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="100" x="118" y="523.1138">← setupparams</text><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="93" x="16" y="538.2466">loopcallback</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="93" x="113" y="538.2466">← loopcallback</text><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="88" x="16" y="553.3794">loopparams</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="91" x="108" y="553.3794">← loopparams</text><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="42" x="16" y="568.5122">stage</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="23" x="62" y="568.5122">← 0</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="129" x="16" y="583.645">urtEventListenerInit(</text><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="55" x="145" y="583.645">listener</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="5" x="200" y="583.645">)</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="10" x2="20.5" y1="594.2773" y2="594.2773"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="473" x="24.5" y="598.2778">URT_CFG_PUBSUB_PROFILING == true || URT_CFG_RPC_PROFILING = true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="501.5" x2="512" y1="594.2773" y2="594.2773"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="40" x="16" y="613.9106">loops</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="23" x="60" y="613.9106">← 0</text><rect fill="#FEFECE" filter="url(#fm3mdz4xzb1ad)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="131" x="532" y="524.3281"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="111" x="542" y="545.4668">initialize members</text><rect fill="#FEFECE" filter="url(#fm3mdz4xzb1ad)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="77" x="559" y="641.9766"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="57" x="569" y="663.1152">lock core</text><path d="M326.5,700.3633 L326.5,725.4961 A0,0 0 0 0 326.5,725.4961 L466.5,725.4961 A0,0 0 0 0 466.5,725.4961 L466.5,718.3633 L486.5,712.9297 L466.5,710.3633 L466.5,710.3633 L456.5,700.3633 L326.5,700.3633 A0,0 0 0 0 326.5,700.3633 " fill="#FBFB77" filter="url(#fm3mdz4xzb1ad)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M456.5,700.3633 L456.5,710.3633 L466.5,710.3633 L456.5,700.3633 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="119" x="332.5" y="717.4302">List is not ordered.</text><rect fill="#FEFECE" filter="url(#fm3mdz4xzb1ad)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="222" x="486.5" y="695.9453"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="202" x="496.5" y="717.084">insert self to core's list of nodes</text><rect fill="#FEFECE" filter="url(#fm3mdz4xzb1ad)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="93" x="551" y="749.9141"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="73" x="561" y="771.0527">unlock core</text><path d="M384.5,802.3164 L384.5,827.4492 A0,0 0 0 0 384.5,827.4492 L566.5,827.4492 A0,0 0 0 0 566.5,827.4492 L566.5,820.3164 L586.5,814.8828 L566.5,812.3164 L566.5,812.3164 L556.5,802.3164 L384.5,802.3164 A0,0 0 0 0 384.5,802.3164 " fill="#FBFB77" filter="url(#fm3mdz4xzb1ad)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M556.5,802.3164 L556.5,812.3164 L566.5,812.3164 L556.5,802.3164 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="390.5" y="819.3833">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="443.5" y="819.3833">URT_STATUS_OK</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="547.5" y="819.3833">.</text><ellipse cx="597.5" cy="814.8828" fill="#FFFFFF" filter="url(#fm3mdz4xzb1ad)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="597.5" cy="814.8828" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="597.5" x2="597.5" y1="410.6484" y2="430.6484"/><polygon fill="#A80036" points="593.5,420.6484,597.5,430.6484,601.5,420.6484,597.5,424.6484" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="597.5" x2="597.5" y1="450.6484" y2="524.3281"/><polygon fill="#A80036" points="593.5,514.3281,597.5,524.3281,601.5,514.3281,597.5,518.3281" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="597.5" x2="597.5" y1="558.2969" y2="641.9766"/><polygon fill="#A80036" points="593.5,631.9766,597.5,641.9766,601.5,631.9766,597.5,635.9766" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="597.5" x2="597.5" y1="675.9453" y2="695.9453"/><polygon fill="#A80036" points="593.5,685.9453,597.5,695.9453,601.5,685.9453,597.5,689.9453" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="597.5" x2="597.5" y1="729.9141" y2="749.9141"/><polygon fill="#A80036" points="593.5,739.9141,597.5,749.9141,601.5,739.9141,597.5,743.9141" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="597.5" x2="597.5" y1="783.8828" y2="803.8828"/><polygon fill="#A80036" points="593.5,793.8828,597.5,803.8828,601.5,793.8828,597.5,797.8828" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[307cf5ccdb0a0bc9227aeb407752f92d] |
|
2 |
@startuml |
|
3 |
|
|
4 |
title **µRtWare**\nurtNodeInit()\n |
|
5 |
|
|
6 |
|
|
7 |
note |
|
8 |
- - **node** : urt_node_t* - - |
|
9 |
The node to initialize. |
|
10 |
Must not be ""NULL"". |
|
11 |
- - **thread** : urt_osThread_t* - - |
|
12 |
The already initialized, exclusive thread for the node. |
|
13 |
Must not be ""NULL"". |
|
14 |
- - **setupcallback** : urt_nodeSetupCallback_t* - - |
|
15 |
Callback function to be executed during setup. |
|
16 |
May be ""NULL"" if no setup is required. |
|
17 |
- - **setupparams** : void*- - |
|
18 |
Optional parameters for the setup callback function. |
|
19 |
Must be ""NULL"" if no callback is specified. |
|
20 |
May be ""NULL"" if the specified callback does not expect parameters. |
|
21 |
- - **loopcallback** : urt_nodeLoopCallback_t* - - |
|
22 |
Callback function to be executed in a loop. |
|
23 |
Must not be ""NULL"". |
|
24 |
- - **loopparams** : void* - - |
|
25 |
Optional parameters for the loop callback function. |
|
26 |
May be ""NULL"" if the specified callback does not expect parameters. |
|
27 |
==== |
|
28 |
- - **return** : urt_status_t - - |
|
29 |
Always returns ""URT_STATUS_OK"". |
|
30 |
endnote |
|
31 |
|
|
32 |
|
|
33 |
start |
|
34 |
:initialize members; |
|
35 |
note |
|
36 |
**next** ← ""NULL"" |
|
37 |
**thread** ← thread |
|
38 |
**setupcallback** ← setupcallback |
|
39 |
**setupparams** ← setupparams |
|
40 |
**loopcallback** ← loopcallback |
|
41 |
**loopparams** ← loopparams |
|
42 |
**stage** ← 0 |
|
43 |
urtEventListenerInit(**listener**) |
|
44 |
.. URT_CFG_PUBSUB_PROFILING == true || URT_CFG_RPC_PROFILING = true .. |
|
45 |
**loops** ← 0 |
|
46 |
endnote |
|
47 |
:lock core; |
|
48 |
:insert self to core's list of nodes; |
|
49 |
note |
|
50 |
List is not ordered. |
|
51 |
endnote |
|
52 |
:unlock core; |
|
53 |
stop |
|
54 |
note |
|
55 |
Returns ""URT_STATUS_OK"". |
|
56 |
endnote |
|
57 |
|
|
58 |
|
|
59 |
@enduml |
|
60 |
|
|
61 |
PlantUML version 1.2020.00(Sat Jan 11 13:30:53 CET 2020) |
|
62 |
(GPL source distribution) |
|
63 |
Java Runtime: OpenJDK Runtime Environment |
|
64 |
JVM: OpenJDK 64-Bit Server VM |
|
65 |
Java Version: 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 |
|
66 |
Operating System: Linux |
|
67 |
Default Encoding: UTF-8 |
|
68 |
Language: en |
|
69 |
Country: US |
|
70 |
--></g></svg> |
doc/activitydiagrams/node/urtNodeInit.uml | ||
---|---|---|
1 |
/' |
|
2 |
µRtWare is a lightweight publish/subscribe middleware for real-time |
|
3 |
applications. It was developed as part of the software habitat for the |
|
4 |
Autonomous Mini Robot [1] (AMiRo) but can be used for other purposes as well. |
|
5 |
|
|
6 |
Copyright (C) 2018..2020 Thomas Schöpping et al. |
|
7 |
|
|
8 |
This program is free software: you can redistribute it and/or modify |
|
9 |
it under the terms of the GNU General Public License as published by |
|
10 |
the Free Software Foundation, either version 3 of the License, or |
|
11 |
(at your option) any later version. |
|
12 |
|
|
13 |
This program is distributed in the hope that it will be useful, |
|
14 |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
15 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
16 |
GNU General Public License for more details. |
|
17 |
|
|
18 |
You should have received a copy of the GNU General Public License |
|
19 |
along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
20 |
'/ |
|
21 |
|
|
22 |
/'### INTRO ##################################################################'/ |
|
23 |
|
|
24 |
@startuml |
|
25 |
|
|
26 |
title **µRtWare**\nurtNodeInit()\n |
|
27 |
|
|
28 |
/'### PARAMETERS & RETURN ####################################################'/ |
|
29 |
|
|
30 |
note |
|
31 |
-- **node** : urt_node_t* -- |
|
32 |
The node to initialize. |
|
33 |
Must not be ""NULL"". |
|
34 |
-- **thread** : urt_osThread_t* -- |
|
35 |
The already initialized, exclusive thread for the node. |
|
36 |
Must not be ""NULL"". |
|
37 |
-- **setupcallback** : urt_nodeSetupCallback_t* -- |
|
38 |
Callback function to be executed during setup. |
|
39 |
May be ""NULL"" if no setup is required. |
|
40 |
-- **setupparams** : void*-- |
|
41 |
Optional parameters for the setup callback function. |
|
42 |
Must be ""NULL"" if no callback is specified. |
|
43 |
May be ""NULL"" if the specified callback does not expect parameters. |
|
44 |
-- **loopcallback** : urt_nodeLoopCallback_t* -- |
|
45 |
Callback function to be executed in a loop. |
|
46 |
Must not be ""NULL"". |
|
47 |
-- **loopparams** : void* -- |
|
48 |
Optional parameters for the loop callback function. |
|
49 |
May be ""NULL"" if the specified callback does not expect parameters. |
|
50 |
==== |
|
51 |
-- **return** : urt_status_t -- |
|
52 |
Always returns ""URT_STATUS_OK"". |
|
53 |
endnote |
|
54 |
|
|
55 |
/'### PROCEDURE ##############################################################'/ |
|
56 |
|
|
57 |
start |
|
58 |
:initialize members; |
|
59 |
note |
|
60 |
**next** ← ""NULL"" |
|
61 |
**thread** ← thread |
|
62 |
**setupcallback** ← setupcallback |
|
63 |
**setupparams** ← setupparams |
|
64 |
**loopcallback** ← loopcallback |
|
65 |
**loopparams** ← loopparams |
|
66 |
**stage** ← 0 |
|
67 |
urtEventListenerInit(**listener**) |
|
68 |
.. URT_CFG_PUBSUB_PROFILING == true || URT_CFG_RPC_PROFILING = true .. |
|
69 |
**loops** ← 0 |
|
70 |
endnote |
|
71 |
:lock core; |
|
72 |
:insert self to core's list of nodes; |
|
73 |
note |
|
74 |
List is not ordered. |
|
75 |
endnote |
|
76 |
:unlock core; |
|
77 |
stop |
|
78 |
note |
|
79 |
Returns ""URT_STATUS_OK"". |
|
80 |
endnote |
|
81 |
|
|
82 |
/'### OUTRO ##################################################################'/ |
|
83 |
|
|
84 |
@enduml |
doc/activitydiagrams/publisher/urtPublisherInit.svg | ||
---|---|---|
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="692px" preserveAspectRatio="none" style="width:811px;height:692px;" version="1.1" viewBox="0 0 811 692" width="811px" zoomAndPan="magnify"><defs><filter height="300%" id="f1xffo3a9rerdo" 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="360" y="26.708">µRtWare</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="150" x="329.5" y="47.6611">urtPublisherInit()</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="0" x="407.5" y="68.6143"/><path d="M10,72.8594 L10,219.0547 A0,0 0 0 0 10,219.0547 L426,219.0547 A0,0 0 0 0 426,219.0547 L426,149.957 L446,145.957 L426,141.957 L426,82.8594 L416,72.8594 L10,72.8594 A0,0 0 0 0 10,72.8594 " fill="#FBFB77" filter="url(#f1xffo3a9rerdo)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M416,72.8594 L416,82.8594 L426,82.8594 L416,72.8594 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="10" x2="102" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="106" y="89.4263"/><text fill="#000000" font-family="monospace" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="72" x="106" y="89.4263">publisher</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="144" x="186" y="89.4263">: urt_publisher_t*</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="334" y="89.4263"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="334" x2="426" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="161" x="16" y="105.0591">The publisher to initialize.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="76" x="16" y="120.1919">Must not be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="96" y="120.1919">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="128" y="120.1919">.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="10" x2="134" y1="130.8242" y2="130.8242"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="138" y="134.8247"/><text fill="#000000" font-family="monospace" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="40" x="138" y="134.8247">topic</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="112" x="186" y="134.8247">: urt_topic_t*</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="302" y="134.8247"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="302" x2="426" y1="130.8242" y2="130.8242"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="259" x="16" y="150.4575">The topic, this publisher is associated to.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="76" x="16" y="165.5903">Must not be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="96" y="165.5903">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="128" y="165.5903">.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="10" x2="114" y1="176.2227" y2="176.2227"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="118" y="180.2231"/><text fill="#000000" font-family="monospace" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="64" x="118" y="180.2231">messages</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="128" x="190" y="180.2231">: urt_message_t*</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="322" y="180.2231"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="322" x2="426" y1="176.2227" y2="176.2227"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="9" x="16" y="195.856">A</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="29" y="195.856">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="346" x="65" y="195.856">terminated list of messages to contribute to the topic.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="46" x="16" y="210.9888">May be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="66" y="210.9888">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="202" x="102" y="210.9888">(no messages are contributed).</text><ellipse cx="456" cy="145.957" fill="#000000" filter="url(#f1xffo3a9rerdo)" rx="10" ry="10" style="stroke: none; stroke-width: 1.0;"/><rect fill="#FEFECE" filter="url(#f1xffo3a9rerdo)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="131" x="390.5" y="239.0547"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="111" x="400.5" y="260.1934">initialize members</text><rect fill="#FEFECE" filter="url(#f1xffo3a9rerdo)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="80" x="416" y="341.4258"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="60" x="426" y="362.5645">lock topic</text><rect fill="#FFFFFF" filter="url(#f1xffo3a9rerdo)" height="145.5859" style="stroke: #000000; stroke-width: 2.0;" width="638" x="137" y="386.1963"/><path d="M294,387.1963 L294,395.4932 L284,405.4932 L137,405.4932 " fill="none" style="stroke: #000000; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="147" x="140" y="400.1914">contribute messages</text><rect fill="#FEFECE" filter="url(#f1xffo3a9rerdo)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="474" x="219" y="422.4932"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="454" x="229" y="443.6318">set next pointer of topic's latest message to first message to contribute</text><rect fill="#FEFECE" filter="url(#f1xffo3a9rerdo)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="618" x="147" y="485.8135"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="598" x="157" y="506.9521">set next pointer of last message to contribute to the message after the topic's latest message</text><rect fill="#FEFECE" filter="url(#f1xffo3a9rerdo)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="96" x="408" y="551.7822"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="76" x="418" y="572.9209">unlock topic</text><polygon fill="#FEFECE" filter="url(#f1xffo3a9rerdo)" points="386,293.0234,526,293.0234,538,305.0234,526,317.0234,386,317.0234,374,305.0234,386,293.0234" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="460" y="327.2339">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="140" x="386" y="308.8315">Messages to contribute?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="538" y="302.4292">no</text><polygon fill="#FEFECE" filter="url(#f1xffo3a9rerdo)" points="456,605.751,468,617.751,456,629.751,444,617.751,456,605.751" style="stroke: #A80036; stroke-width: 1.5;"/><path d="M243,640.6182 L243,680.8838 A0,0 0 0 0 243,680.8838 L425,680.8838 A0,0 0 0 0 425,680.8838 L425,664.751 L445,660.751 L425,656.751 L425,650.6182 L415,640.6182 L243,640.6182 A0,0 0 0 0 243,640.6182 " fill="#FBFB77" filter="url(#f1xffo3a9rerdo)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M415,640.6182 L415,650.6182 L425,650.6182 L415,640.6182 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="243" x2="257.5" y1="653.1846" y2="653.1846"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="261.5" y="657.1851"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="45" x="261.5" y="657.1851">return</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="310.5" y="657.1851"/><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="96" x="310.5" y="657.1851">urt_status_t</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="410.5" y="657.1851"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="410.5" x2="425" y1="653.1846" y2="653.1846"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="249" y="672.8179">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="302" y="672.8179">URT_STATUS_OK</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="406" y="672.8179">.</text><ellipse cx="456" cy="660.751" fill="#FFFFFF" filter="url(#f1xffo3a9rerdo)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="456" cy="660.751" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="456" x2="456" y1="155.957" y2="239.0547"/><polygon fill="#A80036" points="452,229.0547,456,239.0547,460,229.0547,456,233.0547" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="456" x2="456" y1="456.4619" y2="485.8135"/><polygon fill="#A80036" points="452,475.8135,456,485.8135,460,475.8135,456,479.8135" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="456" x2="456" y1="375.3945" y2="422.4932"/><polygon fill="#A80036" points="452,412.4932,456,422.4932,460,412.4932,456,416.4932" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="456" x2="456" y1="519.7822" y2="551.7822"/><polygon fill="#A80036" points="452,541.7822,456,551.7822,460,541.7822,456,545.7822" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="456" x2="456" y1="317.0234" y2="341.4258"/><polygon fill="#A80036" points="452,331.4258,456,341.4258,460,331.4258,456,335.4258" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="538" x2="785" y1="305.0234" y2="305.0234"/><polygon fill="#A80036" points="781,455.8135,785,465.8135,789,455.8135,785,459.8135" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="785" x2="785" y1="305.0234" y2="617.751"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="785" x2="468" y1="617.751" y2="617.751"/><polygon fill="#A80036" points="478,613.751,468,617.751,478,621.751,474,617.751" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="456" x2="456" y1="585.751" y2="605.751"/><polygon fill="#A80036" points="452,595.751,456,605.751,460,595.751,456,599.751" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="456" x2="456" y1="273.0234" y2="293.0234"/><polygon fill="#A80036" points="452,283.0234,456,293.0234,460,283.0234,456,287.0234" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="456" x2="456" y1="629.751" y2="649.751"/><polygon fill="#A80036" points="452,639.751,456,649.751,460,639.751,456,643.751" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[cad571e197258dd00abff76ac285e5b2]
|
|
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="811px" preserveAspectRatio="none" style="width:1212px;height:811px;" version="1.1" viewBox="0 0 1212 811" width="1212px" zoomAndPan="magnify"><defs><filter height="300%" id="fcs9iivy1fmh7" 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="560.5" y="26.708">µRtWare</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="150" x="530" y="47.6611">urtPublisherInit()</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="0" x="608" y="68.6143"/><path d="M368.5,72.8594 L368.5,289.5859 L819.5,289.5859 L819.5,82.8594 L809.5,72.8594 L368.5,72.8594 " fill="#FBFB77" filter="url(#fcs9iivy1fmh7)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M809.5,72.8594 L809.5,82.8594 L819.5,82.8594 L809.5,72.8594 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="368.5" x2="498.5" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="502.5" y="89.4263"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="69" x="502.5" y="89.4263">publisher</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="110" x="575.5" y="89.4263">: urt_publisher_t*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="689.5" x2="819.5" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="161" x="374.5" y="105.0591">The publisher to initialize.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="76" x="374.5" y="120.1919">Must not be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="454.5" y="120.1919">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="486.5" y="120.1919">.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="368.5" x2="528" y1="130.8242" y2="130.8242"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="532" y="134.8247"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="37" x="532" y="134.8247">topic</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="83" x="573" y="134.8247">: urt_topic_t*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="660" x2="819.5" y1="130.8242" y2="130.8242"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="259" x="374.5" y="150.4575">The topic, this publisher is associated to.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="76" x="374.5" y="165.5903">Must not be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="454.5" y="165.5903">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="486.5" y="165.5903">.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="368.5" x2="495" y1="176.2227" y2="176.2227"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="499" y="180.2231"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="75" x="499" y="180.2231">messages</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="111" x="578" y="180.2231">: urt_message_t*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="693" x2="819.5" y1="176.2227" y2="176.2227"/><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="374.5" y="195.856">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="346" x="410.5" y="195.856">terminated list of messages to contribute to the topic.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="329" x="374.5" y="210.9888">Messages must not be associated to another topic.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="430" x="374.5" y="226.1216">Once a message has been contributed, it cannot be removed later.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="46" x="374.5" y="241.2544">May be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="424.5" y="241.2544">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="186" x="460.5" y="241.2544">(no messages to contribute).</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="368.5" x2="819.5" y1="249.3203" y2="249.3203"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="368.5" x2="819.5" y1="251.3203" y2="251.3203"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="368.5" x2="523" y1="261.8867" y2="261.8867"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="527" y="265.8872"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="45" x="527" y="265.8872">return</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="85" x="576" y="265.8872">: urt_status_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="665" x2="819.5" y1="261.8867" y2="261.8867"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="93" x="374.5" y="281.52">Always returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="471.5" y="281.52">URT_STATUS_OK</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="575.5" y="281.52">.</text><ellipse cx="594" cy="319.5859" fill="#000000" filter="url(#fcs9iivy1fmh7)" rx="10" ry="10" style="stroke: none; stroke-width: 1.0;"/><path d="M230.5,339.5859 L230.5,410.1172 A0,0 0 0 0 230.5,410.1172 L508.5,410.1172 A0,0 0 0 0 508.5,410.1172 L508.5,378.8516 L528.5,374.8516 L508.5,370.8516 L508.5,349.5859 L498.5,339.5859 L230.5,339.5859 A0,0 0 0 0 230.5,339.5859 " fill="#FBFB77" filter="url(#fcs9iivy1fmh7)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M498.5,339.5859 L498.5,349.5859 L508.5,349.5859 L498.5,339.5859 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="37" x="236.5" y="356.6528">topic</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="46" x="277.5" y="356.6528">← topic</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="230.5" x2="241" y1="367.2852" y2="367.2852"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="249" x="245" y="371.2856">URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="498" x2="508.5" y1="367.2852" y2="367.2852"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="123" x="236.5" y="386.9185">publishAttempts</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="23" x="363.5" y="386.9185">← 0</text><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="88" x="236.5" y="402.0513">publishFails</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="23" x="328.5" y="402.0513">← 0</text><rect fill="#FEFECE" filter="url(#fcs9iivy1fmh7)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="131" x="528.5" y="357.8672"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="111" x="538.5" y="379.0059">initialize members</text><rect fill="#FEFECE" filter="url(#fcs9iivy1fmh7)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="80" x="554" y="478.5195"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="60" x="564" y="499.6582">lock topic</text><rect fill="#FFFFFF" filter="url(#fcs9iivy1fmh7)" height="134.2656" style="stroke: #000000; stroke-width: 2.0;" width="1166" x="10" y="523.29"/><path d="M167,524.29 L167,532.5869 L157,542.5869 L10,542.5869 " fill="none" style="stroke: #000000; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="147" x="13" y="537.2852">contribute messages</text><rect fill="#000000" filter="url(#fcs9iivy1fmh7)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="1146" x="20" y="559.5869"/><rect fill="#FEFECE" filter="url(#fcs9iivy1fmh7)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="474" x="34" y="585.5869"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="454" x="44" y="606.7256">set next pointer of topic's latest message to first message to contribute</text><rect fill="#FEFECE" filter="url(#fcs9iivy1fmh7)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="618" x="536" y="585.5869"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="598" x="546" y="606.7256">set next pointer of last message to contribute to the message after the topic's latest message</text><rect fill="#000000" filter="url(#fcs9iivy1fmh7)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="1146" x="20" y="639.5557"/><rect fill="#FEFECE" filter="url(#fcs9iivy1fmh7)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="96" x="546" y="677.5557"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="76" x="556" y="698.6943">unlock topic</text><polygon fill="#FEFECE" filter="url(#fcs9iivy1fmh7)" points="524,430.1172,664,430.1172,676,442.1172,664,454.1172,524,454.1172,512,442.1172,524,430.1172" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="598" y="464.3276">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="140" x="524" y="445.9253">Messages to contribute?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="676" y="439.5229">no</text><polygon fill="#FEFECE" filter="url(#fcs9iivy1fmh7)" points="594,731.5244,606,743.5244,594,755.5244,582,743.5244,594,731.5244" style="stroke: #A80036; stroke-width: 1.5;"/><path d="M381,773.958 L381,799.0908 A0,0 0 0 0 381,799.0908 L563,799.0908 A0,0 0 0 0 563,799.0908 L563,791.958 L583,786.5244 L563,783.958 L563,783.958 L553,773.958 L381,773.958 A0,0 0 0 0 381,773.958 " fill="#FBFB77" filter="url(#fcs9iivy1fmh7)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M553,773.958 L553,783.958 L563,783.958 L553,773.958 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="387" y="791.0249">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="440" y="791.0249">URT_STATUS_OK</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="544" y="791.0249">.</text><ellipse cx="594" cy="786.5244" fill="#FFFFFF" filter="url(#fcs9iivy1fmh7)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="594" cy="786.5244" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="594" x2="594" y1="289.5859" y2="309.5859"/><polygon fill="#A80036" points="590,299.5859,594,309.5859,598,299.5859,594,303.5859" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="594" x2="594" y1="329.5859" y2="357.8672"/><polygon fill="#A80036" points="590,347.8672,594,357.8672,598,347.8672,594,351.8672" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="271" x2="271" y1="565.5869" y2="585.5869"/><polygon fill="#A80036" points="267,575.5869,271,585.5869,275,575.5869,271,579.5869" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="845" x2="845" y1="565.5869" y2="585.5869"/><polygon fill="#A80036" points="841,575.5869,845,585.5869,849,575.5869,845,579.5869" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="271" x2="271" y1="619.5557" y2="639.5557"/><polygon fill="#A80036" points="267,629.5557,271,639.5557,275,629.5557,271,633.5557" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="845" x2="845" y1="619.5557" y2="639.5557"/><polygon fill="#A80036" points="841,629.5557,845,639.5557,849,629.5557,845,633.5557" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="594" x2="594" y1="512.4883" y2="559.5869"/><polygon fill="#A80036" points="590,549.5869,594,559.5869,598,549.5869,594,553.5869" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="594" x2="594" y1="645.5557" y2="677.5557"/><polygon fill="#A80036" points="590,667.5557,594,677.5557,598,667.5557,594,671.5557" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="594" x2="594" y1="454.1172" y2="478.5195"/><polygon fill="#A80036" points="590,468.5195,594,478.5195,598,468.5195,594,472.5195" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="676" x2="1186" y1="442.1172" y2="442.1172"/><polygon fill="#A80036" points="1182,584.4229,1186,594.4229,1190,584.4229,1186,588.4229" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1186" x2="1186" y1="442.1172" y2="743.5244"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1186" x2="606" y1="743.5244" y2="743.5244"/><polygon fill="#A80036" points="616,739.5244,606,743.5244,616,747.5244,612,743.5244" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="594" x2="594" y1="711.5244" y2="731.5244"/><polygon fill="#A80036" points="590,721.5244,594,731.5244,598,721.5244,594,725.5244" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="594" x2="594" y1="391.8359" y2="430.1172"/><polygon fill="#A80036" points="590,420.1172,594,430.1172,598,420.1172,594,424.1172" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="594" x2="594" y1="755.5244" y2="775.5244"/><polygon fill="#A80036" points="590,765.5244,594,775.5244,598,765.5244,594,769.5244" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[5c5b56038ceff1f6c77f1e7c43c99812]
|
|
2 | 2 |
@startuml |
3 | 3 |
|
4 | 4 |
title **µRtWare**\nurtPublisherInit()\n |
5 | 5 |
|
6 | 6 |
|
7 |
|
|
8 |
|
|
9 |
|
|
10 |
|
|
11 |
|
|
12 |
|
|
13 |
|
|
14 |
|
|
15 |
|
|
16 |
|
|
17 |
start |
|
18 | 7 |
note |
19 |
- - ""**publisher** : urt_publisher_t*"" - -
|
|
8 |
- - **publisher** : urt_publisher_t* - -
|
|
20 | 9 |
The publisher to initialize. |
21 | 10 |
Must not be ""NULL"". |
22 |
- - ""**topic** : urt_topic_t*"" - -
|
|
11 |
- - **topic** : urt_topic_t* - -
|
|
23 | 12 |
The topic, this publisher is associated to. |
24 | 13 |
Must not be ""NULL"". |
25 |
- - ""**messages** : urt_message_t*"" - - |
|
26 |
A ""NULL"" terminated list of messages to contribute to the topic. |
|
27 |
May be ""NULL"" (no messages are contributed). |
|
28 |
end note |
|
14 |
- - **messages** : urt_message_t* - - |
|
15 |
""NULL"" terminated list of messages to contribute to the topic. |
|
16 |
Messages must not be associated to another topic. |
|
17 |
Once a message has been contributed, it cannot be removed later. |
|
18 |
May be ""NULL"" (no messages to contribute). |
|
19 |
==== |
|
20 |
- - **return** : urt_status_t - - |
|
21 |
Always returns ""URT_STATUS_OK"". |
|
22 |
endnote |
|
29 | 23 |
|
30 | 24 |
|
25 |
start |
|
31 | 26 |
:initialize members; |
27 |
note |
|
28 |
**topic** ← topic |
|
29 |
.. URT_CFG_PUBSUB_PROFILING == true .. |
|
30 |
**publishAttempts** ← 0 |
|
31 |
**publishFails** ← 0 |
|
32 |
endnote |
|
32 | 33 |
if (Messages to contribute?) then (yes) |
33 | 34 |
:lock topic; |
34 |
partition "contribute messages" { |
|
35 |
|
|
36 |
partition "contribute messages" { |
|
37 |
fork |
|
35 | 38 |
:set next pointer of topic's latest message to first message to contribute; |
39 |
fork again |
|
36 | 40 |
:set next pointer of last message to contribute to the message after the topic's latest message; |
37 |
} |
|
41 |
endfork |
|
42 |
} |
|
43 |
|
|
38 | 44 |
:unlock topic; |
39 | 45 |
else (no) |
40 | 46 |
endif |
41 |
|
|
42 |
|
|
43 | 47 |
stop |
44 | 48 |
note |
45 |
- - **return** ""urt_status_t"" - - |
|
46 | 49 |
Returns ""URT_STATUS_OK"". |
47 |
end note
|
|
50 |
endnote |
|
48 | 51 |
|
49 | 52 |
|
50 | 53 |
@enduml |
doc/activitydiagrams/publisher/urtPublisherInit.uml | ||
---|---|---|
25 | 25 |
|
26 | 26 |
title **µRtWare**\nurtPublisherInit()\n |
27 | 27 |
|
28 |
!include ../../functions.iuml
|
|
28 |
/'### PARAMETERS & RETURN ####################################################'/
|
|
29 | 29 |
|
30 |
/'### PARAMETERS & START #####################################################'/ |
|
31 |
|
|
32 |
start |
|
33 | 30 |
note |
34 |
-- ""**publisher** : urt_publisher_t*"" --
|
|
31 |
-- **publisher** : urt_publisher_t* --
|
|
35 | 32 |
The publisher to initialize. |
36 | 33 |
Must not be ""NULL"". |
37 |
-- ""**topic** : urt_topic_t*"" --
|
|
34 |
-- **topic** : urt_topic_t* --
|
|
38 | 35 |
The topic, this publisher is associated to. |
39 | 36 |
Must not be ""NULL"". |
40 |
-- ""**messages** : urt_message_t*"" -- |
|
41 |
A ""NULL"" terminated list of messages to contribute to the topic. |
|
42 |
May be ""NULL"" (no messages are contributed). |
|
43 |
end note |
|
37 |
-- **messages** : urt_message_t* -- |
|
38 |
""NULL"" terminated list of messages to contribute to the topic. |
|
39 |
Messages must not be associated to another topic. |
|
40 |
Once a message has been contributed, it cannot be removed later. |
|
41 |
May be ""NULL"" (no messages to contribute). |
|
42 |
==== |
|
43 |
-- **return** : urt_status_t -- |
|
44 |
Always returns ""URT_STATUS_OK"". |
|
45 |
endnote |
|
44 | 46 |
|
45 | 47 |
/'### PROCEDURE ##############################################################'/ |
46 | 48 |
|
49 |
start |
|
47 | 50 |
:initialize members; |
51 |
note |
|
52 |
**topic** ← topic |
|
53 |
.. URT_CFG_PUBSUB_PROFILING == true .. |
|
54 |
**publishAttempts** ← 0 |
|
55 |
**publishFails** ← 0 |
|
56 |
endnote |
|
48 | 57 |
if (Messages to contribute?) then (yes) |
49 | 58 |
:lock topic; |
50 |
partition "contribute messages" { |
|
51 |
:set next pointer of topic's latest message to first message to contribute; |
|
52 |
:set next pointer of last message to contribute to the message after the topic's latest message; |
|
53 |
} |
|
59 |
!include ../contributemessages.iuml |
|
54 | 60 |
:unlock topic; |
55 | 61 |
else (no) |
56 | 62 |
endif |
57 |
|
|
58 |
/'### STOP & RETURN ##########################################################'/ |
|
59 |
|
|
60 | 63 |
stop |
61 | 64 |
note |
62 |
-- **return** ""urt_status_t"" -- |
|
63 | 65 |
Returns ""URT_STATUS_OK"". |
64 |
end note
|
|
66 |
endnote |
|
65 | 67 |
|
66 | 68 |
/'### OUTRO ##################################################################'/ |
67 | 69 |
|
doc/activitydiagrams/publisher/urtPublisherPublish.svg | ||
---|---|---|
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="1211px" preserveAspectRatio="none" style="width:2678px;height:1211px;" version="1.1" viewBox="0 0 2678 1211" width="2678px" zoomAndPan="magnify"><defs><filter height="300%" id="f1jy0wcjc0dc24" 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="1293.5" y="26.708">µRtWare</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="183" x="1246.5" y="47.6611">urtPublisherPublish()</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="0" x="1341" y="68.6143"/><path d="M351,72.8594 L351,264.4531 A0,0 0 0 0 351,264.4531 L736,264.4531 A0,0 0 0 0 736,264.4531 L736,172.6563 L756,168.6563 L736,164.6563 L736,82.8594 L726,72.8594 L351,72.8594 A0,0 0 0 0 351,72.8594 " fill="#FBFB77" filter="url(#f1jy0wcjc0dc24)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M726,72.8594 L726,82.8594 L736,82.8594 L726,72.8594 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="351" x2="427.5" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="431.5" y="89.4263"/><text fill="#000000" font-family="monospace" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="72" x="431.5" y="89.4263">publisher</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="144" x="511.5" y="89.4263">: urt_publisher_t*</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="659.5" y="89.4263"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="659.5" x2="736" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="197" x="357" 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="357" y="120.1919">Must not be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="437" y="120.1919">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="469" y="120.1919">.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="351" x2="479.5" y1="130.8242" y2="130.8242"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="483.5" y="134.8247"/><text fill="#000000" font-family="monospace" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="56" x="483.5" y="134.8247">payload</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="56" x="547.5" y="134.8247">: void*</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="607.5" y="134.8247"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="607.5" x2="736" y1="130.8242" y2="130.8242"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="226" x="357" 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="357" y="165.5903">May be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="407" y="165.5903">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="195" x="443" y="165.5903">for messages without payload.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="351" x2="499.5" y1="176.2227" y2="176.2227"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="503.5" y="180.2231"/><text fill="#000000" font-family="monospace" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="8" x="503.5" y="180.2231">n</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="64" x="519.5" y="180.2231">: size_t</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="587.5" y="180.2231"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="587.5" x2="736" y1="176.2227" y2="176.2227"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="180" x="357" y="195.856">Size of the payload in bytes.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="351" x2="475.5" y1="206.4883" y2="206.4883"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="479.5" y="210.4888"/><text fill="#000000" font-family="monospace" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="8" x="479.5" y="210.4888">t</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="112" x="495.5" y="210.4888">: urt_osTime_t</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="611.5" y="210.4888"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="611.5" x2="736" y1="206.4883" y2="206.4883"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="246" x="357" y="226.1216">Timestamp to be set for the message.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="351" x2="455.5" y1="236.7539" y2="236.7539"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="459.5" y="240.7544"/><text fill="#000000" font-family="monospace" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="56" x="459.5" y="240.7544">timeout</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="523.5" y="240.7544">: urt_delay_t</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="631.5" y="240.7544"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="631.5" x2="736" y1="236.7539" y2="236.7539"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="364" x="357" y="256.3872">Timeout delay in case the message cannot be published.</text><ellipse cx="766" cy="168.6563" fill="#000000" filter="url(#f1jy0wcjc0dc24)" rx="10" ry="10" style="stroke: none; stroke-width: 1.0;"/><rect fill="#FEFECE" filter="url(#f1jy0wcjc0dc24)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="80" x="726" y="284.4531"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="60" x="736" y="305.5918">lock topic</text><rect fill="#FEFECE" filter="url(#f1jy0wcjc0dc24)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="156" x="688" y="338.4219"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="136" x="698" y="359.5605">access next message</text><polygon fill="#FEFECE" filter="url(#f1jy0wcjc0dc24)" points="638,462.5151,894,462.5151,906,474.5151,894,486.5151,638,486.5151,626,474.5151,638,462.5151" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="256" x="638" y="478.3232">Message timestamp was modified?) the (yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="906" y="471.9209">no</text><rect fill="#FEFECE" filter="url(#f1jy0wcjc0dc24)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="171" x="496.75" y="496.5151"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="151" x="506.75" y="517.6538">iterate to next message</text><rect fill="#FEFECE" filter="url(#f1jy0wcjc0dc24)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="524" x="687.75" y="496.5151"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="504" x="697.75" y="517.6538">wait for topic's condition variable (using topic's mutex) to be signaled or timeout</text><polygon fill="#FEFECE" filter="url(#f1jy0wcjc0dc24)" points="766,536.4839,778,548.4839,766,560.4839,754,548.4839,766,536.4839" style="stroke: #A80036; stroke-width: 1.5;"/><polygon fill="#FEFECE" filter="url(#f1jy0wcjc0dc24)" points="648,392.3906,884,392.3906,896,411.5977,884,430.8047,648,430.8047,636,411.5977,648,392.3906" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="770" y="441.0151">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="211" x="648" y="402.6011">HRT consumers left for the message</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="236" x="648" y="415.4058">or the message timestamp was modified</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="139" x="648" y="428.2104">and a timeout occurred?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="622" y="409.0034">no</text><polygon fill="#FEFECE" filter="url(#f1jy0wcjc0dc24)" points="713,602.4839,819,602.4839,831,614.4839,819,626.4839,713,626.4839,701,614.4839,713,602.4839" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="106" x="713" y="618.292">Timeout occurred?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="681" y="611.8896">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="831" y="611.8896">no</text><rect fill="#FEFECE" filter="url(#f1jy0wcjc0dc24)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="96" x="49.5" y="636.4839"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="76" x="59.5" y="657.6226">unlock topic</text><rect fill="#FEFECE" filter="url(#f1jy0wcjc0dc24)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="175" x="10" y="705.4526"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="39" x="20" y="726.5913">return</text><text fill="#000000" font-family="monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="112" x="63" y="726.5913">URT_STATUS_ERROR</text><rect fill="#000000" filter="url(#f1jy0wcjc0dc24)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="2471" x="195" y="636.4839"/><rect fill="#000000" filter="url(#f1jy0wcjc0dc24)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="1014" x="207" y="761.7729"/><rect fill="#FEFECE" filter="url(#f1jy0wcjc0dc24)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="251" x="219" y="787.7729"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="231" x="229" y="808.9116">iterate topic pointer to this message</text><rect fill="#FEFECE" filter="url(#f1jy0wcjc0dc24)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="180" x="498" y="787.7729"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="160" x="508" y="808.9116">copy payload to message</text><rect fill="#FEFECE" filter="url(#f1jy0wcjc0dc24)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="187" x="706" y="787.7729"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="167" x="716" y="808.9116">set origin time of message</text><rect fill="#FEFECE" filter="url(#f1jy0wcjc0dc24)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="286" x="921" y="787.7729"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="266" x="931" y="808.9116">set number of HRT consumers (from topic)</text><rect fill="#000000" filter="url(#f1jy0wcjc0dc24)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="1014" x="207" y="841.7417"/><rect fill="#FEFECE" filter="url(#f1jy0wcjc0dc24)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="398" x="1249" y="787.7729"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="378" x="1259" y="808.9116">set QoS rate timer (@topic) wrt. most critical HRT subscriber</text><path d="M1675,776.1089 L1675,801.2417 A0,0 0 0 0 1675,801.2417 L2170,801.2417 A0,0 0 0 0 2170,801.2417 L2170,794.1089 L2190,788.6753 L2170,786.1089 L2170,786.1089 L2160,776.1089 L1675,776.1089 A0,0 0 0 0 1675,776.1089 " fill="#FBFB77" filter="url(#f1jy0wcjc0dc24)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M2160,776.1089 L2160,786.1089 L2170,786.1089 L2160,776.1089 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="474" x="1681" y="793.1758">No lock required since this timer is only accessed when the topic is locked.</text><rect fill="#FEFECE" filter="url(#f1jy0wcjc0dc24)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="434" x="2190" y="771.6909"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="414" x="2200" y="792.8296">set QoS delay timer (@subscriber) wrt. origin time of the message</text><polygon fill="#FEFECE" filter="url(#f1jy0wcjc0dc24)" points="2277,723.2886,2537,723.2886,2549,735.2886,2537,747.2886,2277,747.2886,2265,735.2886,2277,723.2886" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="2411" y="757.499">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="260" x="2277" y="739.0967">QoS delay timer (@subscriber) is not armed?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="2549" y="732.6943">no</text><polygon fill="#FEFECE" filter="url(#f1jy0wcjc0dc24)" points="2407,830.062,2419,842.062,2407,854.062,2395,842.062,2407,830.062" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#FEFECE" filter="url(#f1jy0wcjc0dc24)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="208" x="2303" y="874.062"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="188" x="2313" y="895.2007">iterate to next HRT subscriber</text><polygon fill="#FEFECE" filter="url(#f1jy0wcjc0dc24)" points="2346,662.4839,2468,662.4839,2480,674.4839,2468,686.4839,2346,686.4839,2334,674.4839,2346,662.4839" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="2411" y="696.6943">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="122" x="2346" y="678.292">HRT subscribers left?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="2320" y="671.8896">no</text><rect fill="#000000" filter="url(#f1jy0wcjc0dc24)" height="6" rx="2.5" ry="2.5" style="stroke: #000000; stroke-width: 1.0;" width="2471" x="195" y="950.0308"/><path d="M1053,980.4487 L1053,1005.5815 A0,0 0 0 0 1053,1005.5815 L1389,1005.5815 A0,0 0 0 0 1389,1005.5815 L1389,998.4487 L1409,993.0151 L1389,990.4487 L1389,990.4487 L1379,980.4487 L1053,980.4487 A0,0 0 0 0 1053,980.4487 " fill="#FBFB77" filter="url(#f1jy0wcjc0dc24)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1379,980.4487 L1379,990.4487 L1389,990.4487 L1379,980.4487 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="315" x="1059" y="997.5156">Msut be within topic lock because of HRT counter.</text><rect fill="#FEFECE" filter="url(#f1jy0wcjc0dc24)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="79" x="1409" y="976.0308"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="59" x="1419" y="997.1694">fire event</text><rect fill="#FEFECE" filter="url(#f1jy0wcjc0dc24)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="96" x="1400.5" y="1029.9995"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="76" x="1410.5" y="1051.1382">unlock topic</text><rect fill="#FEFECE" filter="url(#f1jy0wcjc0dc24)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="154" x="1371.5" y="1083.9683"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="39" x="1381.5" y="1105.1069">return</text><text fill="#000000" font-family="monospace" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="91" x="1424.5" y="1105.1069">URT_STATUS_OK</text><polygon fill="#FEFECE" filter="url(#f1jy0wcjc0dc24)" points="766,1123.937,778,1135.937,766,1147.937,754,1135.937,766,1123.937" style="stroke: #A80036; stroke-width: 1.5;"/><path d="M455,1158.8042 L455,1199.0698 A0,0 0 0 0 455,1199.0698 L735,1199.0698 A0,0 0 0 0 735,1199.0698 L735,1182.937 L755,1178.937 L735,1174.937 L735,1168.8042 L725,1158.8042 L455,1158.8042 A0,0 0 0 0 455,1158.8042 " fill="#FBFB77" filter="url(#f1jy0wcjc0dc24)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M725,1158.8042 L725,1168.8042 L735,1168.8042 L725,1158.8042 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="455" x2="518.5" y1="1171.3706" y2="1171.3706"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="522.5" y="1175.3711"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="45" x="522.5" y="1175.3711">return</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="571.5" y="1175.3711"/><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="96" x="571.5" y="1175.3711">urt_status_t</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="671.5" y="1175.3711"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="671.5" x2="735" y1="1171.3706" y2="1171.3706"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="461" y="1191.0039">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="128" x="514" y="1191.0039">URT_STATUS_ERROR</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="74" x="646" y="1191.0039">on timeout.</text><ellipse cx="766" cy="1178.937" fill="#FFFFFF" filter="url(#f1jy0wcjc0dc24)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="766" cy="1178.937" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="766" x2="766" y1="178.6563" y2="284.4531"/><polygon fill="#A80036" points="762,274.4531,766,284.4531,770,274.4531,766,278.4531" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="766" x2="766" y1="318.4219" y2="338.4219"/><polygon fill="#A80036" points="762,328.4219,766,338.4219,770,328.4219,766,332.4219" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="626" x2="582.25" y1="474.5151" y2="474.5151"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="582.25" x2="582.25" y1="474.5151" y2="496.5151"/><polygon fill="#A80036" points="578.25,486.5151,582.25,496.5151,586.25,486.5151,582.25,490.5151" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="906" x2="949.75" y1="474.5151" y2="474.5151"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="949.75" x2="949.75" y1="474.5151" y2="496.5151"/><polygon fill="#A80036" points="945.75,486.5151,949.75,496.5151,953.75,486.5151,949.75,490.5151" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="582.25" x2="582.25" y1="530.4839" y2="548.4839"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="582.25" x2="754" y1="548.4839" y2="548.4839"/><polygon fill="#A80036" points="744,544.4839,754,548.4839,744,552.4839,748,548.4839" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="949.75" x2="949.75" y1="530.4839" y2="548.4839"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="949.75" x2="778" y1="548.4839" y2="548.4839"/><polygon fill="#A80036" points="788,544.4839,778,548.4839,788,552.4839,784,548.4839" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="766" x2="766" y1="430.8047" y2="462.5151"/><polygon fill="#A80036" points="762,452.5151,766,462.5151,770,452.5151,766,456.5151" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="766" x2="766" y1="560.4839" y2="570.4839"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="766" x2="1233.75" y1="570.4839" y2="570.4839"/><polygon fill="#A80036" points="1229.75,499.4937,1233.75,489.4937,1237.75,499.4937,1233.75,495.4937" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1233.75" x2="1233.75" y1="411.5977" y2="570.4839"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1233.75" x2="896" y1="411.5977" y2="411.5977"/><polygon fill="#A80036" points="906,407.5977,896,411.5977,906,415.5977,902,411.5977" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="636" x2="474.75" y1="411.5977" y2="411.5977"/><polygon fill="#A80036" points="470.75,485.4937,474.75,495.4937,478.75,485.4937,474.75,489.4937" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="474.75" x2="474.75" y1="411.5977" y2="582.4839"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="474.75" x2="766" y1="582.4839" y2="582.4839"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="766" x2="766" y1="582.4839" y2="602.4839"/><polygon fill="#A80036" points="762,592.4839,766,602.4839,770,592.4839,766,596.4839" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="766" x2="766" y1="372.3906" y2="392.3906"/><polygon fill="#A80036" points="762,382.3906,766,392.3906,770,382.3906,766,386.3906" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="97.5" x2="97.5" y1="670.4526" y2="705.4526"/><polygon fill="#A80036" points="93.5,695.4526,97.5,705.4526,101.5,695.4526,97.5,699.4526" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="344.5" x2="344.5" y1="767.7729" y2="787.7729"/><polygon fill="#A80036" points="340.5,777.7729,344.5,787.7729,348.5,777.7729,344.5,781.7729" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="588" x2="588" y1="767.7729" y2="787.7729"/><polygon fill="#A80036" points="584,777.7729,588,787.7729,592,777.7729,588,781.7729" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="799.5" x2="799.5" y1="767.7729" y2="787.7729"/><polygon fill="#A80036" points="795.5,777.7729,799.5,787.7729,803.5,777.7729,799.5,781.7729" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1064" x2="1064" y1="767.7729" y2="787.7729"/><polygon fill="#A80036" points="1060,777.7729,1064,787.7729,1068,777.7729,1064,781.7729" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="344.5" x2="344.5" y1="821.7417" y2="841.7417"/><polygon fill="#A80036" points="340.5,831.7417,344.5,841.7417,348.5,831.7417,344.5,835.7417" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="588" x2="588" y1="821.7417" y2="841.7417"/><polygon fill="#A80036" points="584,831.7417,588,841.7417,592,831.7417,588,835.7417" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="799.5" x2="799.5" y1="821.7417" y2="841.7417"/><polygon fill="#A80036" points="795.5,831.7417,799.5,841.7417,803.5,831.7417,799.5,835.7417" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1064" x2="1064" y1="821.7417" y2="841.7417"/><polygon fill="#A80036" points="1060,831.7417,1064,841.7417,1068,831.7417,1064,835.7417" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2407" x2="2407" y1="747.2886" y2="771.6909"/><polygon fill="#A80036" points="2403,761.6909,2407,771.6909,2411,761.6909,2407,765.6909" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2549" x2="2634" y1="735.2886" y2="735.2886"/><polygon fill="#A80036" points="2630,778.6753,2634,788.6753,2638,778.6753,2634,782.6753" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2634" x2="2634" y1="735.2886" y2="842.062"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2634" x2="2419" y1="842.062" y2="842.062"/><polygon fill="#A80036" points="2429,838.062,2419,842.062,2429,846.062,2425,842.062" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2407" x2="2407" y1="805.6597" y2="830.062"/><polygon fill="#A80036" points="2403,820.062,2407,830.062,2411,820.062,2407,824.062" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2407" x2="2407" y1="854.062" y2="874.062"/><polygon fill="#A80036" points="2403,864.062,2407,874.062,2411,864.062,2407,868.062" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2407" x2="2407" y1="686.4839" y2="723.2886"/><polygon fill="#A80036" points="2403,713.2886,2407,723.2886,2411,713.2886,2407,717.2886" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2407" x2="2407" y1="908.0308" y2="918.0308"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2407" x2="2652" y1="918.0308" y2="918.0308"/><polygon fill="#A80036" points="2648,814.7573,2652,804.7573,2656,814.7573,2652,810.7573" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2652" x2="2652" y1="674.4839" y2="918.0308"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2652" x2="2480" y1="674.4839" y2="674.4839"/><polygon fill="#A80036" points="2490,670.4839,2480,674.4839,2490,678.4839,2486,674.4839" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2334" x2="1661" y1="674.4839" y2="674.4839"/><polygon fill="#A80036" points="1657,800.7573,1661,810.7573,1665,800.7573,1661,804.7573" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1661" x2="1661" y1="674.4839" y2="930.0308"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1661" x2="2407" y1="930.0308" y2="930.0308"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2407" x2="2407" y1="930.0308" y2="950.0308"/><polygon fill="#A80036" points="2403,940.0308,2407,950.0308,2411,940.0308,2407,944.0308" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="713" x2="713" y1="642.4839" y2="761.7729"/><polygon fill="#A80036" points="709,751.7729,713,761.7729,717,751.7729,713,755.7729" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1448" x2="1448" y1="642.4839" y2="787.7729"/><polygon fill="#A80036" points="1444,777.7729,1448,787.7729,1452,777.7729,1448,781.7729" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2407" x2="2407" y1="642.4839" y2="662.4839"/><polygon fill="#A80036" points="2403,652.4839,2407,662.4839,2411,652.4839,2407,656.4839" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="713" x2="713" y1="847.7417" y2="950.0308"/><polygon fill="#A80036" points="709,940.0308,713,950.0308,717,940.0308,713,944.0308" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1448" x2="1448" y1="821.7417" y2="950.0308"/><polygon fill="#A80036" points="1444,940.0308,1448,950.0308,1452,940.0308,1448,944.0308" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1448.5" x2="1448.5" y1="956.0308" y2="976.0308"/><polygon fill="#A80036" points="1444.5,966.0308,1448.5,976.0308,1452.5,966.0308,1448.5,970.0308" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1448.5" x2="1448.5" y1="1009.9995" y2="1029.9995"/><polygon fill="#A80036" points="1444.5,1019.9995,1448.5,1029.9995,1452.5,1019.9995,1448.5,1023.9995" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1448.5" x2="1448.5" y1="1063.9683" y2="1083.9683"/><polygon fill="#A80036" points="1444.5,1073.9683,1448.5,1083.9683,1452.5,1073.9683,1448.5,1077.9683" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="701" x2="97.5" y1="614.4839" y2="614.4839"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="97.5" x2="97.5" y1="614.4839" y2="636.4839"/><polygon fill="#A80036" points="93.5,626.4839,97.5,636.4839,101.5,626.4839,97.5,630.4839" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="831" x2="1448.5" y1="614.4839" y2="614.4839"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1448.5" x2="1448.5" y1="614.4839" y2="636.4839"/><polygon fill="#A80036" points="1444.5,626.4839,1448.5,636.4839,1452.5,626.4839,1448.5,630.4839" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="97.5" x2="97.5" y1="739.4214" y2="1135.937"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="97.5" x2="754" y1="1135.937" y2="1135.937"/><polygon fill="#A80036" points="744,1131.937,754,1135.937,744,1139.937,748,1135.937" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1448.5" x2="1448.5" y1="1117.937" y2="1135.937"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1448.5" x2="778" y1="1135.937" y2="1135.937"/><polygon fill="#A80036" points="788,1131.937,778,1135.937,788,1139.937,784,1135.937" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="766" x2="766" y1="1147.937" y2="1167.937"/><polygon fill="#A80036" points="762,1157.937,766,1167.937,770,1157.937,766,1161.937" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[9fb4690fe63f7cbdf2f1922d00b6df8b]
|
|
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 | 2 |
@startuml |
3 | 3 |
|
4 | 4 |
title **µRtWare**\nurtPublisherPublish()\n |
5 | 5 |
|
6 | 6 |
|
7 |
|
|
8 |
|
|
9 |
|
|
10 |
|
|
11 |
|
|
12 |
|
|
13 |
|
|
14 |
|
|
15 |
|
|
16 |
|
|
17 |
start |
|
18 | 7 |
note |
19 |
- - ""**publisher** : urt_publisher_t*"" - -
|
|
8 |
- - **publisher** : urt_publisher_t* - -
|
|
20 | 9 |
Pointer to the publisher to use. |
21 | 10 |
Must not be ""NULL"". |
22 |
- - ""**payload** : void*"" - -
|
|
11 |
- - **payload** : void* - -
|
|
23 | 12 |
Pointer to the data to be published. |
24 | 13 |
May be ""NULL"" for messages without payload. |
25 |
- - ""**n** : size_t"" - -
|
|
14 |
- - **n** : size_t - -
|
|
26 | 15 |
Size of the payload in bytes. |
27 |
- - ""**t** : urt_osTime_t"" - -
|
|
16 |
- - **t** : urt_osTime_t - -
|
|
28 | 17 |
Timestamp to be set for the message. |
29 |
- - ""**timeout** : urt_delay_t"" - -
|
|
18 |
- - **timeout** : urt_delay_t - -
|
|
30 | 19 |
Timeout delay in case the message cannot be published. |
31 |
end note |
|
20 |
==== |
|
21 |
- - **return** : urt_status_t - - |
|
22 |
Returns ""URT_STATUS_OK"" on success. |
|
23 |
Returns ""URT_STATUS_ERROR"" on timeout. |
|
24 |
endnote |
|
32 | 25 |
|
33 | 26 |
|
27 |
start |
|
34 | 28 |
:lock topic; |
35 |
:access next message; |
|
36 |
while (HRT consumers left for the message\nor the message timestamp was modified\nand a timeout occurred?) is (yes) |
|
37 |
if (Message timestamp was modified?) the (yes) |
|
38 |
:iterate to next message; |
|
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 |
|
39 | 38 |
else (no) |
40 |
:wait for topic's condition variable (using topic's mutex) to be signaled or timeout; |
|
39 |
if (Message timestamp was modified?) then (yes) |
|
40 |
:access topic's next message; |
|
41 |
else (no) |
|
42 |
endif |
|
41 | 43 |
endif |
42 | 44 |
endwhile (no) |
43 |
if (Timeout occurred?) then (yes) |
|
44 |
:unlock topic; |
|
45 |
:return ""URT_STATUS_ERROR""; |
|
46 |
else (no) |
|
45 |
fork |
|
47 | 46 |
fork |
48 |
fork |
|
49 |
:iterate topic pointer to this message; |
|
50 |
fork again |
|
51 |
:copy payload to message; |
|
52 |
fork again |
|
53 |
:set origin time of message; |
|
54 |
fork again |
|
55 |
:set number of HRT consumers (from topic); |
|
56 |
endfork |
|
47 |
:iterate topic pointer to this message; |
|
57 | 48 |
fork again |
58 |
:set QoS rate timer (@topic) wrt. most critical HRT subscriber;
|
|
49 |
:copy payload to message;
|
|
59 | 50 |
fork again |
60 |
while (HRT subscribers left?) is (yes) |
|
61 |
if (QoS delay timer (@subscriber) is not armed?) then (yes) |
|
62 |
:set QoS delay timer (@subscriber) wrt. origin time of the message; |
|
63 |
note: No lock required since this timer is only accessed when the topic is locked. |
|
64 |
else (no) |
|
65 |
endif |
|
66 |
:iterate to next HRT subscriber; |
|
67 |
endwhile (no) |
|
51 |
:set origin time of message; |
|
52 |
fork again |
|
53 |
:set number of HRT consumers (from topic); |
|
68 | 54 |
endfork |
69 |
:fire event; |
|
70 |
note: Msut be within topic lock because of HRT counter. |
|
71 |
:unlock topic; |
|
72 |
:return ""URT_STATUS_OK""; |
|
73 |
endif |
|
74 |
|
|
75 |
|
|
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; |
|
76 | 70 |
stop |
77 | 71 |
note |
78 |
- - **return** ""urt_status_t"" - - |
|
79 |
Returns ""URT_STATUS_ERROR"" on timeout. |
|
80 |
end note |
|
72 |
Returns ""URT_STATUS_OK"". |
|
73 |
endnote |
|
81 | 74 |
|
82 | 75 |
|
83 | 76 |
@enduml |
doc/activitydiagrams/publisher/urtPublisherPublish.uml | ||
---|---|---|
25 | 25 |
|
26 | 26 |
title **µRtWare**\nurtPublisherPublish()\n |
27 | 27 |
|
28 |
!include ../../functions.iuml
|
|
28 |
/'### PARAMETERS & RETURN ####################################################'/
|
|
29 | 29 |
|
30 |
/'### PARAMETERS & START #####################################################'/ |
|
31 |
|
|
32 |
start |
|
33 | 30 |
note |
34 |
-- ""**publisher** : urt_publisher_t*"" --
|
|
31 |
-- **publisher** : urt_publisher_t* --
|
|
35 | 32 |
Pointer to the publisher to use. |
36 | 33 |
Must not be ""NULL"". |
37 |
-- ""**payload** : void*"" --
|
|
34 |
-- **payload** : void* --
|
|
38 | 35 |
Pointer to the data to be published. |
39 | 36 |
May be ""NULL"" for messages without payload. |
40 |
-- ""**n** : size_t"" --
|
|
37 |
-- **n** : size_t --
|
|
41 | 38 |
Size of the payload in bytes. |
42 |
-- ""**t** : urt_osTime_t"" --
|
|
39 |
-- **t** : urt_osTime_t --
|
|
43 | 40 |
Timestamp to be set for the message. |
44 |
-- ""**timeout** : urt_delay_t"" --
|
|
41 |
-- **timeout** : urt_delay_t --
|
|
45 | 42 |
Timeout delay in case the message cannot be published. |
46 |
end note |
|
43 |
==== |
|
44 |
-- **return** : urt_status_t -- |
|
45 |
Returns ""URT_STATUS_OK"" on success. |
|
46 |
Returns ""URT_STATUS_ERROR"" on timeout. |
|
47 |
endnote |
|
47 | 48 |
|
48 | 49 |
/'### PROCEDURE ##############################################################'/ |
49 | 50 |
|
51 |
start |
|
50 | 52 |
:lock topic; |
51 |
:access next message; |
|
52 |
while (HRT consumers left for the message\nor the message timestamp was modified\nand a timeout occurred?) is (yes) |
|
53 |
if (Message timestamp was modified?) the (yes) |
|
54 |
:iterate to next message; |
|
53 |
:access topic's next message; |
|
54 |
while (HRT consumers left for the message?) is (yes) |
|
55 |
:wait for topic's condition variable (using topic's mutex) to be signaled or timeout; |
|
56 |
if (Timeout occurred?) then (yes) |
|
57 |
:unlock topic; |
|
58 |
stop |
|
59 |
note |
|
60 |
Returns ""URT_STATUS_ERROR"". |
|
61 |
endnote |
|
55 | 62 |
else (no) |
56 |
:wait for topic's condition variable (using topic's mutex) to be signaled or timeout; |
|
63 |
if (Message timestamp was modified?) then (yes) |
|
64 |
:access topic's next message; |
|
65 |
else (no) |
|
66 |
endif |
|
57 | 67 |
endif |
58 | 68 |
endwhile (no) |
59 |
if (Timeout occurred?) then (yes) |
|
60 |
:unlock topic; |
|
61 |
:return ""URT_STATUS_ERROR""; |
|
62 |
else (no) |
|
69 |
fork |
|
63 | 70 |
fork |
64 |
fork |
|
65 |
:iterate topic pointer to this message; |
|
66 |
fork again |
|
67 |
:copy payload to message; |
|
68 |
fork again |
|
69 |
:set origin time of message; |
|
70 |
fork again |
|
71 |
:set number of HRT consumers (from topic); |
|
72 |
endfork |
|
71 |
:iterate topic pointer to this message; |
|
73 | 72 |
fork again |
74 |
:set QoS rate timer (@topic) wrt. most critical HRT subscriber;
|
|
73 |
:copy payload to message;
|
|
75 | 74 |
fork again |
76 |
while (HRT subscribers left?) is (yes) |
|
77 |
if (QoS delay timer (@subscriber) is not armed?) then (yes) |
|
78 |
:set QoS delay timer (@subscriber) wrt. origin time of the message; |
|
79 |
note: No lock required since this timer is only accessed when the topic is locked. |
|
80 |
else (no) |
|
81 |
endif |
|
82 |
:iterate to next HRT subscriber; |
|
83 |
endwhile (no) |
|
75 |
:set origin time of message; |
|
76 |
fork again |
|
77 |
:set number of HRT consumers (from topic); |
|
84 | 78 |
endfork |
85 |
:fire event; |
|
86 |
note: Msut be within topic lock because of HRT counter. |
|
87 |
:unlock topic; |
|
88 |
:return ""URT_STATUS_OK""; |
|
89 |
endif |
|
90 |
|
|
91 |
/'### STOP & RETURN ##########################################################'/ |
|
92 |
|
|
79 |
fork again |
|
80 |
:set QoS rate timer (@topic) wrt. most critical HRT subscriber; |
|
81 |
fork again |
|
82 |
while (HRT subscribers left?) is (yes) |
|
83 |
if (QoS delay timer (@subscriber) is not armed?) then (yes) |
|
84 |
:set QoS delay timer (@subscriber) wrt. origin time of the message; |
|
85 |
note: No lock required since this timer is only accessed when the topic is locked. |
|
86 |
else (no) |
|
87 |
endif |
|
88 |
:iterate to next HRT subscriber; |
|
89 |
endwhile (no) |
|
90 |
endfork |
|
91 |
:fire event; |
|
92 |
note: Msut be within topic lock because of HRT counter. |
|
93 |
:unlock topic; |
|
93 | 94 |
stop |
94 | 95 |
note |
95 |
-- **return** ""urt_status_t"" -- |
|
96 |
Returns ""URT_STATUS_ERROR"" on timeout. |
|
97 |
end note |
|
96 |
Returns ""URT_STATUS_OK"". |
|
97 |
endnote |
|
98 | 98 |
|
99 | 99 |
/'### OUTRO ##################################################################'/ |
100 | 100 |
|
doc/activitydiagrams/service/urtServiceCall.svg | ||
---|---|---|
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="454px" preserveAspectRatio="none" style="width:546px;height:454px;" version="1.1" viewBox="0 0 546 454" width="546px" zoomAndPan="magnify"><defs><filter height="300%" id="f12gw5c9e3tsgb" 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="227.5" y="26.708">µRtWare</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="139" x="202.5" y="47.6611">urtServiceCall()</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="0" x="275" y="68.6143"/><path d="M100,72.8594 L100,304.7188 L534,304.7188 L534,82.8594 L524,72.8594 L100,72.8594 " fill="#FBFB77" filter="url(#f12gw5c9e3tsgb)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M524,72.8594 L524,82.8594 L534,82.8594 L524,72.8594 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="100" x2="236.5" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="240.5" y="89.4263"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="52" x="240.5" y="89.4263">service</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="97" x="296.5" y="89.4263">: urt_service_t*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="397.5" x2="534" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="118" x="106" y="105.0591">The service to call.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="76" x="106" y="120.1919">Must not be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="186" y="120.1919">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="218" y="120.1919">.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="100" x2="278" y1="130.8242" y2="130.8242"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="282" y="134.8247"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="25" x="282" y="134.8247">arg</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="41" x="311" y="134.8247">: void*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="356" x2="534" y1="130.8242" y2="130.8242"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="244" x="106" y="150.4575">Optional argument for the service call.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="46" x="106" y="165.5903">May be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="156" y="165.5903">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="233" x="192" y="165.5903">if the service expects no arguments.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="100" x2="280" y1="176.2227" y2="176.2227"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="284" y="180.2231"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="21" x="284" y="180.2231">ret</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="41" x="309" y="180.2231">: void*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="354" x2="534" y1="176.2227" y2="176.2227"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="222" x="106" y="195.856">Pointer to an optional return value.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="46" x="106" y="210.9888">May be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="156" y="210.9888">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="188" y="210.9888">.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="100" x2="243" y1="221.6211" y2="221.6211"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="247" y="225.6216"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="57" x="247" y="225.6216">timeout</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="79" x="308" y="225.6216">: urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="391" x2="534" y1="221.6211" y2="221.6211"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="361" x="106" y="241.2544">Timeout delay to be propagated to the callback function.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="413" x="106" y="256.3872">Whether timeout is considered depends on the callback function.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="100" x2="534" y1="264.4531" y2="264.4531"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="100" x2="534" y1="266.4531" y2="266.4531"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="100" x2="246" y1="277.0195" y2="277.0195"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="250" y="281.02"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="45" x="250" y="281.02">return</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="85" x="299" y="281.02">: urt_status_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="388" x2="534" y1="277.0195" y2="277.0195"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="322" x="106" y="296.6528">Returns the exact output status of the service call.</text><ellipse cx="317" cy="334.7188" fill="#000000" filter="url(#f12gw5c9e3tsgb)" rx="10" ry="10" style="stroke: none; stroke-width: 1.0;"/><rect fill="#FEFECE" filter="url(#f12gw5c9e3tsgb)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="180" x="227" y="364.7188"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="160" x="237" y="385.8574">execute callback function</text><path d="M10,417.1211 L10,442.2539 A0,0 0 0 0 10,442.2539 L286,442.2539 A0,0 0 0 0 286,442.2539 L286,435.1211 L306,429.6875 L286,427.1211 L286,427.1211 L276,417.1211 L10,417.1211 A0,0 0 0 0 10,417.1211 " fill="#FBFB77" filter="url(#f12gw5c9e3tsgb)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M276,417.1211 L276,427.1211 L286,427.1211 L276,417.1211 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="255" x="16" y="434.188">Returns the return value of the callback.</text><ellipse cx="317" cy="429.6875" fill="#FFFFFF" filter="url(#f12gw5c9e3tsgb)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="317" cy="429.6875" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="317" x2="317" y1="304.7188" y2="324.7188"/><polygon fill="#A80036" points="313,314.7188,317,324.7188,321,314.7188,317,318.7188" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="317" x2="317" y1="344.7188" y2="364.7188"/><polygon fill="#A80036" points="313,354.7188,317,364.7188,321,354.7188,317,358.7188" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="317" x2="317" y1="398.6875" y2="418.6875"/><polygon fill="#A80036" points="313,408.6875,317,418.6875,321,408.6875,317,412.6875" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[561aede012ef94c363a6341bbfb3ac5f] |
|
2 |
@startuml |
|
3 |
|
|
4 |
title **µRtWare**\nurtServiceCall()\n |
|
5 |
|
|
6 |
|
|
7 |
note |
|
8 |
- - **service** : urt_service_t* - - |
|
9 |
The service to call. |
|
10 |
Must not be ""NULL"". |
|
11 |
- - **arg** : void* - - |
|
12 |
Optional argument for the service call. |
|
13 |
May be ""NULL"" if the service expects no arguments. |
|
14 |
- - **ret** : void* - - |
|
15 |
Pointer to an optional return value. |
|
16 |
May be ""NULL"". |
|
17 |
- - **timeout** : urt_delay_t - - |
|
18 |
Timeout delay to be propagated to the callback function. |
|
19 |
Whether timeout is considered depends on the callback function. |
|
20 |
==== |
|
21 |
- - **return** : urt_status_t - - |
|
22 |
Returns the exact output status of the service call. |
|
23 |
endnote |
|
24 |
|
|
25 |
|
|
26 |
start |
|
27 |
:execute callback function; |
|
28 |
stop |
|
29 |
note |
|
30 |
Returns the return value of the callback. |
|
31 |
endnote |
|
32 |
|
|
33 |
|
|
34 |
@enduml |
|
35 |
|
|
36 |
PlantUML version 1.2020.00(Sat Jan 11 13:30:53 CET 2020) |
|
37 |
(GPL source distribution) |
|
38 |
Java Runtime: OpenJDK Runtime Environment |
|
39 |
JVM: OpenJDK 64-Bit Server VM |
|
40 |
Java Version: 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 |
|
41 |
Operating System: Linux |
|
42 |
Default Encoding: UTF-8 |
|
43 |
Language: en |
|
44 |
Country: US |
|
45 |
--></g></svg> |
doc/activitydiagrams/service/urtServiceCall.uml | ||
---|---|---|
1 |
/' |
|
2 |
µRtWare is a lightweight publish/subscribe middleware for real-time |
|
3 |
applications. It was developed as part of the software habitat for the |
|
4 |
Autonomous Mini Robot [1] (AMiRo) but can be used for other purposes as well. |
|
5 |
|
|
6 |
Copyright (C) 2018..2020 Thomas Schöpping et al. |
|
7 |
|
|
8 |
This program is free software: you can redistribute it and/or modify |
|
9 |
it under the terms of the GNU General Public License as published by |
|
10 |
the Free Software Foundation, either version 3 of the License, or |
|
11 |
(at your option) any later version. |
|
12 |
|
|
13 |
This program is distributed in the hope that it will be useful, |
|
14 |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
15 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
16 |
GNU General Public License for more details. |
|
17 |
|
|
18 |
You should have received a copy of the GNU General Public License |
|
19 |
along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
20 |
'/ |
|
21 |
|
|
22 |
/'### INTRO ##################################################################'/ |
|
23 |
|
|
24 |
@startuml |
|
25 |
|
|
26 |
title **µRtWare**\nurtServiceCall()\n |
|
27 |
|
|
28 |
/'### PARAMETERS & RETURN ####################################################'/ |
|
29 |
|
|
30 |
note |
|
31 |
-- **service** : urt_service_t* -- |
|
32 |
The service to call. |
|
33 |
Must not be ""NULL"". |
|
34 |
-- **arg** : void* -- |
|
35 |
Optional argument for the service call. |
|
36 |
May be ""NULL"" if the service expects no arguments. |
|
37 |
-- **ret** : void* -- |
|
38 |
Pointer to an optional return value. |
|
39 |
May be ""NULL"". |
|
40 |
-- **timeout** : urt_delay_t -- |
|
41 |
Timeout delay to be propagated to the callback function. |
|
42 |
Whether timeout is considered depends on the callback function. |
|
43 |
==== |
|
44 |
-- **return** : urt_status_t -- |
|
45 |
Returns the exact output status of the service call. |
|
46 |
endnote |
|
47 |
|
|
48 |
/'### PROCEDURE ##############################################################'/ |
|
49 |
|
|
50 |
start |
|
51 |
:execute callback function; |
|
52 |
stop |
|
53 |
note |
|
54 |
Returns the return value of the callback. |
|
55 |
endnote |
|
56 |
|
|
57 |
/'### OUTRO ##################################################################'/ |
|
58 |
|
|
59 |
@enduml |
doc/activitydiagrams/service/urtServiceInit.svg | ||
---|---|---|
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="977px" preserveAspectRatio="none" style="width:1146px;height:977px;" version="1.1" viewBox="0 0 1146 977" width="1146px" zoomAndPan="magnify"><defs><filter height="300%" id="f1snfj7r7itc1b" 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="527.5" y="26.708">µRtWare</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="135" x="504.5" y="47.6611">urtServiceInit()</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="0" x="575" y="68.6143"/><path d="M355,72.8594 L355,259.3203 L920,259.3203 L920,82.8594 L910,72.8594 L355,72.8594 " fill="#FBFB77" filter="url(#f1snfj7r7itc1b)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M910,72.8594 L910,82.8594 L920,82.8594 L910,72.8594 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="355" x2="557" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="561" y="89.4263"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="52" x="561" y="89.4263">service</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="97" x="617" y="89.4263">: urt_service_t*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="718" x2="920" y1="85.4258" y2="85.4258"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="148" x="361" y="105.0591">The service to initialize.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="76" x="361" y="120.1919">Must not be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="441" y="120.1919">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="473" y="120.1919">.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="355" x2="574" y1="130.8242" y2="130.8242"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="578" y="134.8247"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="14" x="578" y="134.8247">id</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="101" x="596" y="134.8247">: urt_serviceid_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="701" x2="920" y1="130.8242" y2="130.8242"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="258" x="361" y="150.4575">Unique, numeric identifier of the service.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="355" x2="539" y1="161.0898" y2="161.0898"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="543" y="165.0903"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="61" x="543" y="165.0903">callback</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="124" x="608" y="165.0903">: urt_servicefunc_t*</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="736" x2="920" y1="161.0898" y2="161.0898"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="307" x="361" y="180.7231">Callabck function to be executed by this service.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="76" x="361" y="195.856">Must not be</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="441" y="195.856">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="473" y="195.856">.</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="355" x2="920" y1="203.9219" y2="203.9219"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="355" x2="920" y1="205.9219" y2="205.9219"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="355" x2="566.5" y1="216.4883" y2="216.4883"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="570.5" y="220.4888"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="45" x="570.5" y="220.4888">return</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="85" x="619.5" y="220.4888">: urt_status_t</text><line style="stroke: #A80036; stroke-width: 1.0;" x1="708.5" x2="920" y1="216.4883" y2="216.4883"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="361" y="236.1216">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="414" y="236.1216">URT_STATUS_OK</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="75" x="522" y="236.1216">on success.</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="361" y="251.2544">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="128" x="414" y="251.2544">URT_STATUS_ERROR</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="359" x="546" y="251.2544">if another service with the same identifier already exists.</text><ellipse cx="637.5" cy="289.3203" fill="#000000" filter="url(#f1snfj7r7itc1b)" rx="10" ry="10" style="stroke: none; stroke-width: 1.0;"/><path d="M10,309.3203 L10,485.7813 A0,0 0 0 0 10,485.7813 L552,485.7813 A0,0 0 0 0 552,485.7813 L552,401.5508 L572,397.5508 L552,393.5508 L552,319.3203 L542,309.3203 L10,309.3203 A0,0 0 0 0 10,309.3203 " fill="#FBFB77" filter="url(#f1snfj7r7itc1b)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M542,309.3203 L542,319.3203 L552,319.3203 L542,309.3203 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="32" x="16" y="326.3872">next</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="11" x="52" y="326.3872">←</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="67" y="326.3872">NULL</text><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="14" x="16" y="341.52">id</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="26" x="34" y="341.52">← id</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="81" x="16" y="356.6528">urtMutexInit(</text><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="30" x="97" y="356.6528">lock</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="5" x="127" y="356.6528">)</text><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="61" x="16" y="371.7856">callback</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="66" x="81" y="371.7856">← callback</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="10" x2="20.5" y1="382.418" y2="382.418"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="513" x="24.5" y="386.4185">URT_CFG_RPC_QOS_JITTERCHECKS == true || URT_CFG_RPC_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="541.5" x2="552" y1="382.418" y2="382.418"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="90" x="16" y="402.0513">minDuration</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="52" x="110" y="402.0513">← 0xF..F</text><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="94" x="16" y="417.1841">maxDuration</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="23" x="114" y="417.1841">← 0</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="10" x2="167.5" y1="427.8164" y2="427.8164"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="219" x="171.5" y="431.8169">URT_CFG_RPC_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="394.5" x2="552" y1="427.8164" y2="427.8164"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="102" x="16" y="447.4497">sumDurations</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="23" x="122" y="447.4497">← 0</text><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="67" x="16" y="462.5825">numCalls</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="23" x="87" y="462.5825">← 0</text><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="99" x="16" y="477.7153">numTimeouts</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="23" x="119" y="477.7153">← 0</text><rect fill="#FEFECE" filter="url(#f1snfj7r7itc1b)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="131" x="572" y="380.5664"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="111" x="582" y="401.7051">initialize members</text><rect fill="#FEFECE" filter="url(#f1snfj7r7itc1b)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="77" x="599" y="505.7813"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="57" x="609" y="526.9199">lock core</text><rect fill="#FEFECE" filter="url(#f1snfj7r7itc1b)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="140" x="567.5" y="559.75"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="120" x="577.5" y="580.8887">access first service</text><rect fill="#FEFECE" filter="url(#f1snfj7r7itc1b)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="168" x="553.5" y="671.0386"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="148" x="563.5" y="692.1772">proceed to next service</text><polygon fill="#FEFECE" filter="url(#f1snfj7r7itc1b)" points="569.5,613.7188,705.5,613.7188,717.5,626.5234,705.5,639.3281,569.5,639.3281,557.5,626.5234,569.5,613.7188" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="641.5" y="649.5386">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="78" x="569.5" y="623.9292">Service is not</text><text fill="#000000" font-family="monospace" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="28" x="651.5" y="623.9292">NULL</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="136" x="569.5" y="636.7339">and service ID is lower?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="543.5" y="623.9292">no</text><polygon fill="#FEFECE" filter="url(#f1snfj7r7itc1b)" points="283,747.0073,423,747.0073,435,759.0073,423,771.0073,283,771.0073,271,759.0073,283,747.0073" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="357" y="781.2178">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="102" x="283" y="762.8154">Current service is</text><text fill="#000000" font-family="monospace" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="28" x="389" y="762.8154">NULL</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="6" x="417" y="762.8154">?</text><rect fill="#FEFECE" filter="url(#f1snfj7r7itc1b)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="246" x="230" y="802.7178"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="226" x="240" y="823.8564">append self to core's list of services</text><rect fill="#FEFECE" filter="url(#f1snfj7r7itc1b)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="93" x="306.5" y="871.6865"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="73" x="316.5" y="892.8252">unlock core</text><path d="M140,940.6553 L140,965.7881 A0,0 0 0 0 140,965.7881 L322,965.7881 A0,0 0 0 0 322,965.7881 L322,958.6553 L342,953.2217 L322,950.6553 L322,950.6553 L312,940.6553 L140,940.6553 A0,0 0 0 0 140,940.6553 " fill="#FBFB77" filter="url(#f1snfj7r7itc1b)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M312,940.6553 L312,950.6553 L322,950.6553 L312,940.6553 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="146" y="957.7222">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="199" y="957.7222">URT_STATUS_OK</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="303" y="957.7222">:</text><ellipse cx="353" cy="953.2217" fill="#FFFFFF" filter="url(#f1snfj7r7itc1b)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="353" cy="953.2217" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><polygon fill="#FEFECE" filter="url(#f1snfj7r7itc1b)" points="624.5,747.0073,793.5,747.0073,805.5,759.0073,793.5,771.0073,624.5,771.0073,612.5,759.0073,624.5,747.0073" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="20" x="713" y="781.2178">yes</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="169" x="624.5" y="762.8154">Current service ID is greater?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="14" x="805.5" y="756.4131">no</text><rect fill="#FEFECE" filter="url(#f1snfj7r7itc1b)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="245" x="586.5" y="802.7178"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="225" x="596.5" y="823.8564">insert self in front of current service</text><rect fill="#FEFECE" filter="url(#f1snfj7r7itc1b)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="93" x="662.5" y="871.6865"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="73" x="672.5" y="892.8252">unlock core</text><path d="M496,940.6553 L496,965.7881 A0,0 0 0 0 496,965.7881 L678,965.7881 A0,0 0 0 0 678,965.7881 L678,958.6553 L698,953.2217 L678,950.6553 L678,950.6553 L668,940.6553 L496,940.6553 A0,0 0 0 0 496,940.6553 " fill="#FBFB77" filter="url(#f1snfj7r7itc1b)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M668,940.6553 L668,950.6553 L678,950.6553 L668,940.6553 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="502" y="957.7222">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="555" y="957.7222">URT_STATUS_OK</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="659" y="957.7222">:</text><ellipse cx="709" cy="953.2217" fill="#FFFFFF" filter="url(#f1snfj7r7itc1b)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="709" cy="953.2217" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><rect fill="#FEFECE" filter="url(#f1snfj7r7itc1b)" height="33.9688" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="93" x="1042" y="833.7998"/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="73" x="1052" y="854.9385">unlock core</text><path d="M851.5,902.7686 L851.5,927.9014 A0,0 0 0 0 851.5,927.9014 L1057.5,927.9014 A0,0 0 0 0 1057.5,927.9014 L1057.5,920.7686 L1077.5,915.335 L1057.5,912.7686 L1057.5,912.7686 L1047.5,902.7686 L851.5,902.7686 A0,0 0 0 0 851.5,902.7686 " fill="#FBFB77" filter="url(#f1snfj7r7itc1b)" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1047.5,902.7686 L1047.5,912.7686 L1057.5,912.7686 L1047.5,902.7686 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="49" x="857.5" y="919.8354">Returns</text><text fill="#000000" font-family="monospace" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="128" x="910.5" y="919.8354">URT_STATUS_ERROR</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="4" x="1038.5" y="919.8354">:</text><ellipse cx="1088.5" cy="915.335" fill="#FFFFFF" filter="url(#f1snfj7r7itc1b)" rx="11" ry="11" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="1088.5" cy="915.335" fill="#000000" rx="6" ry="6" style="stroke: #7F7F7F; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="637.5" x2="637.5" y1="259.3203" y2="279.3203"/><polygon fill="#A80036" points="633.5,269.3203,637.5,279.3203,641.5,269.3203,637.5,273.3203" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="637.5" x2="637.5" y1="299.3203" y2="380.5664"/><polygon fill="#A80036" points="633.5,370.5664,637.5,380.5664,641.5,370.5664,637.5,374.5664" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="637.5" x2="637.5" y1="414.5352" y2="505.7813"/><polygon fill="#A80036" points="633.5,495.7813,637.5,505.7813,641.5,495.7813,637.5,499.7813" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="637.5" x2="637.5" y1="539.75" y2="559.75"/><polygon fill="#A80036" points="633.5,549.75,637.5,559.75,641.5,549.75,637.5,553.75" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="637.5" x2="637.5" y1="639.3281" y2="671.0386"/><polygon fill="#A80036" points="633.5,661.0386,637.5,671.0386,641.5,661.0386,637.5,665.0386" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="637.5" x2="637.5" y1="705.0073" y2="715.0073"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="637.5" x2="733.5" y1="715.0073" y2="715.0073"/><polygon fill="#A80036" points="729.5,679.2183,733.5,669.2183,737.5,679.2183,733.5,675.2183" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="733.5" x2="733.5" y1="626.5234" y2="715.0073"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="733.5" x2="717.5" y1="626.5234" y2="626.5234"/><polygon fill="#A80036" points="727.5,622.5234,717.5,626.5234,727.5,630.5234,723.5,626.5234" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="557.5" x2="541.5" y1="626.5234" y2="626.5234"/><polygon fill="#A80036" points="537.5,665.2183,541.5,675.2183,545.5,665.2183,541.5,669.2183" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="541.5" x2="541.5" y1="626.5234" y2="727.0073"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="541.5" x2="637.5" y1="727.0073" y2="727.0073"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="637.5" x2="637.5" y1="727.0073" y2="732.0073"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="637.5" x2="637.5" y1="593.7188" y2="613.7188"/><polygon fill="#A80036" points="633.5,603.7188,637.5,613.7188,641.5,603.7188,637.5,607.7188" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="353" x2="353" y1="836.6865" y2="871.6865"/><polygon fill="#A80036" points="349,861.6865,353,871.6865,357,861.6865,353,865.6865" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="353" x2="353" y1="905.6553" y2="942.2217"/><polygon fill="#A80036" points="349,932.2217,353,942.2217,357,932.2217,353,936.2217" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="709" x2="709" y1="836.6865" y2="871.6865"/><polygon fill="#A80036" points="705,861.6865,709,871.6865,713,861.6865,709,865.6865" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="709" x2="709" y1="905.6553" y2="942.2217"/><polygon fill="#A80036" points="705,932.2217,709,942.2217,713,932.2217,709,936.2217" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1088.5" x2="1088.5" y1="867.7686" y2="904.335"/><polygon fill="#A80036" points="1084.5,894.335,1088.5,904.335,1092.5,894.335,1088.5,898.335" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="353" x2="353" y1="771.0073" y2="802.7178"/><polygon fill="#A80036" points="349,792.7178,353,802.7178,357,792.7178,353,796.7178" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="709" x2="709" y1="771.0073" y2="802.7178"/><polygon fill="#A80036" points="705,792.7178,709,802.7178,713,792.7178,709,796.7178" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="435" x2="612.5" y1="759.0073" y2="759.0073"/><polygon fill="#A80036" points="602.5,755.0073,612.5,759.0073,602.5,763.0073,606.5,759.0073" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="637.5" x2="353" y1="732.0073" y2="732.0073"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="353" x2="353" y1="732.0073" y2="747.0073"/><polygon fill="#A80036" points="349,737.0073,353,747.0073,357,737.0073,353,741.0073" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="805.5" x2="1088.5" y1="759.0073" y2="759.0073"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1088.5" x2="1088.5" y1="759.0073" y2="833.7998"/><polygon fill="#A80036" points="1084.5,823.7998,1088.5,833.7998,1092.5,823.7998,1088.5,827.7998" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[e97c440ea6d6ffb95ba2bae466cee68a] |
|
2 |
@startuml |
|
3 |
|
|
4 |
title **µRtWare**\nurtServiceInit()\n |
|
5 |
|
|
6 |
|
|
7 |
note |
|
8 |
- - **service** : urt_service_t* - - |
|
9 |
The service to initialize. |
|
10 |
Must not be ""NULL"". |
|
11 |
- - **id** : urt_serviceid_t - - |
|
12 |
Unique, numeric identifier of the service. |
|
13 |
- - **callback** : urt_servicefunc_t* - - |
|
14 |
Callabck function to be executed by this service. |
|
15 |
Must not be ""NULL"". |
|
16 |
==== |
|
17 |
- - **return** : urt_status_t - - |
|
18 |
Returns ""URT_STATUS_OK"" on success. |
|
19 |
Returns ""URT_STATUS_ERROR"" if another service with the same identifier already exists. |
|
20 |
endnote |
|
21 |
|
|
22 |
|
|
23 |
start |
|
24 |
:initialize members; |
|
25 |
note |
|
26 |
**next** ← ""NULL"" |
|
27 |
**id** ← id |
|
28 |
urtMutexInit(**lock**) |
|
29 |
**callback** ← callback |
|
30 |
.. URT_CFG_RPC_QOS_JITTERCHECKS == true || URT_CFG_RPC_PROFILING == true .. |
|
31 |
**minDuration** ← 0xF..F |
|
32 |
**maxDuration** ← 0 |
|
33 |
.. URT_CFG_RPC_PROFILING == true .. |
|
34 |
**sumDurations** ← 0 |
|
35 |
**numCalls** ← 0 |
|
36 |
**numTimeouts** ← 0 |
|
37 |
endnote |
|
38 |
:lock core; |
|
39 |
:access first service; |
|
40 |
while (Service is not ""NULL""\nand service ID is lower?) is (yes) |
|
41 |
:proceed to next service; |
|
42 |
endwhile (no) |
|
43 |
if (Current service is ""NULL""?) then (yes) |
|
44 |
:append self to core's list of services; |
|
45 |
:unlock core; |
|
46 |
stop |
|
47 |
note |
|
48 |
Returns ""URT_STATUS_OK"": |
|
49 |
endnote |
|
50 |
elseif (Current service ID is greater?) then (yes) |
|
51 |
:insert self in front of current service; |
|
52 |
:unlock core; |
|
53 |
stop |
|
54 |
note |
|
55 |
Returns ""URT_STATUS_OK"": |
|
56 |
endnote |
|
57 |
else (no) |
|
58 |
:unlock core; |
|
59 |
stop |
|
60 |
note |
|
61 |
Returns ""URT_STATUS_ERROR"": |
|
62 |
endnote |
|
63 |
endif |
|
64 |
|
|
65 |
|
|
66 |
@enduml |
|
67 |
|
|
68 |
PlantUML version 1.2020.00(Sat Jan 11 13:30:53 CET 2020) |
|
69 |
(GPL source distribution) |
|
70 |
Java Runtime: OpenJDK Runtime Environment |
|
71 |
JVM: OpenJDK 64-Bit Server VM |
|
72 |
Java Version: 11.0.6+10-post-Ubuntu-1ubuntu118.04.1 |
|
73 |
Operating System: Linux |
|
74 |
Default Encoding: UTF-8 |
|
75 |
Language: en |
|
76 |
Country: US |
|
77 |
--></g></svg> |
doc/activitydiagrams/service/urtServiceInit.uml | ||
---|---|---|
1 |
/' |
|
2 |
µRtWare is a lightweight publish/subscribe middleware for real-time |
|
3 |
applications. It was developed as part of the software habitat for the |
|
4 |
Autonomous Mini Robot [1] (AMiRo) but can be used for other purposes as well. |
|
5 |
|
|
6 |
Copyright (C) 2018..2020 Thomas Schöpping et al. |
|
7 |
|
|
8 |
This program is free software: you can redistribute it and/or modify |
|
9 |
it under the terms of the GNU General Public License as published by |
|
10 |
the Free Software Foundation, either version 3 of the License, or |
|
11 |
(at your option) any later version. |
|
12 |
|
|
13 |
This program is distributed in the hope that it will be useful, |
|
14 |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
15 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
16 |
GNU General Public License for more details. |
|
17 |
|
|
18 |
You should have received a copy of the GNU General Public License |
|
19 |
along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
20 |
'/ |
|
21 |
|
|
22 |
/'### INTRO ##################################################################'/ |
|
23 |
|
|
24 |
@startuml |
|
25 |
|
|
26 |
title **µRtWare**\nurtServiceInit()\n |
|
27 |
|
|
28 |
/'### PARAMETERS & RETURN ####################################################'/ |
|
29 |
|
|
30 |
note |
|
31 |
-- **service** : urt_service_t* -- |
|
32 |
The service to initialize. |
|
33 |
Must not be ""NULL"". |
|
34 |
-- **id** : urt_serviceid_t -- |
|
35 |
Unique, numeric identifier of the service. |
|
36 |
-- **callback** : urt_servicefunc_t* -- |
|
37 |
Callabck function to be executed by this service. |
|
38 |
Must not be ""NULL"". |
|
39 |
==== |
|
40 |
-- **return** : urt_status_t -- |
|
41 |
Returns ""URT_STATUS_OK"" on success. |
|
42 |
Returns ""URT_STATUS_ERROR"" if another service with the same identifier already exists. |
|
43 |
endnote |
|
44 |
|
|
45 |
/'### PROCEDURE ##############################################################'/ |
|
46 |
|
|
47 |
start |
|
48 |
:initialize members; |
|
49 |
note |
|
50 |
**next** ← ""NULL"" |
|
51 |
**id** ← id |
|
52 |
urtMutexInit(**lock**) |
|
53 |
**callback** ← callback |
|
54 |
.. URT_CFG_RPC_QOS_JITTERCHECKS == true || URT_CFG_RPC_PROFILING == true .. |
|
55 |
**minDuration** ← 0xF..F |
|
56 |
**maxDuration** ← 0 |
|
57 |
.. URT_CFG_RPC_PROFILING == true .. |
|
58 |
**sumDurations** ← 0 |
|
59 |
**numCalls** ← 0 |
|
60 |
**numTimeouts** ← 0 |
|
61 |
endnote |
|
62 |
:lock core; |
|
63 |
:access first service; |
|
64 |
while (Service is not ""NULL""\nand service ID is lower?) is (yes) |
|
65 |
:proceed to next service; |
|
66 |
endwhile (no) |
|
67 |
if (Current service is ""NULL""?) then (yes) |
|
68 |
:append self to core's list of services; |
|
69 |
:unlock core; |
|
70 |
stop |
|
71 |
note |
|
72 |
Returns ""URT_STATUS_OK"": |
|
73 |
endnote |
|
74 |
elseif (Current service ID is greater?) then (yes) |
|
75 |
:insert self in front of current service; |
|
76 |
:unlock core; |
|
77 |
stop |
|
78 |
note |
|
79 |
Returns ""URT_STATUS_OK"": |
|
80 |
endnote |
|
81 |
else (no) |
|
82 |
:unlock core; |
|
83 |
stop |
|
84 |
note |
|
85 |
Returns ""URT_STATUS_ERROR"": |
|
86 |
endnote |
|
87 |
endif |
|
88 |
|
|
89 |
/'### OUTRO ##################################################################'/ |
|
90 |
|
|
91 |
@enduml |
doc/activitydiagrams/subscriber/fetchmessage.iuml | ||
---|---|---|
1 |
/' |
|
2 |
µRtWare is a lightweight publish/subscribe middleware for real-time |
|
3 |
applications. It was developed as part of the software habitat for the |
|
4 |
Autonomous Mini Robot [1] (AMiRo) but can be used for other purposes as well. |
|
5 |
|
|
6 |
Copyright (C) 2018..2020 Thomas Schöpping et al. |
|
7 |
|
|
8 |
This program is free software: you can redistribute it and/or modify |
|
9 |
it under the terms of the GNU General Public License as published by |
|
10 |
the Free Software Foundation, either version 3 of the License, or |
|
11 |
(at your option) any later version. |
|
12 |
|
|
13 |
This program is distributed in the hope that it will be useful, |
|
14 |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
15 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
16 |
GNU General Public License for more details. |
|
17 |
|
|
18 |
You should have received a copy of the GNU General Public License |
|
19 |
along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
20 |
'/ |
|
21 |
|
|
22 |
partition "fetch message" { |
|
23 |
fork |
|
24 |
:update message pointer; |
|
25 |
fork again |
|
26 |
:copy timestamp of message; |
|
27 |
fork again |
|
28 |
:copy message payload; |
|
29 |
fork again |
|
30 |
if (Optional output argument ""latency"" given?) then (yes) |
|
31 |
:set ""latency"" value (now - message origin time); |
|
32 |
else (no) |
|
33 |
endif |
|
34 |
endfork |
|
35 |
} |
|
36 |
|
doc/activitydiagrams/subscriber/findlatestmessage.iuml | ||
---|---|---|
1 |
/' |
|
2 |
µRtWare is a lightweight publish/subscribe middleware for real-time |
|
3 |
applications. It was developed as part of the software habitat for the |
|
4 |
Autonomous Mini Robot [1] (AMiRo) but can be used for other purposes as well. |
|
5 |
|
|
6 |
Copyright (C) 2018..2020 Thomas Schöpping et al. |
|
7 |
|
|
8 |
This program is free software: you can redistribute it and/or modify |
|
9 |
it under the terms of the GNU General Public License as published by |
|
10 |
the Free Software Foundation, either version 3 of the License, or |
|
11 |
(at your option) any later version. |
|
12 |
|
|
13 |
This program is distributed in the hope that it will be useful, |
|
14 |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
15 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
16 |
GNU General Public License for more details. |
|
17 |
|
|
18 |
You should have received a copy of the GNU General Public License |
|
19 |
along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
20 |
'/ |
|
21 |
|
|
22 |
partition "find latest message" { |
|
23 |
:access last read message; |
|
24 |
while (Timestamp of next message is younger?) is (yes) |
|
25 |
:proceed to next message; |
|
26 |
endwhile (no) |
|
27 |
} |
|
28 |
|
doc/activitydiagrams/subscriber/findoldestvalidmessage.iuml | ||
---|---|---|
1 |
/' |
|
2 |
µRtWare is a lightweight publish/subscribe middleware for real-time |
|
3 |
applications. It was developed as part of the software habitat for the |
|
4 |
Autonomous Mini Robot [1] (AMiRo) but can be used for other purposes as well. |
|
5 |
|
|
6 |
Copyright (C) 2018..2020 Thomas Schöpping et al. |
|
7 |
|
|
8 |
This program is free software: you can redistribute it and/or modify |
|
9 |
it under the terms of the GNU General Public License as published by |
|
10 |
the Free Software Foundation, either version 3 of the License, or |
|
11 |
(at your option) any later version. |
|
12 |
|
|
13 |
This program is distributed in the hope that it will be useful, |
|
14 |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
15 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
16 |
GNU General Public License for more details. |
|
17 |
|
Also available in: Unified diff