Statistics
| Branch: | Revision:

urtware / doc / classdiagrams / urtware.svg @ 017b2ac7

History | View | Annotate | Download (95.596 KB)

1
<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="872px" preserveAspectRatio="none" style="width:7729px;height:872px;" version="1.1" viewBox="0 0 7729 872" width="7729px" zoomAndPan="magnify"><defs><filter height="300%" id="f809dau48hy9h" 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="3822.5" y="16.708">µRtWare</text><!--MD5=[b9de0669a29c7bc934fd916b09c39491]
2
cluster node--><rect fill="#FFFFFF" filter="url(#f809dau48hy9h)" height="446.5" style="stroke: #000000; stroke-width: 1.5;" width="1674" x="5389" y="369.9531"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="40" x="6206" y="384.9482">node</text><!--MD5=[d74e2ef346f73688f9378f6d3d42598c]
3
cluster Publish-Subscribe System--><polygon fill="#FFFFFF" filter="url(#f809dau48hy9h)" points="14,328.9531,24,318.9531,5381,318.9531,5381,850.9531,5371,860.9531,14,860.9531,14,328.9531" style="stroke: #000000; stroke-width: 1.5;"/><line style="stroke: #000000; stroke-width: 1.5;" x1="5371" x2="5380" y1="328.9531" y2="319.9531"/><line style="stroke: #000000; stroke-width: 1.5;" x1="14" x2="5371" y1="328.9531" y2="328.9531"/><line style="stroke: #000000; stroke-width: 1.5;" x1="5371" x2="5371" y1="328.9531" y2="860.9531"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="205" x="2591" y="344.9482">Publish-Subscribe System</text><!--MD5=[16a3bbbe805f94d6e6ce317c08ab945e]
4
cluster subscriber--><rect fill="#FFFFFF" filter="url(#f809dau48hy9h)" height="502" style="stroke: #000000; stroke-width: 1.5;" width="4102" x="1271" y="350.9531"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="85" x="3279.5" y="365.9482">subscriber</text><!--MD5=[810d0f07e53ef611b6d803ef30301147]
5
cluster Remote Procedure Call System--><polygon fill="#FFFFFF" filter="url(#f809dau48hy9h)" points="7071,387.4531,7081,377.4531,7707,377.4531,7707,806.4531,7697,816.4531,7071,816.4531,7071,387.4531" style="stroke: #000000; stroke-width: 1.5;"/><line style="stroke: #000000; stroke-width: 1.5;" x1="7697" x2="7706" y1="387.4531" y2="378.4531"/><line style="stroke: #000000; stroke-width: 1.5;" x1="7071" x2="7697" y1="387.4531" y2="387.4531"/><line style="stroke: #000000; stroke-width: 1.5;" x1="7697" x2="7697" y1="387.4531" y2="816.4531"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="244" x="7263" y="403.4482">Remote Procedure Call System</text><!--MD5=[a7dea26996a1231aa68629b332780450]
6
class urt_nodeSetupCallback_t--><rect fill="#FEFECE" filter="url(#f809dau48hy9h)" height="60.8047" id="urt_nodeSetupCallback_t" style="stroke: #A80036; stroke-width: 1.5;" width="456" x="5950" y="747.4531"/><ellipse cx="6095.75" cy="763.4531" fill="#00CFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M6096.5938,770.2031 L6094.1406,770.2031 L6094.1406,759.9531 L6091,759.9531 L6091,757.8125 L6099.7344,757.8125 L6099.7344,759.9531 L6096.5938,759.9531 L6096.5938,770.2031 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="156" x="6116.25" y="767.6074">urt_nodeSetupCallback_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="5951" x2="6405" y1="779.4531" y2="779.4531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="5951" x2="6405" y1="787.4531" y2="787.4531"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="444" x="5956" y="801.6636">urt_nodeSetupCallback_t (node : urt_node_t*, arg : void*) : urt_osEventMask_t</text><!--MD5=[7f869e17e281b89d59a4c09e0f22c3af]
7
class urt_nodeLoopCallback_t--><rect fill="#FEFECE" filter="url(#f809dau48hy9h)" height="60.8047" id="urt_nodeLoopCallback_t" style="stroke: #A80036; stroke-width: 1.5;" width="614" x="6441" y="747.4531"/><ellipse cx="6669.25" cy="763.4531" fill="#00CFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M6670.0938,770.2031 L6667.6406,770.2031 L6667.6406,759.9531 L6664.5,759.9531 L6664.5,757.8125 L6673.2344,757.8125 L6673.2344,759.9531 L6670.0938,759.9531 L6670.0938,770.2031 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="149" x="6689.75" y="767.6074">urt_nodeLoopCallback_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="6442" x2="7054" y1="779.4531" y2="779.4531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="6442" x2="7054" y1="787.4531" y2="787.4531"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="602" x="6447" y="801.6636">urt_nodeLoopCallback_t (node : urt_node_t*, events : urt_osEventMask_t, arg : void*) : urt_osEventMask_t</text><!--MD5=[843db13320bebc2ca47f25c6a57c2ae5]
8
class urt_nodeShutdownCallback_t--><rect fill="#FEFECE" filter="url(#f809dau48hy9h)" height="60.8047" id="urt_nodeShutdownCallback_t" style="stroke: #A80036; stroke-width: 1.5;" width="518" x="5397" y="747.4531"/><ellipse cx="5561.25" cy="763.4531" fill="#00CFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M5562.0938,770.2031 L5559.6406,770.2031 L5559.6406,759.9531 L5556.5,759.9531 L5556.5,757.8125 L5565.2344,757.8125 L5565.2344,759.9531 L5562.0938,759.9531 L5562.0938,770.2031 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="181" x="5581.75" y="767.6074">urt_nodeShutdownCallback_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="5398" x2="5914" y1="779.4531" y2="779.4531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="5398" x2="5914" y1="787.4531" y2="787.4531"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="506" x="5403" y="801.6636">urt_nodeShutdownCallback_t (node : urt_node_t*, cause : urt_status_t, arg : void*) : void</text><!--MD5=[d2563153d77472384a15c07b815d639f]
9
class urt_node_t--><rect fill="#FEFECE" filter="url(#f809dau48hy9h)" height="231.2656" id="urt_node_t" style="stroke: #A80036; stroke-width: 1.5;" width="1541" x="5407.5" y="396.9531"/><ellipse cx="6140.25" cy="412.9531" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M6139.7344,413.5156 Q6137.875,412.8125 6137.2188,412.0469 Q6136.5781,411.2656 6136.5781,409.9531 Q6136.5781,408.2656 6137.6563,407.2969 Q6138.7344,406.3281 6140.6094,406.3281 Q6141.4688,406.3281 6142.3125,406.5313 Q6143.1719,406.7188 6144.0156,407.1094 L6144.0156,409.5 Q6143.2344,408.9375 6142.4063,408.6563 Q6141.5938,408.3594 6140.7969,408.3594 Q6139.9219,408.3594 6139.4375,408.7188 Q6138.9688,409.0781 6138.9688,409.7344 Q6138.9688,410.25 6139.3125,410.5938 Q6139.6563,410.9219 6140.75,411.3281 L6141.8125,411.7344 Q6143.2969,412.2813 6144,413.1875 Q6144.7188,414.0938 6144.7188,415.4688 Q6144.7188,417.3438 6143.6094,418.2656 Q6142.5,419.1875 6140.25,419.1875 Q6139.3281,419.1875 6138.4063,418.9688 Q6137.4844,418.75 6136.625,418.3281 L6136.625,415.7969 Q6137.5938,416.4844 6138.5156,416.8281 Q6139.4375,417.1719 6140.3281,417.1719 Q6141.2344,417.1719 6141.7344,416.7656 Q6142.2344,416.3438 6142.2344,415.6094 Q6142.2344,415.0469 6141.8906,414.6406 Q6141.5625,414.2188 6140.9375,413.9688 L6139.7344,413.5156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="67" x="6160.75" y="417.1074">urt_node_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="5408.5" x2="6947.5" y1="428.9531" y2="428.9531"/><ellipse cx="5418.5" cy="439.9531" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="102" x="5427.5" y="443.1636">next : urt_node_t*</text><ellipse cx="5418.5" cy="452.7578" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="141" x="5427.5" y="455.9683">thread : urt_osThread_t*</text><ellipse cx="5418.5" cy="465.5625" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="235" x="5427.5" y="468.7729">setupcallback : urt_nodeSetupCallback_t*</text><ellipse cx="5418.5" cy="478.3672" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="117" x="5427.5" y="481.5776">setupparams : void*</text><ellipse cx="5418.5" cy="491.1719" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="221" x="5427.5" y="494.3823">loopcallback : urt_nodeLoopCallback_t*</text><ellipse cx="5418.5" cy="503.9766" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="109" x="5427.5" y="507.187">loopparams : void*</text><ellipse cx="5418.5" cy="516.7813" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="281" x="5427.5" y="519.9917">shutdowncallback : urt_nodeShutdownCallback_t*</text><ellipse cx="5418.5" cy="529.5859" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="140" x="5427.5" y="532.7964">shutdownparams : void*</text><ellipse cx="5418.5" cy="542.3906" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="136" x="5427.5" y="545.6011">stage : urt_nodestage_t</text><ellipse cx="5418.5" cy="555.1953" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="178" x="5427.5" y="558.4058">listener : urt_osEventListener_t</text><ellipse cx="5418.5" cy="584.8047" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="88" x="5427.5" y="588.0151">loops : uint64_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="5408.5" x2="5970" y1="571.4023" y2="571.4023"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="416" x="5970" y="574.7104">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="6386" x2="6947.5" y1="571.4023" y2="571.4023"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="5408.5" x2="6947.5" y1="594.6094" y2="594.6094"/><rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="5415.5" y="602.6094"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" text-decoration="underline" textLength="179" x="5427.5" y="608.8198">_main : urt_osThreadFunction_t</text><ellipse cx="5418.5" cy="618.4141" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="1515" x="5427.5" y="621.6245">urtNodeInit (node : urt_node_t*, thread : urt_osThread_t*, setupcallback : urt_nodeSetupCallback_t*, setupparams : void*, loopcallback : urt_nodeLoopCallback_t*, loopparams : void*, shutdowncallback : urt_nodeShutdownCallback_t*, shutodwnparams : void*) : void</text><!--MD5=[e602aa6d45f270ad04f88c9ca5352b33]
10
class urt_message_t--><rect fill="#FEFECE" filter="url(#f809dau48hy9h)" height="141.6328" id="urt_message_t" style="stroke: #A80036; stroke-width: 1.5;" width="406" x="839" y="706.9531"/><ellipse cx="991.75" cy="722.9531" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M991.2344,723.5156 Q989.375,722.8125 988.7188,722.0469 Q988.0781,721.2656 988.0781,719.9531 Q988.0781,718.2656 989.1563,717.2969 Q990.2344,716.3281 992.1094,716.3281 Q992.9688,716.3281 993.8125,716.5313 Q994.6719,716.7188 995.5156,717.1094 L995.5156,719.5 Q994.7344,718.9375 993.9063,718.6563 Q993.0938,718.3594 992.2969,718.3594 Q991.4219,718.3594 990.9375,718.7188 Q990.4688,719.0781 990.4688,719.7344 Q990.4688,720.25 990.8125,720.5938 Q991.1563,720.9219 992.25,721.3281 L993.3125,721.7344 Q994.7969,722.2813 995.5,723.1875 Q996.2188,724.0938 996.2188,725.4688 Q996.2188,727.3438 995.1094,728.2656 Q994,729.1875 991.75,729.1875 Q990.8281,729.1875 989.9063,728.9688 Q988.9844,728.75 988.125,728.3281 L988.125,725.7969 Q989.0938,726.4844 990.0156,726.8281 Q990.9375,727.1719 991.8281,727.1719 Q992.7344,727.1719 993.2344,726.7656 Q993.7344,726.3438 993.7344,725.6094 Q993.7344,725.0469 993.3906,724.6406 Q993.0625,724.2188 992.4375,723.9688 L991.2344,723.5156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="92" x="1012.25" y="727.1074">urt_message_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="840" x2="1244" y1="738.9531" y2="738.9531"/><ellipse cx="850" cy="749.9531" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="127" x="859" y="753.1636">next : urt_message_t*</text><ellipse cx="850" cy="762.7578" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="85" x="859" y="765.9683">payload : void*</text><ellipse cx="850" cy="775.5625" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="146" x="859" y="778.7729">originTime : urt_osTime_t</text><ellipse cx="850" cy="788.3672" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="211" x="859" y="791.5776">numHrtConsumersLeft : unsigned int</text><ellipse cx="850" cy="817.9766" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="194" x="859" y="821.187">numConsumersLeft : unsigned int</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="840" x2="933.5" y1="804.5742" y2="804.5742"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="217" x="933.5" y="807.8823">URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1150.5" x2="1244" y1="804.5742" y2="804.5742"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="840" x2="1244" y1="827.7813" y2="827.7813"/><ellipse cx="850" cy="838.7813" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="380" x="859" y="841.9917">urtMessageInit (message : urt_message_t*, payload : void*) : void</text><!--MD5=[2ac85a9c1cceb8bb0c9045edc105e6e3]
11
class urt_publisher_t--><rect fill="#FEFECE" filter="url(#f809dau48hy9h)" height="128.8281" id="urt_publisher_t" style="stroke: #A80036; stroke-width: 1.5;" width="783" x="22.5" y="447.9531"/><ellipse cx="363.25" cy="463.9531" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M362.7344,464.5156 Q360.875,463.8125 360.2188,463.0469 Q359.5781,462.2656 359.5781,460.9531 Q359.5781,459.2656 360.6563,458.2969 Q361.7344,457.3281 363.6094,457.3281 Q364.4688,457.3281 365.3125,457.5313 Q366.1719,457.7188 367.0156,458.1094 L367.0156,460.5 Q366.2344,459.9375 365.4063,459.6563 Q364.5938,459.3594 363.7969,459.3594 Q362.9219,459.3594 362.4375,459.7188 Q361.9688,460.0781 361.9688,460.7344 Q361.9688,461.25 362.3125,461.5938 Q362.6563,461.9219 363.75,462.3281 L364.8125,462.7344 Q366.2969,463.2813 367,464.1875 Q367.7188,465.0938 367.7188,466.4688 Q367.7188,468.3438 366.6094,469.2656 Q365.5,470.1875 363.25,470.1875 Q362.3281,470.1875 361.4063,469.9688 Q360.4844,469.75 359.625,469.3281 L359.625,466.7969 Q360.5938,467.4844 361.5156,467.8281 Q362.4375,468.1719 363.3281,468.1719 Q364.2344,468.1719 364.7344,467.7656 Q365.2344,467.3438 365.2344,466.6094 Q365.2344,466.0469 364.8906,465.6406 Q364.5625,465.2188 363.9375,464.9688 L362.7344,464.5156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="93" x="383.75" y="468.1074">urt_publisher_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="23.5" x2="804.5" y1="479.9531" y2="479.9531"/><ellipse cx="33.5" cy="490.9531" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="104" x="42.5" y="494.1636">topic : urt_topic_t*</text><ellipse cx="33.5" cy="520.5625" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="149" x="42.5" y="523.7729">publishAttempts : uint64_t</text><ellipse cx="33.5" cy="533.3672" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="124" x="42.5" y="536.5776">publishFails : uint64_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="23.5" x2="305.5" y1="507.1602" y2="507.1602"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="217" x="305.5" y="510.4683">URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="522.5" x2="804.5" y1="507.1602" y2="507.1602"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="23.5" x2="804.5" y1="543.1719" y2="543.1719"/><ellipse cx="33.5" cy="554.1719" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="572" x="42.5" y="557.3823">urtPublisherInit (publisher : urt_publisher_t*, topic : urt_topic_t*, messages : urt_message_t*) : void</text><ellipse cx="33.5" cy="566.9766" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="757" x="42.5" y="570.187">urtPublisherPublish (publisher : urt_publisher_t*, payload : void*, bytes : size_t, t : urt_osTime_t, timeout : urt_delay_t) : urt_status_t</text><!--MD5=[a1b1e66ec52c209a9fa2dab315cd7630]
12
class urt_topic_t--><rect fill="#FEFECE" filter="url(#f809dau48hy9h)" height="260.875" id="urt_topic_t" style="stroke: #A80036; stroke-width: 1.5;" width="384" x="841" y="381.9531"/><ellipse cx="995.75" cy="397.9531" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M995.2344,398.5156 Q993.375,397.8125 992.7188,397.0469 Q992.0781,396.2656 992.0781,394.9531 Q992.0781,393.2656 993.1563,392.2969 Q994.2344,391.3281 996.1094,391.3281 Q996.9688,391.3281 997.8125,391.5313 Q998.6719,391.7188 999.5156,392.1094 L999.5156,394.5 Q998.7344,393.9375 997.9063,393.6563 Q997.0938,393.3594 996.2969,393.3594 Q995.4219,393.3594 994.9375,393.7188 Q994.4688,394.0781 994.4688,394.7344 Q994.4688,395.25 994.8125,395.5938 Q995.1563,395.9219 996.25,396.3281 L997.3125,396.7344 Q998.7969,397.2813 999.5,398.1875 Q1000.2188,399.0938 1000.2188,400.4688 Q1000.2188,402.3438 999.1094,403.2656 Q998,404.1875 995.75,404.1875 Q994.8281,404.1875 993.9063,403.9688 Q992.9844,403.75 992.125,403.3281 L992.125,400.7969 Q993.0938,401.4844 994.0156,401.8281 Q994.9375,402.1719 995.8281,402.1719 Q996.7344,402.1719 997.2344,401.7656 Q997.7344,401.3438 997.7344,400.6094 Q997.7344,400.0469 997.3906,399.6406 Q997.0625,399.2188 996.4375,398.9688 L995.2344,398.5156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="66" x="1016.25" y="402.1074">urt_topic_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="842" x2="1224" y1="413.9531" y2="413.9531"/><ellipse cx="852" cy="424.9531" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="101" x="861" y="428.1636">next : urt_topic_t*</text><ellipse cx="852" cy="437.7578" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="91" x="861" y="440.9683">id : urt_topicid_t</text><ellipse cx="852" cy="450.5625" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="113" x="861" y="453.7729">lock : urt_osMutex_t</text><ellipse cx="852" cy="463.3672" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="186" x="861" y="466.5776">evtSource : urt_osEventSource_t</text><ellipse cx="852" cy="476.1719" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="193" x="861" y="479.3823">numHrtSubscribers : unsigned int</text><ellipse cx="852" cy="488.9766" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="173" x="861" y="492.187">hrtReleased : urt_osCondvar_t</text><ellipse cx="852" cy="501.7813" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="209" x="861" y="504.9917">mandatoryMessage : urt_message_t</text><ellipse cx="852" cy="514.5859" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="186" x="861" y="517.7964">latestMessage : urt_message_t*</text><ellipse cx="852" cy="544.1953" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="212" x="861" y="547.4058">hrtSubscribers : urt_hrtsubscriber_t*</text><ellipse cx="852" cy="557" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="170" x="861" y="560.2104">qosRateTimer : urt_osTimer_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="842" x2="900.5" y1="530.793" y2="530.793"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="265" x="900.5" y="534.1011">URT_CFG_PUBSUB_QOS_RATECHECKS == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1165.5" x2="1224" y1="530.793" y2="530.793"/><ellipse cx="852" cy="586.6094" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="195" x="861" y="589.8198">numMessagesPublished : uint64_t</text><ellipse cx="852" cy="599.4141" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="197" x="861" y="602.6245">numMessagesDiscarded : uint64_t</text><ellipse cx="852" cy="612.2188" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="176" x="861" y="615.4292">numSubscribers : unsigned int</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="842" x2="924.5" y1="573.207" y2="573.207"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="217" x="924.5" y="576.5151">URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1141.5" x2="1224" y1="573.207" y2="573.207"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="842" x2="1224" y1="622.0234" y2="622.0234"/><ellipse cx="852" cy="633.0234" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="358" x="861" y="636.2339">urtTopicInit (topic : urt_topic_t*, id : urt_topicid_t) : urt_status_t</text><!--MD5=[50a042e24f957794dab9ba3ea8701c50]
13
class urt_basesubscriber_t--><rect fill="#FEFECE" filter="url(#f809dau48hy9h)" height="133.6328" id="urt_basesubscriber_t" style="stroke: #A80036; stroke-width: 1.5;" width="225" x="3105.5" y="710.9531"/><ellipse cx="3147.95" cy="726.9531" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M3147.4344,727.5156 Q3145.575,726.8125 3144.9188,726.0469 Q3144.2781,725.2656 3144.2781,723.9531 Q3144.2781,722.2656 3145.3563,721.2969 Q3146.4344,720.3281 3148.3094,720.3281 Q3149.1688,720.3281 3150.0125,720.5313 Q3150.8719,720.7188 3151.7156,721.1094 L3151.7156,723.5 Q3150.9344,722.9375 3150.1063,722.6563 Q3149.2938,722.3594 3148.4969,722.3594 Q3147.6219,722.3594 3147.1375,722.7188 Q3146.6688,723.0781 3146.6688,723.7344 Q3146.6688,724.25 3147.0125,724.5938 Q3147.3563,724.9219 3148.45,725.3281 L3149.5125,725.7344 Q3150.9969,726.2813 3151.7,727.1875 Q3152.4188,728.0938 3152.4188,729.4688 Q3152.4188,731.3438 3151.3094,732.2656 Q3150.2,733.1875 3147.95,733.1875 Q3147.0281,733.1875 3146.1063,732.9688 Q3145.1844,732.75 3144.325,732.3281 L3144.325,729.7969 Q3145.2938,730.4844 3146.2156,730.8281 Q3147.1375,731.1719 3148.0281,731.1719 Q3148.9344,731.1719 3149.4344,730.7656 Q3149.9344,730.3438 3149.9344,729.6094 Q3149.9344,729.0469 3149.5906,728.6406 Q3149.2625,728.2188 3148.6375,727.9688 L3147.4344,727.5156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="132" x="3168.05" y="731.1074">urt_basesubscriber_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3106.5" x2="3329.5" y1="742.9531" y2="742.9531"/><ellipse cx="3116.5" cy="753.9531" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="104" x="3125.5" y="757.1636">topic : urt_topic_t*</text><ellipse cx="3116.5" cy="766.7578" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="198" x="3125.5" y="769.9683">evtListener : urt_osEventListener_t</text><ellipse cx="3116.5" cy="779.5625" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="175" x="3125.5" y="782.7729">lastMessage : urt_message_t*</text><ellipse cx="3116.5" cy="792.3672" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="186" x="3125.5" y="795.5776">lastMessageTime : urt_osTime_t</text><ellipse cx="3116.5" cy="821.9766" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="136" x="3125.5" y="825.187">sumLatencies : uint64_t</text><ellipse cx="3116.5" cy="834.7813" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="190" x="3125.5" y="837.9917">numMessagesReceived : uint64_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="3106.5" x2="3109.5" y1="808.5742" y2="808.5742"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="217" x="3109.5" y="811.8823">URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="3326.5" x2="3329.5" y1="808.5742" y2="808.5742"/><!--MD5=[fc7708c915a0148c667d62e1370980fd]
14
class urt_srtusefulnessfunc_t--><rect fill="#FEFECE" filter="url(#f809dau48hy9h)" height="60.8047" id="urt_srtusefulnessfunc_t" style="stroke: #A80036; stroke-width: 1.5;" width="374" x="4636" y="747.4531"/><ellipse cx="4745.25" cy="763.4531" fill="#E0E0E0" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M4749.4844,759.2188 L4744.2031,759.2188 L4744.2031,761.8906 L4749,761.8906 L4749,764.0469 L4744.2031,764.0469 L4744.2031,769.4531 L4741.7656,769.4531 L4741.7656,757.0625 L4749.4844,757.0625 L4749.4844,759.2188 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="147" x="4765.75" y="767.6074">urt_srtusefulnessfunc_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="4637" x2="5009" y1="779.4531" y2="779.4531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="4637" x2="5009" y1="787.4531" y2="787.4531"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="362" x="4642" y="801.6636">urt_srtusefulnessfunc_t (dt : urt_delay_t, params : void*) : float</text><!--MD5=[9ff46073dd541e50679ef35e851c67d6]
15
class urt_nrtsubscriber_t--><rect fill="#FEFECE" filter="url(#f809dau48hy9h)" height="154.4375" id="urt_nrtsubscriber_t" style="stroke: #A80036; stroke-width: 1.5;" width="821" x="1278.5" y="435.4531"/><ellipse cx="1625.25" cy="451.4531" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1624.7344,452.0156 Q1622.875,451.3125 1622.2188,450.5469 Q1621.5781,449.7656 1621.5781,448.4531 Q1621.5781,446.7656 1622.6563,445.7969 Q1623.7344,444.8281 1625.6094,444.8281 Q1626.4688,444.8281 1627.3125,445.0313 Q1628.1719,445.2188 1629.0156,445.6094 L1629.0156,448 Q1628.2344,447.4375 1627.4063,447.1563 Q1626.5938,446.8594 1625.7969,446.8594 Q1624.9219,446.8594 1624.4375,447.2188 Q1623.9688,447.5781 1623.9688,448.2344 Q1623.9688,448.75 1624.3125,449.0938 Q1624.6563,449.4219 1625.75,449.8281 L1626.8125,450.2344 Q1628.2969,450.7813 1629,451.6875 Q1629.7188,452.5938 1629.7188,453.9688 Q1629.7188,455.8438 1628.6094,456.7656 Q1627.5,457.6875 1625.25,457.6875 Q1624.3281,457.6875 1623.4063,457.4688 Q1622.4844,457.25 1621.625,456.8281 L1621.625,454.2969 Q1622.5938,454.9844 1623.5156,455.3281 Q1624.4375,455.6719 1625.3281,455.6719 Q1626.2344,455.6719 1626.7344,455.2656 Q1627.2344,454.8438 1627.2344,454.1094 Q1627.2344,453.5469 1626.8906,453.1406 Q1626.5625,452.7188 1625.9375,452.4688 L1624.7344,452.0156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="119" x="1645.75" y="455.6074">urt_nrtsubscriber_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1279.5" x2="2098.5" y1="467.4531" y2="467.4531"/><ellipse cx="1289.5" cy="495.2578" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="138" x="1298.5" y="498.4683">minLatency : urt_delay_t</text><ellipse cx="1289.5" cy="508.0625" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="141" x="1298.5" y="511.2729">maxLatency : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1279.5" x2="1580.5" y1="481.8555" y2="481.8555"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="217" x="1580.5" y="485.1636">URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1797.5" x2="2098.5" y1="481.8555" y2="481.8555"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1279.5" x2="2098.5" y1="517.8672" y2="517.8672"/><ellipse cx="1289.5" cy="528.8672" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="347" x="1298.5" y="532.0776">urtNrtSubscriberInit (subscriber : urt_nrtsubscriber_t*) : void</text><ellipse cx="1289.5" cy="541.6719" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="715" x="1298.5" y="544.8823">urtNrtSubscriberSubscribe (subscriber : urt_nrtsubscriber_t*, topic : urt_topic_t*, messages : urt_message_t*) : urt_status_t</text><ellipse cx="1289.5" cy="554.4766" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="785" x="1298.5" y="557.687">urtNrtSubscriberFetchNextMessage (subscriber : urt_nrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="1289.5" cy="567.2813" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="795" x="1298.5" y="570.4917">urtNrtSubscriberFetchLatestMessage (subscriber : urt_nrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="1289.5" cy="580.0859" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="446" x="1298.5" y="583.2964">urtNrtSubscriberUnsubscribe (subscriber : urt_nrtsubscriber_t*) : urt_status_t</text><!--MD5=[5c7929572d87ccc448d875bea5da0fb1]
16
class urt_srtsubscriber_t--><rect fill="#FEFECE" filter="url(#f809dau48hy9h)" height="192.8516" id="urt_srtsubscriber_t" style="stroke: #A80036; stroke-width: 1.5;" width="1084" x="4281" y="415.9531"/><ellipse cx="4759.75" cy="431.9531" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M4759.2344,432.5156 Q4757.375,431.8125 4756.7188,431.0469 Q4756.0781,430.2656 4756.0781,428.9531 Q4756.0781,427.2656 4757.1563,426.2969 Q4758.2344,425.3281 4760.1094,425.3281 Q4760.9688,425.3281 4761.8125,425.5313 Q4762.6719,425.7188 4763.5156,426.1094 L4763.5156,428.5 Q4762.7344,427.9375 4761.9063,427.6563 Q4761.0938,427.3594 4760.2969,427.3594 Q4759.4219,427.3594 4758.9375,427.7188 Q4758.4688,428.0781 4758.4688,428.7344 Q4758.4688,429.25 4758.8125,429.5938 Q4759.1563,429.9219 4760.25,430.3281 L4761.3125,430.7344 Q4762.7969,431.2813 4763.5,432.1875 Q4764.2188,433.0938 4764.2188,434.4688 Q4764.2188,436.3438 4763.1094,437.2656 Q4762,438.1875 4759.75,438.1875 Q4758.8281,438.1875 4757.9063,437.9688 Q4756.9844,437.75 4756.125,437.3281 L4756.125,434.7969 Q4757.0938,435.4844 4758.0156,435.8281 Q4758.9375,436.1719 4759.8281,436.1719 Q4760.7344,436.1719 4761.2344,435.7656 Q4761.7344,435.3438 4761.7344,434.6094 Q4761.7344,434.0469 4761.3906,433.6406 Q4761.0625,433.2188 4760.4375,432.9688 L4759.2344,432.5156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="118" x="4780.25" y="436.1074">urt_srtsubscriber_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="4282" x2="5364" y1="447.9531" y2="447.9531"/><ellipse cx="4292" cy="458.9531" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="229" x="4301" y="462.1636">usefulnesscb : urt_srtusefulnessfunc_t*</text><ellipse cx="4292" cy="471.7578" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="98" x="4301" y="474.9683">cbparams : void*</text><ellipse cx="4292" cy="501.3672" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="138" x="4301" y="504.5776">minLatency : urt_delay_t</text><ellipse cx="4292" cy="514.1719" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="141" x="4301" y="517.3823">maxLatency : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="4282" x2="4714.5" y1="487.9648" y2="487.9648"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="217" x="4714.5" y="491.2729">URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="4931.5" x2="5364" y1="487.9648" y2="487.9648"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="4282" x2="5364" y1="523.9766" y2="523.9766"/><ellipse cx="4292" cy="534.9766" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="347" x="4301" y="538.187">urtSrtSubscriberInit (subscriber : urt_srtsubscriber_t*) : void</text><ellipse cx="4292" cy="547.7813" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="1058" x="4301" y="550.9917">urtSrtSubscriberSubscribe (subscriber : urt_srtsubscriber_t*, topic : urt_topic_t*, messages : urt_message_t*, usefulnesscb : urt_srtusefulnessfunc_t*, cbparams : void*) : urt_status_t</text><ellipse cx="4292" cy="560.5859" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="785" x="4301" y="563.7964">urtSrtSubscriberFetchNextMessage (subscriber : urt_srtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="4292" cy="573.3906" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="795" x="4301" y="576.6011">urtSrtSubscriberFetchLatestMessage (subscriber : urt_srtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="4292" cy="586.1953" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="570" x="4301" y="589.4058">urtSrtSubscriberCalculateUsefulness (subscriber : urt_srtsubscriber_t*, latency : urt_delay_t) : float</text><ellipse cx="4292" cy="599" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="446" x="4301" y="602.2104">urtSrtSubscriberUnsubscribe (subscriber : urt_srtsubscriber_t*) : urt_status_t</text><!--MD5=[17838fb05fe219fd399839979ec8a4a4]
17
class urt_frtsubscriber_t--><rect fill="#FEFECE" filter="url(#f809dau48hy9h)" height="226.4609" id="urt_frtsubscriber_t" style="stroke: #A80036; stroke-width: 1.5;" width="974" x="3272" y="399.4531"/><ellipse cx="3697.25" cy="415.4531" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M3696.7344,416.0156 Q3694.875,415.3125 3694.2188,414.5469 Q3693.5781,413.7656 3693.5781,412.4531 Q3693.5781,410.7656 3694.6563,409.7969 Q3695.7344,408.8281 3697.6094,408.8281 Q3698.4688,408.8281 3699.3125,409.0313 Q3700.1719,409.2188 3701.0156,409.6094 L3701.0156,412 Q3700.2344,411.4375 3699.4063,411.1563 Q3698.5938,410.8594 3697.7969,410.8594 Q3696.9219,410.8594 3696.4375,411.2188 Q3695.9688,411.5781 3695.9688,412.2344 Q3695.9688,412.75 3696.3125,413.0938 Q3696.6563,413.4219 3697.75,413.8281 L3698.8125,414.2344 Q3700.2969,414.7813 3701,415.6875 Q3701.7188,416.5938 3701.7188,417.9688 Q3701.7188,419.8438 3700.6094,420.7656 Q3699.5,421.6875 3697.25,421.6875 Q3696.3281,421.6875 3695.4063,421.4688 Q3694.4844,421.25 3693.625,420.8281 L3693.625,418.2969 Q3694.5938,418.9844 3695.5156,419.3281 Q3696.4375,419.6719 3697.3281,419.6719 Q3698.2344,419.6719 3698.7344,419.2656 Q3699.2344,418.8438 3699.2344,418.1094 Q3699.2344,417.5469 3698.8906,417.1406 Q3698.5625,416.7188 3697.9375,416.4688 L3696.7344,416.0156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="115" x="3717.75" y="419.6074">urt_frtsubscriber_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3273" x2="4245" y1="431.4531" y2="431.4531"/><ellipse cx="3283" cy="459.2578" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="157" x="3292" y="462.4683">deadlineOffset : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="3273" x2="3613.5" y1="445.8555" y2="445.8555"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="291" x="3613.5" y="449.1636">URT_CFG_PUBSUB_QOS_DEADLINECHECKS == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="3904.5" x2="4245" y1="445.8555" y2="445.8555"/><ellipse cx="3283" cy="488.8672" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="124" x="3292" y="492.0776">maxJitter : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="3273" x2="3623.5" y1="475.4648" y2="475.4648"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="271" x="3623.5" y="478.7729">URT_CFG_PUBSUB_QOS_JITTERCHECKS == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="3894.5" x2="4245" y1="475.4648" y2="475.4648"/><ellipse cx="3283" cy="518.4766" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="138" x="3292" y="521.687">minLatency : urt_delay_t</text><ellipse cx="3283" cy="531.2813" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="141" x="3292" y="534.4917">maxLatency : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="3273" x2="3505" y1="505.0742" y2="505.0742"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="508" x="3505" y="508.3823">URT_CFG_PUBSUB_QOS_JITTERCHECKS == true ||  URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="4013" x2="4245" y1="505.0742" y2="505.0742"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="3273" x2="4245" y1="541.0859" y2="541.0859"/><ellipse cx="3283" cy="552.0859" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="342" x="3292" y="555.2964">urtFrtSubscriberInit (subscriber : urt_frtsubscriber_t*) : void</text><ellipse cx="3283" cy="564.8906" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="948" x="3292" y="568.1011">urtFrtSubscriberSubscribe (subscriber : urt_frtsubscriber_t*, topic : urt_topic_t*, messages : urt_message_t*, deadline : urt_delay_t, jitter : urt_delay_t) : urt_status_t</text><ellipse cx="3283" cy="577.6953" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="780" x="3292" y="580.9058">urtFrtSubscriberFetchNextMessage (subscriber : urt_frtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="3283" cy="590.5" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="790" x="3292" y="593.7104">urtFrtSubscriberFetchLatestMessage (subscriber : urt_frtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="3283" cy="603.3047" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="540" x="3292" y="606.5151">urtFrtSubscriberCalculateValidity (subscriber : urt_frtsubscriber_t*, latency : urt_delay_t) : bool</text><ellipse cx="3283" cy="616.1094" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="441" x="3292" y="619.3198">urtFrtSubscriberUnsubscribe (subscriber : urt_frtsubscriber_t*) : urt_status_t</text><!--MD5=[104dc879e5721421b987fcc467bc3a1d]
18
class urt_hrtsubscriber_t--><rect fill="#FEFECE" filter="url(#f809dau48hy9h)" height="268.875" id="urt_hrtsubscriber_t" style="stroke: #A80036; stroke-width: 1.5;" width="1084" x="2135" y="377.9531"/><ellipse cx="2613.25" cy="393.9531" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M2612.7344,394.5156 Q2610.875,393.8125 2610.2188,393.0469 Q2609.5781,392.2656 2609.5781,390.9531 Q2609.5781,389.2656 2610.6563,388.2969 Q2611.7344,387.3281 2613.6094,387.3281 Q2614.4688,387.3281 2615.3125,387.5313 Q2616.1719,387.7188 2617.0156,388.1094 L2617.0156,390.5 Q2616.2344,389.9375 2615.4063,389.6563 Q2614.5938,389.3594 2613.7969,389.3594 Q2612.9219,389.3594 2612.4375,389.7188 Q2611.9688,390.0781 2611.9688,390.7344 Q2611.9688,391.25 2612.3125,391.5938 Q2612.6563,391.9219 2613.75,392.3281 L2614.8125,392.7344 Q2616.2969,393.2813 2617,394.1875 Q2617.7188,395.0938 2617.7188,396.4688 Q2617.7188,398.3438 2616.6094,399.2656 Q2615.5,400.1875 2613.25,400.1875 Q2612.3281,400.1875 2611.4063,399.9688 Q2610.4844,399.75 2609.625,399.3281 L2609.625,396.7969 Q2610.5938,397.4844 2611.5156,397.8281 Q2612.4375,398.1719 2613.3281,398.1719 Q2614.2344,398.1719 2614.7344,397.7656 Q2615.2344,397.3438 2615.2344,396.6094 Q2615.2344,396.0469 2614.8906,395.6406 Q2614.5625,395.2188 2613.9375,394.9688 L2612.7344,394.5156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="119" x="2633.75" y="398.1074">urt_hrtsubscriber_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="2136" x2="3218" y1="409.9531" y2="409.9531"/><ellipse cx="2146" cy="420.9531" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="151" x="2155" y="424.1636">next : urt_hrtsubscriber_t*</text><ellipse cx="2146" cy="450.5625" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="157" x="2155" y="453.7729">deadlineOffset : urt_delay_t</text><ellipse cx="2146" cy="463.3672" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="194" x="2155" y="466.5776">qosDeadlineTimer : urt_osTimer_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="2136" x2="2531.5" y1="437.1602" y2="437.1602"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="291" x="2531.5" y="440.4683">URT_CFG_PUBSUB_QOS_DEADLINECHECKS == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="2822.5" x2="3218" y1="437.1602" y2="437.1602"/><ellipse cx="2146" cy="492.9766" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="124" x="2155" y="496.187">maxJitter : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="2136" x2="2541.5" y1="479.5742" y2="479.5742"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="271" x="2541.5" y="482.8823">URT_CFG_PUBSUB_QOS_JITTERCHECKS == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="2812.5" x2="3218" y1="479.5742" y2="479.5742"/><ellipse cx="2146" cy="522.5859" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="138" x="2155" y="525.7964">minLatency : urt_delay_t</text><ellipse cx="2146" cy="535.3906" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="141" x="2155" y="538.6011">maxLatency : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="2136" x2="2425" y1="509.1836" y2="509.1836"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="504" x="2425" y="512.4917">URT_CFG_PUBSUB_QOS_JITTERCHECKS == true || URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="2929" x2="3218" y1="509.1836" y2="509.1836"/><ellipse cx="2146" cy="565" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="150" x="2155" y="568.2104">expectedRate : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="2136" x2="2544.5" y1="551.5977" y2="551.5977"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="265" x="2544.5" y="554.9058">URT_CFG_PUBSUB_QOS_RATECHECKS == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="2809.5" x2="3218" y1="551.5977" y2="551.5977"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2136" x2="3218" y1="574.8047" y2="574.8047"/><ellipse cx="2146" cy="585.8047" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="347" x="2155" y="589.0151">urtHrtSubscriberInit (subscriber : urt_hrtsubscriber_t*) : void</text><ellipse cx="2146" cy="598.6094" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="1058" x="2155" y="601.8198">urtHrtSubscriberSubscribe (subscriber : urt_hrtsubscriber_t*, topic : urt_topic_t*, messages : urt_message_t*, deadline : urt_delay_t, rate : urt_delay_t, jitter : urt_delay_t) : urt_status_t</text><ellipse cx="2146" cy="611.4141" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="785" x="2155" y="614.6245">urtHrtSubscriberFetchNextMessage (subscriber : urt_hrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="2146" cy="624.2188" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="795" x="2155" y="627.4292">urtHrtSubscriberFetchLatestMessage (subscriber : urt_hrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="2146" cy="637.0234" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="446" x="2155" y="640.2339">urtHrtSubscriberUnsubscribe (subscriber : urt_hrtsubscriber_t*) : urt_status_t</text><!--MD5=[3226071078d8aeaa18fbafa5359ddee6]
19
class urt_servicefunc_t--><rect fill="#FEFECE" filter="url(#f809dau48hy9h)" height="60.8047" id="urt_servicefunc_t" style="stroke: #A80036; stroke-width: 1.5;" width="451" x="7154.5" y="747.4531"/><ellipse cx="7322.75" cy="763.4531" fill="#E0E0E0" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M7326.9844,759.2188 L7321.7031,759.2188 L7321.7031,761.8906 L7326.5,761.8906 L7326.5,764.0469 L7321.7031,764.0469 L7321.7031,769.4531 L7319.2656,769.4531 L7319.2656,757.0625 L7326.9844,757.0625 L7326.9844,759.2188 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="106" x="7343.25" y="767.6074">urt_servicefunc_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="7155.5" x2="7604.5" y1="779.4531" y2="779.4531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="7155.5" x2="7604.5" y1="787.4531" y2="787.4531"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="439" x="7160.5" y="801.6636">urt_servicefunc_t (arg : void*, ret : void*, timeout : urt_delay_t) : urt_status_t</text><!--MD5=[e60e0f8379a14e7a4a292c65add9d735]
20
class urt_service_t--><rect fill="#FEFECE" filter="url(#f809dau48hy9h)" height="205.6563" id="urt_service_t" style="stroke: #A80036; stroke-width: 1.5;" width="602" x="7079" y="409.4531"/><ellipse cx="7336.25" cy="425.4531" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M7335.7344,426.0156 Q7333.875,425.3125 7333.2188,424.5469 Q7332.5781,423.7656 7332.5781,422.4531 Q7332.5781,420.7656 7333.6563,419.7969 Q7334.7344,418.8281 7336.6094,418.8281 Q7337.4688,418.8281 7338.3125,419.0313 Q7339.1719,419.2188 7340.0156,419.6094 L7340.0156,422 Q7339.2344,421.4375 7338.4063,421.1563 Q7337.5938,420.8594 7336.7969,420.8594 Q7335.9219,420.8594 7335.4375,421.2188 Q7334.9688,421.5781 7334.9688,422.2344 Q7334.9688,422.75 7335.3125,423.0938 Q7335.6563,423.4219 7336.75,423.8281 L7337.8125,424.2344 Q7339.2969,424.7813 7340,425.6875 Q7340.7188,426.5938 7340.7188,427.9688 Q7340.7188,429.8438 7339.6094,430.7656 Q7338.5,431.6875 7336.25,431.6875 Q7335.3281,431.6875 7334.4063,431.4688 Q7333.4844,431.25 7332.625,430.8281 L7332.625,428.2969 Q7333.5938,428.9844 7334.5156,429.3281 Q7335.4375,429.6719 7336.3281,429.6719 Q7337.2344,429.6719 7337.7344,429.2656 Q7338.2344,428.8438 7338.2344,428.1094 Q7338.2344,427.5469 7337.8906,427.1406 Q7337.5625,426.7188 7336.9375,426.4688 L7335.7344,426.0156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="79" x="7356.75" y="429.6074">urt_service_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="7080" x2="7680" y1="441.4531" y2="441.4531"/><ellipse cx="7090" cy="452.4531" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="115" x="7099" y="455.6636">next : urt_service_t*</text><ellipse cx="7090" cy="465.2578" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="105" x="7099" y="468.4683">id : urt_serviceid_t</text><ellipse cx="7090" cy="478.0625" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="113" x="7099" y="481.2729">lock : urt_osMutex_t</text><ellipse cx="7090" cy="490.8672" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="160" x="7099" y="494.0776">callback : urt_servicefunc_t*</text><ellipse cx="7090" cy="520.4766" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="137" x="7099" y="523.687">sumDurations : uint64_t</text><ellipse cx="7090" cy="533.2813" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="110" x="7099" y="536.4917">numCalls : uint64_t</text><ellipse cx="7090" cy="546.0859" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="135" x="7099" y="549.2964">numTimeouts : uint64_t</text><ellipse cx="7090" cy="558.8906" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="143" x="7099" y="562.1011">minDuration : urt_delay_t</text><ellipse cx="7090" cy="571.6953" fill="none" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="146" x="7099" y="574.9058">maxDuration : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="7080" x2="7284" y1="507.0742" y2="507.0742"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="192" x="7284" y="510.3823">URT_CFG_RPC_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="7476" x2="7680" y1="507.0742" y2="507.0742"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="7080" x2="7680" y1="581.5" y2="581.5"/><ellipse cx="7090" cy="592.5" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="576" x="7099" y="595.7104">urtServiceInit(service : urt_service_t*, id : urt_serviceid_t, callback : urt_servicefunc_t*) : urt_status_t</text><ellipse cx="7090" cy="605.3047" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="557" x="7099" y="608.5151">urtServiceCall(service : urt_service_t*, arg : void*, ret : void*, timeout : urt_delay_t) : urt_status_t</text><!--MD5=[89d25e87afdd75480e1ec2bd05524873]
21
class urt_core_t--><rect fill="#FEFECE" filter="url(#f809dau48hy9h)" height="281.6797" id="urt_core_t" style="stroke: #A80036; stroke-width: 1.5;" width="343" x="6006.5" y="28.9531"/><ellipse cx="6142.25" cy="44.9531" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M6141.7344,45.5156 Q6139.875,44.8125 6139.2188,44.0469 Q6138.5781,43.2656 6138.5781,41.9531 Q6138.5781,40.2656 6139.6563,39.2969 Q6140.7344,38.3281 6142.6094,38.3281 Q6143.4688,38.3281 6144.3125,38.5313 Q6145.1719,38.7188 6146.0156,39.1094 L6146.0156,41.5 Q6145.2344,40.9375 6144.4063,40.6563 Q6143.5938,40.3594 6142.7969,40.3594 Q6141.9219,40.3594 6141.4375,40.7188 Q6140.9688,41.0781 6140.9688,41.7344 Q6140.9688,42.25 6141.3125,42.5938 Q6141.6563,42.9219 6142.75,43.3281 L6143.8125,43.7344 Q6145.2969,44.2813 6146,45.1875 Q6146.7188,46.0938 6146.7188,47.4688 Q6146.7188,49.3438 6145.6094,50.2656 Q6144.5,51.1875 6142.25,51.1875 Q6141.3281,51.1875 6140.4063,50.9688 Q6139.4844,50.75 6138.625,50.3281 L6138.625,47.7969 Q6139.5938,48.4844 6140.5156,48.8281 Q6141.4375,49.1719 6142.3281,49.1719 Q6143.2344,49.1719 6143.7344,48.7656 Q6144.2344,48.3438 6144.2344,47.6094 Q6144.2344,47.0469 6143.8906,46.6406 Q6143.5625,46.2188 6142.9375,45.9688 L6141.7344,45.5156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="63" x="6162.75" y="49.1074">urt_core_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="6007.5" x2="6348.5" y1="60.9531" y2="60.9531"/><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="6014.5" y="68.9531"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" text-decoration="underline" textLength="119" x="6026.5" y="75.1636">_nodes : urt_node_t*</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="6014.5" y="81.7578"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" text-decoration="underline" textLength="192" x="6026.5" y="87.9683">_evtSource : urt_osEventSource_t</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="6014.5" y="94.5625"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" text-decoration="underline" textLength="119" x="6026.5" y="100.7729">_lock : urt_osMutex_t</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="6014.5" y="107.3672"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" text-decoration="underline" textLength="122" x="6026.5" y="113.5776">_status : urt_status_t</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="6014.5" y="136.9766"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" text-decoration="underline" textLength="117" x="6026.5" y="143.187">_topics : urt_topic_t*</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="6007.5" x2="6073" y1="126.5742" y2="126.5742"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="210" x="6073" y="129.8823">URT_CFG_PUBSUB_ENABLED == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="6283" x2="6348.5" y1="126.5742" y2="126.5742"/><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="6014.5" y="166.5859"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" text-decoration="underline" textLength="145" x="6026.5" y="172.7964">_services : urt_service_t*</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="6007.5" x2="6085.5" y1="156.1836" y2="156.1836"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="185" x="6085.5" y="159.4917">URT_CFG_RPC_ENABLED == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="6270.5" x2="6348.5" y1="156.1836" y2="156.1836"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="6007.5" x2="6348.5" y1="179.3906" y2="179.3906"/><ellipse cx="6017.5" cy="190.3906" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="130" x="6026.5" y="193.6011">urtCoreInit (void) : void</text><ellipse cx="6017.5" cy="203.1953" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="215" x="6026.5" y="206.4058">urtCoreGetStatus (void) : urt_status_t</text><ellipse cx="6017.5" cy="216" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="177" x="6026.5" y="219.2104">urtCoreStartNodes (void) : void</text><ellipse cx="6017.5" cy="228.8047" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="309" x="6026.5" y="232.0151">urtCoreSynchronize (node : urt_node_t*) : urt_status_t</text><ellipse cx="6017.5" cy="241.6094" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="317" x="6026.5" y="244.8198">urtCoreStopNodes (reason : urt_status_t) : urt_status_t</text><ellipse cx="6017.5" cy="271.2188" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="273" x="6026.5" y="274.4292">urtCoreGetTopic (id : urt_topicid_t) : urt_topic_t*</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="6007.5" x2="6073" y1="257.8164" y2="257.8164"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="210" x="6073" y="261.1245">URT_CFG_PUBSUB_ENABLED == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="6283" x2="6348.5" y1="257.8164" y2="257.8164"/><ellipse cx="6017.5" cy="300.8281" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="313" x="6026.5" y="304.0386">urtCoreGetService (id : urt_serviceid_t) : urt_service_t*</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="6007.5" x2="6085.5" y1="287.4258" y2="287.4258"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="185" x="6085.5" y="290.7339">URT_CFG_RPC_ENABLED == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="6270.5" x2="6348.5" y1="287.4258" y2="287.4258"/><!--MD5=[182342162f0b9b45ddce11acc6582c59]
22
reverse link urt_node_t to urt_node_t--><path d="M6960.9212,491.2176 C6975.4841,497.3109 6983.5,504.3894 6983.5,512.4531 C6983.5,522.5722 6970.8767,531.1399 6948.5332,538.1561 " fill="none" id="urt_node_t&lt;-urt_node_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="6948.5332,486.7501,6952.8204,492.5484,6959.8215,490.8212,6955.5344,485.0229,6948.5332,486.7501" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="6957.0047" y="483.4531">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="6957.0922" y="535.4214">0..1</text><!--MD5=[55d7f7c946c3356baf68288566af1bf6]
23
reverse link urt_node_t to urt_nodeSetupCallback_t--><path d="M6165.2551,641.2168 C6165.1537,680.749 6166.5611,720.753 6169.4773,747.1888 " fill="none" id="urt_node_t&lt;-urt_nodeSetupCallback_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="6165.3442,628.1329,6161.3034,634.1055,6165.2624,640.1326,6169.3032,634.16,6165.3442,628.1329" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="6156.2251" y="648.4715">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="6141.2445" y="736.3975">0..1</text><!--MD5=[55d7f7c946c3356baf68288566af1bf6]
24
reverse link urt_node_t to urt_nodeSetupCallback_t--><path d="M6191.4513,633.2524 C6191.7951,675.3075 6190.3194,718.9753 6187.024,747.1888 " fill="none" id="urt_node_t&lt;-urt_nodeSetupCallback_t-1" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="6191.4003,628.1329,6187.4902,637.1724,6191.4502,633.1327,6195.4898,637.0926,6191.4003,628.1329" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[b913f036db99e36b937989146817bd94]
25
reverse link urt_node_t to urt_nodeLoopCallback_t--><path d="M6425.4811,633.646 C6515.3454,675.6499 6610.2616,719.2088 6673.7479,747.3298 " fill="none" id="urt_node_t&lt;-urt_nodeLoopCallback_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="6413.6963,628.1329,6417.436,634.2985,6424.5657,633.2178,6420.826,627.0523,6413.6963,628.1329" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="6421.2634" y="648.4715">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="6649.6084" y="736.5676">1</text><!--MD5=[b913f036db99e36b937989146817bd94]
26
reverse link urt_node_t to urt_nodeLoopCallback_t--><path d="M6444.4499,630.3098 C6537.2495,673.3301 6632.6737,718.4635 6691.2626,747.3298 " fill="none" id="urt_node_t&lt;-urt_nodeLoopCallback_t-1" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="6439.7525,628.1329,6446.2365,635.5463,6444.2891,630.2352,6449.6001,628.2878,6439.7525,628.1329" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[496dffc41052f1912ec8ad492f24fe61]
27
reverse link urt_node_t to urt_nodeShutdownCallback_t--><path d="M5926.255,634.0314 C5843.603,675.9162 5759.7171,719.2948 5707.7014,747.3298 " fill="none" id="urt_node_t&lt;-urt_nodeShutdownCallback_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="5937.9059,628.1329,5930.7461,627.2743,5927.1998,633.5531,5934.3596,634.4117,5937.9059,628.1329" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="5913.5058" y="648.4715">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="5691.8898" y="736.5676">0..1</text><!--MD5=[496dffc41052f1912ec8ad492f24fe61]
28
reverse link urt_node_t to urt_nodeShutdownCallback_t--><path d="M5959.4552,630.438 C5875.3841,673.4197 5785.2945,718.4921 5725.2161,747.3298 " fill="none" id="urt_node_t&lt;-urt_nodeShutdownCallback_t-1" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="5963.962,628.1329,5954.1278,628.67,5959.5105,630.4098,5957.7707,635.7924,5963.962,628.1329" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[536025241394544a90bc53fb552f3a08]
29
reverse link urt_message_t to urt_message_t--><path d="M1257.0848,742.5198 C1271.3521,750.7337 1280,762.5448 1280,777.9531 C1280,797.289 1266.3815,810.9601 1245.1293,818.9664 " fill="none" id="urt_message_t&lt;-urt_message_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="1245.1293,736.9398,1248.8745,743.1021,1256.0032,742.015,1252.258,735.8528,1245.1293,736.9398" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="1253.2203" y="732.1214">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="1252.8605" y="817.2467">0..1</text><!--MD5=[0585cd4928de92ce6927d9c389eadd29]
30
link urt_nrtsubscriber_t to urt_basesubscriber_t--><path d="M1899.1787,589.5304 C1968.02,611.7483 2045.4622,633.5767 2118,646.9531 C2542.3586,725.2072 2679.925,579.8706 3093.8574,704.9137 " fill="none" id="urt_nrtsubscriber_t-&gt;urt_basesubscriber_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="3096.0992,698.2797,3113.1409,710.8726,3091.9658,711.6557,3096.0992,698.2797" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[37a8b7f2877a6b7bb4e9d0352ce3d221]
31
link urt_nrtsubscriber_t to urt_message_t--><path d="M1500.9917,589.6033 C1412.3797,625.9658 1307.2133,669.1214 1219.9177,704.9436 " fill="none" id="urt_nrtsubscriber_t-&gt;urt_message_t" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="1215.2492,706.8594,1225.094,707.1433,1219.8749,704.9613,1222.0569,699.7422,1215.2492,706.8594" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[6d81edfa5aa102b898ad487ae19b49f9]
32
link urt_srtsubscriber_t to urt_basesubscriber_t--><path d="M4446.8492,609.0151 C4385.961,622.8959 4323.4105,636.1204 4264,646.9531 C3938.22,706.3547 3550.4148,747.2295 3351.013,766.0919 " fill="none" id="urt_srtsubscriber_t-&gt;urt_basesubscriber_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="3351.4203,773.0843,3330.8536,767.9844,3350.1117,759.1456,3351.4203,773.0843" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[47304731969ac4130b45cc7169c5cada]
33
reverse link urt_srtsubscriber_t to urt_srtusefulnessfunc_t--><path d="M4823,622.0612 C4823,667.4783 4823,716.6246 4823,747.342 " fill="none" id="urt_srtsubscriber_t&lt;-urt_srtusefulnessfunc_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="4823,609.0557,4819,615.0557,4823,621.0557,4827,615.0557,4823,609.0557" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="4814.7063" y="628.778">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="4796.525" y="736.5823">0..1</text><!--MD5=[dffdac3aea8c81c86dd1d0b8122fcada]
34
link urt_srtsubscriber_t to urt_message_t--><path d="M4472.5378,608.9959 C4403.885,624.4322 4332.0632,638.1893 4264,646.9531 C3602.4393,732.1356 1920.9167,597.116 1263,706.9531 C1258.7859,707.6566 1254.5419,708.4236 1250.2776,709.2477 " fill="none" id="urt_srtsubscriber_t-&gt;urt_message_t" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="1245.2629,710.2409,1254.8685,712.4161,1250.1676,709.2695,1253.3143,704.5686,1245.2629,710.2409" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[f626d284cba98e1d5d5fe914b1fa4188]
35
link urt_frtsubscriber_t to urt_basesubscriber_t--><path d="M3528.3905,625.6265 C3467.0717,655.7192 3402.9567,687.1842 3349.0246,713.6518 " fill="none" id="urt_frtsubscriber_t-&gt;urt_basesubscriber_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="3351.8079,720.0833,3330.7695,722.6106,3345.64,707.5152,3351.8079,720.0833" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[cfcdebdb88febc368723fd91f781523c]
36
link urt_frtsubscriber_t to urt_message_t--><path d="M3371.1778,625.4981 C3332.1799,633.9851 3292.9705,641.391 3255,646.9531 C2378.6178,775.329 2135.8945,556.682 1263,706.9531 C1258.7896,707.6779 1254.5488,708.4645 1250.2876,709.3064 " fill="none" id="urt_frtsubscriber_t-&gt;urt_message_t" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="1245.2763,710.3199,1254.8906,712.4565,1250.1771,709.3288,1253.3048,704.6153,1245.2763,710.3199" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[1ea71f2b33e56ab0ac5545988c1af396]
37
link urt_hrtsubscriber_t to urt_basesubscriber_t--><path d="M2982.7123,646.9972 C3017.82,663.8002 3053.0613,681.278 3091.3977,701.4154 " fill="none" id="urt_hrtsubscriber_t-&gt;urt_basesubscriber_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="3094.8401,695.3173,3109.2402,710.862,3088.2893,707.6902,3094.8401,695.3173" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[ea2ec5c5272e65289dabade75a749f58]
38
reverse link urt_hrtsubscriber_t to urt_hrtsubscriber_t--><path d="M3231.3399,487.8326 C3245.8539,494.6417 3254,502.8486 3254,512.4531 C3254,524.5058 3241.1717,534.3575 3219.0292,542.0082 " fill="none" id="urt_hrtsubscriber_t&lt;-urt_hrtsubscriber_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="3219.0292,482.898,3223.1102,488.8432,3230.1677,487.3628,3226.0867,481.4176,3219.0292,482.898" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="3226.7077" y="479.4456">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="3226.8202" y="539.3871">0..1</text><!--MD5=[a8adaa0500715125c1ab51b9b0fda3ce]
39
link urt_hrtsubscriber_t to urt_message_t--><path d="M2134.872,644.1203 C2128.8881,645.0943 2122.9292,646.0392 2117,646.9531 C1740.9494,704.9143 1636.6082,634.9082 1263,706.9531 C1258.7338,707.7758 1254.435,708.6551 1250.1138,709.5848 " fill="none" id="urt_hrtsubscriber_t-&gt;urt_message_t" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="1245.0316,710.699,1254.6794,712.6787,1249.9156,709.6282,1252.9661,704.8643,1245.0316,710.699" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[54fcf25ad8c5f1d36e678e42d5bfd4cc]
40
reverse link urt_publisher_t to urt_topic_t--><path d="M818.8622,512.4531 C826.1684,512.4531 833.4747,512.4531 840.7809,512.4531 " fill="none" id="urt_publisher_t&lt;-urt_topic_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="805.7109,512.4531,811.7109,516.4531,817.7109,512.4531,811.7109,508.4531,805.7109,512.4531" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="813.7488" y="509.3708">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="825.1161" y="509.2321">1</text><!--MD5=[5025b4c4053b8e7c7ca8a657f09f21c0]
41
link urt_publisher_t to urt_message_t--><path d="M566.823,577.0622 C658.1356,615.6665 774.3976,664.8186 869.0644,704.841 " fill="none" id="urt_publisher_t-&gt;urt_message_t" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="873.8401,706.86,867.1083,699.6709,869.2348,704.9129,863.9929,707.0394,873.8401,706.86" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[6b2afc1defaa6ed5a86f99c07f8466dd]
42
reverse link urt_topic_t to urt_topic_t--><path d="M1237.0439,476.3703 C1251.3061,484.6063 1260,496.6339 1260,512.4531 C1260,532.3047 1246.309,546.1852 1225.1039,554.0949 " fill="none" id="urt_topic_t&lt;-urt_topic_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="1225.1039,470.8113,1228.855,476.97,1235.9826,475.8762,1232.2316,469.7175,1225.1039,470.8113" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="1232.7642" y="465.9637">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="1233.0767" y="552.5005">0..1</text><!--MD5=[ed3fb6de0913094c41bd74c175d366df]
43
reverse link urt_topic_t to urt_hrtsubscriber_t--><path d="M1177.7361,373.4498 C1204.5888,352.8434 1233.5161,333.6369 1263,318.9531 C1270.1417,315.3963 1272.5719,315.8476 1280.5,314.9531 C1325.7131,309.8517 2054.2869,309.8517 2099.5,314.9531 C2187.5516,324.888 2279.7005,349.4069 2363.8741,377.9215 " fill="none" id="urt_topic_t&lt;-urt_hrtsubscriber_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="1167.1558,381.7225,1174.3463,381.1778,1176.6091,374.331,1169.4186,374.8756,1167.1558,381.7225" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="1166.6804" y="370.8054">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="2321.0778" y="366.7847">0..1</text><!--MD5=[0b5167e958c0ed93ffc0c98ce399b54d]
44
reverse link urt_topic_t to urt_message_t--><path d="M1037.8766,656.3124 C1038.4682,673.7637 1039.051,690.9572 1039.5838,706.6751 " fill="none" id="urt_topic_t&lt;-urt_message_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1037.4341,643.2586,1033.6397,649.3907,1037.8408,655.2517,1041.6351,649.1196,1037.4341,643.2586" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="1029.4578" y="662.8962">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="1030.9221" y="695.6438">1</text><!--MD5=[05f2c35569573d3273c65d3342945557]
45
reverse link urt_service_t to urt_service_t--><path d="M7693.2128,481.5207 C7707.5894,489.3534 7716,499.6642 7716,512.4531 C7716,528.5019 7702.7552,540.6483 7681.0965,548.8921 " fill="none" id="urt_service_t&lt;-urt_service_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="7681.0965,476.0141,7684.9038,482.1382,7692.0211,480.9792,7688.2139,474.8551,7681.0965,476.0141" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="7689.2006" y="471.9202">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="7689.4131" y="546.734">0..1</text><!--MD5=[586e61fedafd54ae7ea71cebd9f9032a]
46
reverse link urt_service_t to urt_servicefunc_t--><path d="M7380,628.6021 C7380,672.1798 7380,718.1821 7380,747.426 " fill="none" id="urt_service_t&lt;-urt_servicefunc_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="7380,615.4823,7376,621.4823,7380,627.4823,7384,621.4823,7380,615.4823" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="7371.7188" y="635.3376">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="7353.375" y="736.2104">0..1</text><!--MD5=[694e7400eb99f74d44ea388aed89d199]
47
reverse link urt_core_t to urt_node_t--><path d="M6178,324.3176 C6178,348.6799 6178,373.5026 6178,396.7874 " fill="none" id="urt_core_t&lt;-urt_node_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="6178,311.2384,6174,317.2384,6178,323.2384,6182,317.2384,6178,311.2384" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="6169.8063" y="330.5231">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="6153.2313" y="385.9598">0..1</text><!--MD5=[250695c91040478b50550bc37a8775c7]
48
reverse link urt_core_t to urt_topic_t--><path d="M5993.0393,172.1608 C5124.9701,182.9541 1487.6328,233.1507 1263,318.9531 C1225.5865,333.2438 1189.9335,356.358 1158.3481,381.7206 " fill="none" id="urt_core_t&lt;-urt_topic_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="6006.2383,171.9971,6000.1891,168.0719,5994.2392,172.1461,6000.2884,176.0713,6006.2383,171.9971" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="5990.2741" y="168.8271">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="1140.901" y="370.8034">0..1</text><!--MD5=[8d0a227ec56585cdbc167f8316b34b64]
49
reverse link urt_core_t to urt_service_t--><path d="M6362.9198,179.6079 C6547.455,194.0869 6836.517,230.0497 7071,318.9531 C7130.0371,341.3368 7189.981,375.6553 7241.1616,409.2093 " fill="none" id="urt_core_t&lt;-urt_service_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="6349.8161,178.6021,6355.4923,183.0496,6361.7809,179.5206,6356.1047,175.0731,6349.8161,178.6021" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="6357.2333" y="175.7271">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="7206.5558" y="398.5063">0..1</text><!--MD5=[8d087f1e7d37a6be8f03d7a9a644bbe9]
50
@startuml
51

    
52
title **µRtWare**
53

    
54

    
55

    
56

    
57

    
58

    
59

    
60

    
61

    
62

    
63

    
64

    
65

    
66
  class urt_core_t <<S,BFAFFF>> {
67
  - {field} {static} _nodes : urt_node_t*
68
  - {field} {static} _evtSource : urt_osEventSource_t
69
  - {field} {static} _lock : urt_osMutex_t
70
  - {field} {static} _status : urt_status_t
71
  .. URT_CFG_PUBSUB_ENABLED == true ..
72
  - {field} {static} _topics : urt_topic_t*
73
  .. URT_CFG_RPC_ENABLED == true ..
74
  - {field} {static} _services : urt_service_t*
75
  __
76
  + {method} urtCoreInit (void) : void
77
  + {method} urtCoreGetStatus (void) : urt_status_t
78
  + {method} urtCoreStartNodes (void) : void
79
  + {method} urtCoreSynchronize (node : urt_node_t*) : urt_status_t
80
  + {method} urtCoreStopNodes (reason : urt_status_t) : urt_status_t
81
  .. URT_CFG_PUBSUB_ENABLED == true ..
82
  + {method} urtCoreGetTopic (id : urt_topicid_t) : urt_topic_t*
83
  .. URT_CFG_RPC_ENABLED == true ..
84
  + {method} urtCoreGetService (id : urt_serviceid_t) : urt_service_t*
85
}
86

    
87
  package "node" <<Rectangle>> {
88
    class urt_nodeSetupCallback_t <<T,00CFFF>> {
89
    urt_nodeSetupCallback_t (node : urt_node_t*, arg : void*) : urt_osEventMask_t
90
  }
91

    
92
    class urt_nodeLoopCallback_t <<T,00CFFF>> {
93
    urt_nodeLoopCallback_t (node : urt_node_t*, events : urt_osEventMask_t, arg : void*) : urt_osEventMask_t
94
  }
95

    
96
    class urt_nodeShutdownCallback_t <<T,00CFFF>> {
97
    urt_nodeShutdownCallback_t (node : urt_node_t*, cause : urt_status_t, arg : void*) : void
98
  }
99

    
100
    class urt_node_t <<S,BFAFFF>> {
101
    + {field} next : urt_node_t*
102
    + {field} thread : urt_osThread_t*
103
    + {field} setupcallback : urt_nodeSetupCallback_t*
104
    + {field} setupparams : void*
105
    + {field} loopcallback : urt_nodeLoopCallback_t*
106
    + {field} loopparams : void*
107
    + {field} shutdowncallback : urt_nodeShutdownCallback_t*
108
    + {field} shutdownparams : void*
109
    + {field} stage : urt_nodestage_t
110
    + {field} listener : urt_osEventListener_t
111
    .. URT_CFG_PUBSUB_PROFILING == true || URT_CFG_RPC_PROFILING = true ..
112
    + {field} loops : uint64_t
113
    __
114
    - {method} {static} _main : urt_osThreadFunction_t
115
    + {method} urtNodeInit (node : urt_node_t*, thread : urt_osThread_t*, setupcallback : urt_nodeSetupCallback_t*, setupparams : void*, loopcallback : urt_nodeLoopCallback_t*, loopparams : void*, shutdowncallback : urt_nodeShutdownCallback_t*, shutodwnparams : void*) : void
116
  }
117
} 
118

    
119
  package "Publish-Subscribe System" <<Node>> {
120

    
121
  class urt_message_t <<S,BFAFFF>> {
122
  + {field} next : urt_message_t*
123
  + {field} payload : void*
124
  + {field} originTime : urt_osTime_t
125
  + {field} numHrtConsumersLeft : unsigned int
126
  .. URT_CFG_PUBSUB_PROFILING == true ..
127
  + {field} numConsumersLeft : unsigned int
128
  __
129
  + {method} urtMessageInit (message : urt_message_t*, payload : void*) : void
130
}
131

    
132
  package "subscriber" <<Rectangle>> {
133
    class urt_basesubscriber_t <<S,BFAFFF>> {
134
    + {field} topic : urt_topic_t*
135
    + {field} evtListener : urt_osEventListener_t
136
    + {field} lastMessage : urt_message_t*
137
    + {field} lastMessageTime : urt_osTime_t
138
    .. URT_CFG_PUBSUB_PROFILING == true ..
139
    + {field} sumLatencies : uint64_t
140
    + {field} numMessagesReceived : uint64_t
141
  }
142

    
143
    class urt_srtusefulnessfunc_t <<F,E0E0E0>> {
144
    urt_srtusefulnessfunc_t (dt : urt_delay_t, params : void*) : float
145
  }
146

    
147
    class urt_nrtsubscriber_t <<S,BFAFFF>> {
148
    .. URT_CFG_PUBSUB_PROFILING == true ..
149
    + {field} minLatency : urt_delay_t
150
    + {field} maxLatency : urt_delay_t
151
    __
152
    + {method} urtNrtSubscriberInit (subscriber : urt_nrtsubscriber_t*) : void
153
    + {method} urtNrtSubscriberSubscribe (subscriber : urt_nrtsubscriber_t*, topic : urt_topic_t*, messages : urt_message_t*) : urt_status_t
154
    + {method} urtNrtSubscriberFetchNextMessage (subscriber : urt_nrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t
155
    + {method} urtNrtSubscriberFetchLatestMessage (subscriber : urt_nrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t
156
    + {method} urtNrtSubscriberUnsubscribe (subscriber : urt_nrtsubscriber_t*) : urt_status_t
157
  }
158

    
159
    class urt_srtsubscriber_t <<S,BFAFFF>> {
160
    + {field} usefulnesscb : urt_srtusefulnessfunc_t*
161
    + {field} cbparams : void*
162
    .. URT_CFG_PUBSUB_PROFILING == true ..
163
    + {field} minLatency : urt_delay_t
164
    + {field} maxLatency : urt_delay_t
165
    __
166
    + {method} urtSrtSubscriberInit (subscriber : urt_srtsubscriber_t*) : void
167
    + {method} urtSrtSubscriberSubscribe (subscriber : urt_srtsubscriber_t*, topic : urt_topic_t*, messages : urt_message_t*, usefulnesscb : urt_srtusefulnessfunc_t*, cbparams : void*) : urt_status_t
168
    + {method} urtSrtSubscriberFetchNextMessage (subscriber : urt_srtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t
169
    + {method} urtSrtSubscriberFetchLatestMessage (subscriber : urt_srtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t
170
    + {method} urtSrtSubscriberCalculateUsefulness (subscriber : urt_srtsubscriber_t*, latency : urt_delay_t) : float
171
    + {method} urtSrtSubscriberUnsubscribe (subscriber : urt_srtsubscriber_t*) : urt_status_t
172
  }
173

    
174
    class urt_frtsubscriber_t <<S,BFAFFF>> {
175
    .. URT_CFG_PUBSUB_QOS_DEADLINECHECKS == true ..
176
    + {field} deadlineOffset : urt_delay_t
177
    .. URT_CFG_PUBSUB_QOS_JITTERCHECKS == true ..
178
    + {field} maxJitter : urt_delay_t
179
    .. URT_CFG_PUBSUB_QOS_JITTERCHECKS == true ||  URT_CFG_PUBSUB_PROFILING == true ..
180
    + {field} minLatency : urt_delay_t
181
    + {field} maxLatency : urt_delay_t
182
    __
183
    + {method} urtFrtSubscriberInit (subscriber : urt_frtsubscriber_t*) : void
184
    + {method} urtFrtSubscriberSubscribe (subscriber : urt_frtsubscriber_t*, topic : urt_topic_t*, messages : urt_message_t*, deadline : urt_delay_t, jitter : urt_delay_t) : urt_status_t
185
    + {method} urtFrtSubscriberFetchNextMessage (subscriber : urt_frtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t
186
    + {method} urtFrtSubscriberFetchLatestMessage (subscriber : urt_frtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t
187
    + {method} urtFrtSubscriberCalculateValidity (subscriber : urt_frtsubscriber_t*, latency : urt_delay_t) : bool
188
    + {method} urtFrtSubscriberUnsubscribe (subscriber : urt_frtsubscriber_t*) : urt_status_t
189
  }
190

    
191
    class urt_hrtsubscriber_t <<S,BFAFFF>> {
192
    + {field} next : urt_hrtsubscriber_t*
193
    .. URT_CFG_PUBSUB_QOS_DEADLINECHECKS == true ..
194
    + {field} deadlineOffset : urt_delay_t
195
    + {field} qosDeadlineTimer : urt_osTimer_t
196
    .. URT_CFG_PUBSUB_QOS_JITTERCHECKS == true ..
197
    + {field} maxJitter : urt_delay_t
198
    .. URT_CFG_PUBSUB_QOS_JITTERCHECKS == true || URT_CFG_PUBSUB_PROFILING == true..
199
    + {field} minLatency : urt_delay_t
200
    + {field} maxLatency : urt_delay_t
201
    .. URT_CFG_PUBSUB_QOS_RATECHECKS == true ..
202
    + {field} expectedRate : urt_delay_t
203
    __
204
    + {method} urtHrtSubscriberInit (subscriber : urt_hrtsubscriber_t*) : void
205
    + {method} urtHrtSubscriberSubscribe (subscriber : urt_hrtsubscriber_t*, topic : urt_topic_t*, messages : urt_message_t*, deadline : urt_delay_t, rate : urt_delay_t, jitter : urt_delay_t) : urt_status_t
206
    + {method} urtHrtSubscriberFetchNextMessage (subscriber : urt_hrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t
207
    + {method} urtHrtSubscriberFetchLatestMessage (subscriber : urt_hrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t
208
    + {method} urtHrtSubscriberUnsubscribe (subscriber : urt_hrtsubscriber_t*) : urt_status_t
209
  }
210
} 
211

    
212
  class urt_publisher_t <<S,BFAFFF>> {
213
  + {field} topic : urt_topic_t*
214
  .. URT_CFG_PUBSUB_PROFILING == true ..
215
  + {field} publishAttempts : uint64_t
216
  + {field} publishFails : uint64_t
217
  __
218
  + {method} urtPublisherInit (publisher : urt_publisher_t*, topic : urt_topic_t*, messages : urt_message_t*) : void
219
  + {method} urtPublisherPublish (publisher : urt_publisher_t*, payload : void*, bytes : size_t, t : urt_osTime_t, timeout : urt_delay_t) : urt_status_t
220
}
221

    
222
  class urt_topic_t <<S,BFAFFF>> {
223
  + {field} next : urt_topic_t*
224
  + {field} id : urt_topicid_t
225
  + {field} lock : urt_osMutex_t
226
  + {field} evtSource : urt_osEventSource_t
227
  + {field} numHrtSubscribers : unsigned int
228
  + {field} hrtReleased : urt_osCondvar_t
229
  + {field} mandatoryMessage : urt_message_t
230
  + {field} latestMessage : urt_message_t*
231
  .. URT_CFG_PUBSUB_QOS_RATECHECKS == true ..
232
  + {field} hrtSubscribers : urt_hrtsubscriber_t*
233
  + {field} qosRateTimer : urt_osTimer_t
234
  .. URT_CFG_PUBSUB_PROFILING == true ..
235
  + {field} numMessagesPublished : uint64_t
236
  + {field} numMessagesDiscarded : uint64_t
237
  + {field} numSubscribers : unsigned int
238
  __
239
  + {method} urtTopicInit (topic : urt_topic_t*, id : urt_topicid_t) : urt_status_t
240
}
241

    
242
}
243

    
244
  package "Remote Procedure Call System" <<Node>> {
245

    
246
  class urt_servicefunc_t <<F,E0E0E0>> {
247
  urt_servicefunc_t (arg : void*, ret : void*, timeout : urt_delay_t) : urt_status_t
248
}
249

    
250
  class urt_service_t <<S,BFAFFF>> {
251
  + {field} next : urt_service_t*
252
  + {field} id : urt_serviceid_t
253
  + {field} lock : urt_osMutex_t
254
  + {field} callback : urt_servicefunc_t*
255
  .. URT_CFG_RPC_PROFILING == true ..
256
  + {field} sumDurations : uint64_t
257
  + {field} numCalls : uint64_t
258
  + {field} numTimeouts : uint64_t
259
  + {field} minDuration : urt_delay_t
260
  + {field} maxDuration : urt_delay_t
261
  __
262
  + {method} urtServiceInit(service : urt_service_t*, id : urt_serviceid_t, callback : urt_servicefunc_t*) : urt_status_t
263
  + {method} urtServiceCall(service : urt_service_t*, arg : void*, ret : void*, timeout : urt_delay_t) : urt_status_t
264
}
265

    
266
}
267

    
268

    
269

    
270

    
271
urt_node_t "1" o- - "0..1" urt_node_t
272
urt_node_t "1" o- - "0..1" urt_nodeSetupCallback_t
273
urt_node_t <.. urt_nodeSetupCallback_t
274
urt_node_t "1" o- - "1" urt_nodeLoopCallback_t
275
urt_node_t <.. urt_nodeLoopCallback_t
276
urt_node_t "1" o- - "0..1" urt_nodeShutdownCallback_t
277
urt_node_t <.. urt_nodeShutdownCallback_t
278

    
279

    
280
urt_message_t "1" o- - "0..1" urt_message_t
281

    
282
urt_nrtsubscriber_t - -|> urt_basesubscriber_t
283
urt_nrtsubscriber_t ..> urt_message_t
284

    
285
urt_srtsubscriber_t - -|> urt_basesubscriber_t
286
urt_srtsubscriber_t "1" o- - "0..1" urt_srtusefulnessfunc_t
287
urt_srtsubscriber_t ..> urt_message_t
288

    
289
urt_frtsubscriber_t - -|> urt_basesubscriber_t
290
urt_frtsubscriber_t ..> urt_message_t
291

    
292
urt_hrtsubscriber_t - -|> urt_basesubscriber_t
293
urt_hrtsubscriber_t "1" o- - "0..1" urt_hrtsubscriber_t
294
urt_hrtsubscriber_t ..> urt_message_t
295

    
296
urt_publisher_t "1" o- "1" urt_topic_t
297
urt_publisher_t ..> urt_message_t
298

    
299
urt_topic_t "1" o- - "0..1" urt_topic_t
300
urt_topic_t "1" o- "0..1" urt_hrtsubscriber_t
301
urt_topic_t "1" *- - "1" urt_message_t
302

    
303

    
304

    
305
urt_service_t "1" o- - "0..1" urt_service_t
306
urt_service_t "1" o- - "0..1" urt_servicefunc_t
307

    
308

    
309
urt_core_t "1" o- - "0..1" urt_node_t
310
urt_core_t "1" *- - "0..1" urt_topic_t
311
urt_core_t "1" *- - "0..1" urt_service_t
312

    
313

    
314

    
315
@enduml
316

    
317
PlantUML version 1.2020.00(Sat Jan 11 13:30:53 CET 2020)
318
(GPL source distribution)
319
Java Runtime: OpenJDK Runtime Environment
320
JVM: OpenJDK 64-Bit Server VM
321
Java Version: 11.0.6+10-post-Ubuntu-1ubuntu118.04.1
322
Operating System: Linux
323
Default Encoding: UTF-8
324
Language: en
325
Country: US
326
--></g></svg>