Statistics
| Branch: | Revision:

urtware / doc / classdiagrams / urtware.svg @ e87bd7c7

History | View | Annotate | Download (95.908 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:7708px;height:872px;" version="1.1" viewBox="0 0 7708 872" width="7708px" zoomAndPan="magnify"><defs><filter height="300%" id="fqetkmfi9z8qk" 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="3812" y="16.708">µRtWare</text><!--MD5=[b9de0669a29c7bc934fd916b09c39491]
2
cluster node--><rect fill="#FFFFFF" filter="url(#fqetkmfi9z8qk)" height="446.5" style="stroke: #000000; stroke-width: 1.5;" width="1674" x="5368" y="369.9531"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="40" x="6185" y="384.9482">node</text><!--MD5=[d74e2ef346f73688f9378f6d3d42598c]
3
cluster Publish-Subscribe System--><polygon fill="#FFFFFF" filter="url(#fqetkmfi9z8qk)" points="14,328.9531,24,318.9531,5357,318.9531,5357,850.9531,5347,860.9531,14,860.9531,14,328.9531" style="stroke: #000000; stroke-width: 1.5;"/><line style="stroke: #000000; stroke-width: 1.5;" x1="5347" x2="5356" y1="328.9531" y2="319.9531"/><line style="stroke: #000000; stroke-width: 1.5;" x1="14" x2="5347" y1="328.9531" y2="328.9531"/><line style="stroke: #000000; stroke-width: 1.5;" x1="5347" x2="5347" y1="328.9531" y2="860.9531"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="205" x="2579" y="344.9482">Publish-Subscribe System</text><!--MD5=[16a3bbbe805f94d6e6ce317c08ab945e]
4
cluster subscriber--><rect fill="#FFFFFF" filter="url(#fqetkmfi9z8qk)" height="502" style="stroke: #000000; stroke-width: 1.5;" width="4102" x="1247" y="350.9531"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="85" x="3255.5" y="365.9482">subscriber</text><!--MD5=[810d0f07e53ef611b6d803ef30301147]
5
cluster Remote Procedure Call System--><polygon fill="#FFFFFF" filter="url(#fqetkmfi9z8qk)" points="7050,379.4531,7060,369.4531,7686,369.4531,7686,806.4531,7676,816.4531,7050,816.4531,7050,379.4531" style="stroke: #000000; stroke-width: 1.5;"/><line style="stroke: #000000; stroke-width: 1.5;" x1="7676" x2="7685" y1="379.4531" y2="370.4531"/><line style="stroke: #000000; stroke-width: 1.5;" x1="7050" x2="7676" y1="379.4531" y2="379.4531"/><line style="stroke: #000000; stroke-width: 1.5;" x1="7676" x2="7676" y1="379.4531" y2="816.4531"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="244" x="7242" y="395.4482">Remote Procedure Call System</text><!--MD5=[a7dea26996a1231aa68629b332780450]
6
class urt_nodeSetupCallback_t--><rect fill="#FEFECE" filter="url(#fqetkmfi9z8qk)" height="60.8047" id="urt_nodeSetupCallback_t" style="stroke: #A80036; stroke-width: 1.5;" width="456" x="5929" y="747.4531"/><ellipse cx="6074.75" cy="763.4531" fill="#00CFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M6075.5938,770.2031 L6073.1406,770.2031 L6073.1406,759.9531 L6070,759.9531 L6070,757.8125 L6078.7344,757.8125 L6078.7344,759.9531 L6075.5938,759.9531 L6075.5938,770.2031 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="156" x="6095.25" y="767.6074">urt_nodeSetupCallback_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="5930" x2="6384" y1="779.4531" y2="779.4531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="5930" x2="6384" y1="787.4531" y2="787.4531"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="444" x="5935" 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(#fqetkmfi9z8qk)" height="60.8047" id="urt_nodeLoopCallback_t" style="stroke: #A80036; stroke-width: 1.5;" width="614" x="6420" y="747.4531"/><ellipse cx="6648.25" cy="763.4531" fill="#00CFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M6649.0938,770.2031 L6646.6406,770.2031 L6646.6406,759.9531 L6643.5,759.9531 L6643.5,757.8125 L6652.2344,757.8125 L6652.2344,759.9531 L6649.0938,759.9531 L6649.0938,770.2031 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="149" x="6668.75" y="767.6074">urt_nodeLoopCallback_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="6421" x2="7033" y1="779.4531" y2="779.4531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="6421" x2="7033" y1="787.4531" y2="787.4531"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="602" x="6426" 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(#fqetkmfi9z8qk)" height="60.8047" id="urt_nodeShutdownCallback_t" style="stroke: #A80036; stroke-width: 1.5;" width="518" x="5376" y="747.4531"/><ellipse cx="5540.25" cy="763.4531" fill="#00CFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M5541.0938,770.2031 L5538.6406,770.2031 L5538.6406,759.9531 L5535.5,759.9531 L5535.5,757.8125 L5544.2344,757.8125 L5544.2344,759.9531 L5541.0938,759.9531 L5541.0938,770.2031 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="181" x="5560.75" y="767.6074">urt_nodeShutdownCallback_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="5377" x2="5893" y1="779.4531" y2="779.4531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="5377" x2="5893" y1="787.4531" y2="787.4531"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="506" x="5382" 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(#fqetkmfi9z8qk)" height="231.2656" id="urt_node_t" style="stroke: #A80036; stroke-width: 1.5;" width="1586" x="5376" y="396.9531"/><ellipse cx="6131.25" cy="412.9531" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M6130.7344,413.5156 Q6128.875,412.8125 6128.2188,412.0469 Q6127.5781,411.2656 6127.5781,409.9531 Q6127.5781,408.2656 6128.6563,407.2969 Q6129.7344,406.3281 6131.6094,406.3281 Q6132.4688,406.3281 6133.3125,406.5313 Q6134.1719,406.7188 6135.0156,407.1094 L6135.0156,409.5 Q6134.2344,408.9375 6133.4063,408.6563 Q6132.5938,408.3594 6131.7969,408.3594 Q6130.9219,408.3594 6130.4375,408.7188 Q6129.9688,409.0781 6129.9688,409.7344 Q6129.9688,410.25 6130.3125,410.5938 Q6130.6563,410.9219 6131.75,411.3281 L6132.8125,411.7344 Q6134.2969,412.2813 6135,413.1875 Q6135.7188,414.0938 6135.7188,415.4688 Q6135.7188,417.3438 6134.6094,418.2656 Q6133.5,419.1875 6131.25,419.1875 Q6130.3281,419.1875 6129.4063,418.9688 Q6128.4844,418.75 6127.625,418.3281 L6127.625,415.7969 Q6128.5938,416.4844 6129.5156,416.8281 Q6130.4375,417.1719 6131.3281,417.1719 Q6132.2344,417.1719 6132.7344,416.7656 Q6133.2344,416.3438 6133.2344,415.6094 Q6133.2344,415.0469 6132.8906,414.6406 Q6132.5625,414.2188 6131.9375,413.9688 L6130.7344,413.5156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="67" x="6151.75" y="417.1074">urt_node_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="5377" x2="6961" y1="428.9531" y2="428.9531"/><ellipse cx="5387" 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="5396" y="443.1636">next : urt_node_t*</text><ellipse cx="5387" 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="5396" y="455.9683">thread : urt_osThread_t*</text><ellipse cx="5387" 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="5396" y="468.7729">setupcallback : urt_nodeSetupCallback_t*</text><ellipse cx="5387" 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="5396" y="481.5776">setupparams : void*</text><ellipse cx="5387" 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="5396" y="494.3823">loopcallback : urt_nodeLoopCallback_t*</text><ellipse cx="5387" 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="5396" y="507.187">loopparams : void*</text><ellipse cx="5387" 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="5396" y="519.9917">shutdowncallback : urt_nodeShutdownCallback_t*</text><ellipse cx="5387" 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="5396" y="532.7964">shutdownparams : void*</text><ellipse cx="5387" 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="5396" y="545.6011">stage : urt_nodestage_t</text><ellipse cx="5387" 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="5396" y="558.4058">listener : urt_osEventListener_t</text><ellipse cx="5387" 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="5396" y="588.0151">loops : uint64_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="5377" x2="5961" y1="571.4023" y2="571.4023"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="416" x="5961" 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="6377" x2="6961" y1="571.4023" y2="571.4023"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="5377" x2="6961" y1="594.6094" y2="594.6094"/><rect fill="#F24D5C" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="5384" y="602.6094"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" text-decoration="underline" textLength="179" x="5396" y="608.8198">_main : urt_osThreadFunction_t</text><ellipse cx="5387" 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="1560" x="5396" 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*) : urt_status_t</text><!--MD5=[e602aa6d45f270ad04f88c9ca5352b33]
10
class urt_message_t--><rect fill="#FEFECE" filter="url(#fqetkmfi9z8qk)" height="141.6328" id="urt_message_t" style="stroke: #A80036; stroke-width: 1.5;" width="451" x="770.5" y="706.9531"/><ellipse cx="945.75" cy="722.9531" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M945.2344,723.5156 Q943.375,722.8125 942.7188,722.0469 Q942.0781,721.2656 942.0781,719.9531 Q942.0781,718.2656 943.1563,717.2969 Q944.2344,716.3281 946.1094,716.3281 Q946.9688,716.3281 947.8125,716.5313 Q948.6719,716.7188 949.5156,717.1094 L949.5156,719.5 Q948.7344,718.9375 947.9063,718.6563 Q947.0938,718.3594 946.2969,718.3594 Q945.4219,718.3594 944.9375,718.7188 Q944.4688,719.0781 944.4688,719.7344 Q944.4688,720.25 944.8125,720.5938 Q945.1563,720.9219 946.25,721.3281 L947.3125,721.7344 Q948.7969,722.2813 949.5,723.1875 Q950.2188,724.0938 950.2188,725.4688 Q950.2188,727.3438 949.1094,728.2656 Q948,729.1875 945.75,729.1875 Q944.8281,729.1875 943.9063,728.9688 Q942.9844,728.75 942.125,728.3281 L942.125,725.7969 Q943.0938,726.4844 944.0156,726.8281 Q944.9375,727.1719 945.8281,727.1719 Q946.7344,727.1719 947.2344,726.7656 Q947.7344,726.3438 947.7344,725.6094 Q947.7344,725.0469 947.3906,724.6406 Q947.0625,724.2188 946.4375,723.9688 L945.2344,723.5156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="92" x="966.25" y="727.1074">urt_message_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="771.5" x2="1220.5" y1="738.9531" y2="738.9531"/><ellipse cx="781.5" 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="790.5" y="753.1636">next : urt_message_t*</text><ellipse cx="781.5" 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="790.5" y="765.9683">payload : void*</text><ellipse cx="781.5" 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="790.5" y="778.7729">originTime : urt_osTime_t</text><ellipse cx="781.5" 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="790.5" y="791.5776">numHrtConsumersLeft : unsigned int</text><ellipse cx="781.5" 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="790.5" y="821.187">numConsumersLeft : unsigned int</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="771.5" x2="887.5" y1="804.5742" y2="804.5742"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="217" x="887.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="1104.5" x2="1220.5" y1="804.5742" y2="804.5742"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="771.5" x2="1220.5" y1="827.7813" y2="827.7813"/><ellipse cx="781.5" 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="425" x="790.5" y="841.9917">urtMessageInit (message : urt_message_t*, payload : void*) : urt_status_t</text><!--MD5=[2ac85a9c1cceb8bb0c9045edc105e6e3]
11
class urt_publisher_t--><rect fill="#FEFECE" filter="url(#fqetkmfi9z8qk)" height="128.8281" id="urt_publisher_t" style="stroke: #A80036; stroke-width: 1.5;" width="759" x="22.5" y="447.9531"/><ellipse cx="351.25" cy="463.9531" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M350.7344,464.5156 Q348.875,463.8125 348.2188,463.0469 Q347.5781,462.2656 347.5781,460.9531 Q347.5781,459.2656 348.6563,458.2969 Q349.7344,457.3281 351.6094,457.3281 Q352.4688,457.3281 353.3125,457.5313 Q354.1719,457.7188 355.0156,458.1094 L355.0156,460.5 Q354.2344,459.9375 353.4063,459.6563 Q352.5938,459.3594 351.7969,459.3594 Q350.9219,459.3594 350.4375,459.7188 Q349.9688,460.0781 349.9688,460.7344 Q349.9688,461.25 350.3125,461.5938 Q350.6563,461.9219 351.75,462.3281 L352.8125,462.7344 Q354.2969,463.2813 355,464.1875 Q355.7188,465.0938 355.7188,466.4688 Q355.7188,468.3438 354.6094,469.2656 Q353.5,470.1875 351.25,470.1875 Q350.3281,470.1875 349.4063,469.9688 Q348.4844,469.75 347.625,469.3281 L347.625,466.7969 Q348.5938,467.4844 349.5156,467.8281 Q350.4375,468.1719 351.3281,468.1719 Q352.2344,468.1719 352.7344,467.7656 Q353.2344,467.3438 353.2344,466.6094 Q353.2344,466.0469 352.8906,465.6406 Q352.5625,465.2188 351.9375,464.9688 L350.7344,464.5156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="93" x="371.75" y="468.1074">urt_publisher_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="23.5" x2="780.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="293.5" y1="507.1602" y2="507.1602"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="217" x="293.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="510.5" x2="780.5" y1="507.1602" y2="507.1602"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="23.5" x2="780.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="617" x="42.5" y="557.3823">urtPublisherInit (publisher : urt_publisher_t*, topic : urt_topic_t*, messages : urt_message_t*) : urt_status_t</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="733" x="42.5" y="570.187">urtPublisherPublish (publisher : urt_publisher_t*, payload : void*, n : 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(#fqetkmfi9z8qk)" height="248.0703" id="urt_topic_t" style="stroke: #A80036; stroke-width: 1.5;" width="384" x="817" y="388.4531"/><ellipse cx="971.75" cy="404.4531" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M971.2344,405.0156 Q969.375,404.3125 968.7188,403.5469 Q968.0781,402.7656 968.0781,401.4531 Q968.0781,399.7656 969.1563,398.7969 Q970.2344,397.8281 972.1094,397.8281 Q972.9688,397.8281 973.8125,398.0313 Q974.6719,398.2188 975.5156,398.6094 L975.5156,401 Q974.7344,400.4375 973.9063,400.1563 Q973.0938,399.8594 972.2969,399.8594 Q971.4219,399.8594 970.9375,400.2188 Q970.4688,400.5781 970.4688,401.2344 Q970.4688,401.75 970.8125,402.0938 Q971.1563,402.4219 972.25,402.8281 L973.3125,403.2344 Q974.7969,403.7813 975.5,404.6875 Q976.2188,405.5938 976.2188,406.9688 Q976.2188,408.8438 975.1094,409.7656 Q974,410.6875 971.75,410.6875 Q970.8281,410.6875 969.9063,410.4688 Q968.9844,410.25 968.125,409.8281 L968.125,407.2969 Q969.0938,407.9844 970.0156,408.3281 Q970.9375,408.6719 971.8281,408.6719 Q972.7344,408.6719 973.2344,408.2656 Q973.7344,407.8438 973.7344,407.1094 Q973.7344,406.5469 973.3906,406.1406 Q973.0625,405.7188 972.4375,405.4688 L971.2344,405.0156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="66" x="992.25" y="408.6074">urt_topic_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="818" x2="1200" y1="420.4531" y2="420.4531"/><ellipse cx="828" cy="431.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="101" x="837" y="434.6636">next : urt_topic_t*</text><ellipse cx="828" cy="444.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="91" x="837" y="447.4683">id : urt_topicid_t</text><ellipse cx="828" cy="457.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="837" y="460.2729">lock : urt_osMutex_t</text><ellipse cx="828" cy="469.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="186" x="837" y="473.0776">evtSource : urt_osEventSource_t</text><ellipse cx="828" cy="482.6719" 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="837" y="485.8823">numHrtSubscribers : unsigned int</text><ellipse cx="828" cy="495.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="212" x="837" y="498.687">hrtSubscribers : urt_hrtsubscriber_t*</text><ellipse cx="828" cy="508.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="173" x="837" y="511.4917">hrtReleased : urt_osCondvar_t</text><ellipse cx="828" cy="521.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="209" x="837" y="524.2964">mandatoryMessage : urt_message_t</text><ellipse cx="828" cy="533.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="186" x="837" y="537.1011">latestMessage : urt_message_t*</text><ellipse cx="828" cy="563.5" 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="837" y="566.7104">qosRateTimer : urt_osTimer_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="818" x2="876.5" y1="550.0977" y2="550.0977"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="265" x="876.5" y="553.4058">URT_CFG_PUBSUB_QOS_RATECHECKS == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1141.5" x2="1200" y1="550.0977" y2="550.0977"/><ellipse cx="828" cy="593.1094" 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="837" y="596.3198">numDiscardedMessages : uint64_t</text><ellipse cx="828" cy="605.9141" 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="837" y="609.1245">numSubscribers : unsigned int</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="818" x2="900.5" y1="579.707" y2="579.707"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="217" x="900.5" y="583.0151">URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1117.5" x2="1200" y1="579.707" y2="579.707"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="818" x2="1200" y1="615.7188" y2="615.7188"/><ellipse cx="828" cy="626.7188" 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="837" y="629.9292">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(#fqetkmfi9z8qk)" height="133.6328" id="urt_basesubscriber_t" style="stroke: #A80036; stroke-width: 1.5;" width="225" x="3081.5" y="710.9531"/><ellipse cx="3123.95" cy="726.9531" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M3123.4344,727.5156 Q3121.575,726.8125 3120.9188,726.0469 Q3120.2781,725.2656 3120.2781,723.9531 Q3120.2781,722.2656 3121.3563,721.2969 Q3122.4344,720.3281 3124.3094,720.3281 Q3125.1688,720.3281 3126.0125,720.5313 Q3126.8719,720.7188 3127.7156,721.1094 L3127.7156,723.5 Q3126.9344,722.9375 3126.1063,722.6563 Q3125.2938,722.3594 3124.4969,722.3594 Q3123.6219,722.3594 3123.1375,722.7188 Q3122.6688,723.0781 3122.6688,723.7344 Q3122.6688,724.25 3123.0125,724.5938 Q3123.3563,724.9219 3124.45,725.3281 L3125.5125,725.7344 Q3126.9969,726.2813 3127.7,727.1875 Q3128.4188,728.0938 3128.4188,729.4688 Q3128.4188,731.3438 3127.3094,732.2656 Q3126.2,733.1875 3123.95,733.1875 Q3123.0281,733.1875 3122.1063,732.9688 Q3121.1844,732.75 3120.325,732.3281 L3120.325,729.7969 Q3121.2938,730.4844 3122.2156,730.8281 Q3123.1375,731.1719 3124.0281,731.1719 Q3124.9344,731.1719 3125.4344,730.7656 Q3125.9344,730.3438 3125.9344,729.6094 Q3125.9344,729.0469 3125.5906,728.6406 Q3125.2625,728.2188 3124.6375,727.9688 L3123.4344,727.5156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="132" x="3144.05" y="731.1074">urt_basesubscriber_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3082.5" x2="3305.5" y1="742.9531" y2="742.9531"/><ellipse cx="3092.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="3101.5" y="757.1636">topic : urt_topic_t*</text><ellipse cx="3092.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="3101.5" y="769.9683">evtListener : urt_osEventListener_t</text><ellipse cx="3092.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="3101.5" y="782.7729">lastMessage : urt_message_t*</text><ellipse cx="3092.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="3101.5" y="795.5776">lastMessageTime : urt_osTime_t</text><ellipse cx="3092.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="3101.5" y="825.187">sumLatencies : uint64_t</text><ellipse cx="3092.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="3101.5" y="837.9917">numMessagesReceived : uint64_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="3082.5" x2="3085.5" y1="808.5742" y2="808.5742"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="217" x="3085.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="3302.5" x2="3305.5" y1="808.5742" y2="808.5742"/><!--MD5=[fc7708c915a0148c667d62e1370980fd]
14
class urt_srtusefulnessfunc_t--><rect fill="#FEFECE" filter="url(#fqetkmfi9z8qk)" height="60.8047" id="urt_srtusefulnessfunc_t" style="stroke: #A80036; stroke-width: 1.5;" width="374" x="4612" y="747.4531"/><ellipse cx="4721.25" cy="763.4531" fill="#E0E0E0" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M4725.4844,759.2188 L4720.2031,759.2188 L4720.2031,761.8906 L4725,761.8906 L4725,764.0469 L4720.2031,764.0469 L4720.2031,769.4531 L4717.7656,769.4531 L4717.7656,757.0625 L4725.4844,757.0625 L4725.4844,759.2188 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="147" x="4741.75" y="767.6074">urt_srtusefulnessfunc_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="4613" x2="4985" y1="779.4531" y2="779.4531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="4613" x2="4985" y1="787.4531" y2="787.4531"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="362" x="4618" 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(#fqetkmfi9z8qk)" height="154.4375" id="urt_nrtsubscriber_t" style="stroke: #A80036; stroke-width: 1.5;" width="821" x="1254.5" y="435.4531"/><ellipse cx="1601.25" cy="451.4531" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1600.7344,452.0156 Q1598.875,451.3125 1598.2188,450.5469 Q1597.5781,449.7656 1597.5781,448.4531 Q1597.5781,446.7656 1598.6563,445.7969 Q1599.7344,444.8281 1601.6094,444.8281 Q1602.4688,444.8281 1603.3125,445.0313 Q1604.1719,445.2188 1605.0156,445.6094 L1605.0156,448 Q1604.2344,447.4375 1603.4063,447.1563 Q1602.5938,446.8594 1601.7969,446.8594 Q1600.9219,446.8594 1600.4375,447.2188 Q1599.9688,447.5781 1599.9688,448.2344 Q1599.9688,448.75 1600.3125,449.0938 Q1600.6563,449.4219 1601.75,449.8281 L1602.8125,450.2344 Q1604.2969,450.7813 1605,451.6875 Q1605.7188,452.5938 1605.7188,453.9688 Q1605.7188,455.8438 1604.6094,456.7656 Q1603.5,457.6875 1601.25,457.6875 Q1600.3281,457.6875 1599.4063,457.4688 Q1598.4844,457.25 1597.625,456.8281 L1597.625,454.2969 Q1598.5938,454.9844 1599.5156,455.3281 Q1600.4375,455.6719 1601.3281,455.6719 Q1602.2344,455.6719 1602.7344,455.2656 Q1603.2344,454.8438 1603.2344,454.1094 Q1603.2344,453.5469 1602.8906,453.1406 Q1602.5625,452.7188 1601.9375,452.4688 L1600.7344,452.0156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="119" x="1621.75" y="455.6074">urt_nrtsubscriber_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1255.5" x2="2074.5" y1="467.4531" y2="467.4531"/><ellipse cx="1265.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="1274.5" y="498.4683">minLatency : urt_delay_t</text><ellipse cx="1265.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="1274.5" y="511.2729">maxLatency : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1255.5" x2="1556.5" y1="481.8555" y2="481.8555"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="217" x="1556.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="1773.5" x2="2074.5" y1="481.8555" y2="481.8555"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1255.5" x2="2074.5" y1="517.8672" y2="517.8672"/><ellipse cx="1265.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="392" x="1274.5" y="532.0776">urtNrtSubscriberInit (subscriber : urt_nrtsubscriber_t*) : urt_status_t</text><ellipse cx="1265.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="1274.5" y="544.8823">urtNrtSubscriberSubscribe (subscriber : urt_nrtsubscriber_t*, topic : urt_topic_t*, messages : urt_message_t*) : urt_status_t</text><ellipse cx="1265.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="1274.5" y="557.687">urtNrtSubscriberFetchNextMessage (subscriber : urt_nrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="1265.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="1274.5" y="570.4917">urtNrtSubscriberFetchLatestMessage (subscriber : urt_nrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="1265.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="1274.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(#fqetkmfi9z8qk)" height="192.8516" id="urt_srtsubscriber_t" style="stroke: #A80036; stroke-width: 1.5;" width="1084" x="4257" y="415.9531"/><ellipse cx="4735.75" cy="431.9531" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M4735.2344,432.5156 Q4733.375,431.8125 4732.7188,431.0469 Q4732.0781,430.2656 4732.0781,428.9531 Q4732.0781,427.2656 4733.1563,426.2969 Q4734.2344,425.3281 4736.1094,425.3281 Q4736.9688,425.3281 4737.8125,425.5313 Q4738.6719,425.7188 4739.5156,426.1094 L4739.5156,428.5 Q4738.7344,427.9375 4737.9063,427.6563 Q4737.0938,427.3594 4736.2969,427.3594 Q4735.4219,427.3594 4734.9375,427.7188 Q4734.4688,428.0781 4734.4688,428.7344 Q4734.4688,429.25 4734.8125,429.5938 Q4735.1563,429.9219 4736.25,430.3281 L4737.3125,430.7344 Q4738.7969,431.2813 4739.5,432.1875 Q4740.2188,433.0938 4740.2188,434.4688 Q4740.2188,436.3438 4739.1094,437.2656 Q4738,438.1875 4735.75,438.1875 Q4734.8281,438.1875 4733.9063,437.9688 Q4732.9844,437.75 4732.125,437.3281 L4732.125,434.7969 Q4733.0938,435.4844 4734.0156,435.8281 Q4734.9375,436.1719 4735.8281,436.1719 Q4736.7344,436.1719 4737.2344,435.7656 Q4737.7344,435.3438 4737.7344,434.6094 Q4737.7344,434.0469 4737.3906,433.6406 Q4737.0625,433.2188 4736.4375,432.9688 L4735.2344,432.5156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="118" x="4756.25" y="436.1074">urt_srtsubscriber_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="4258" x2="5340" y1="447.9531" y2="447.9531"/><ellipse cx="4268" 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="4277" y="462.1636">usefulnesscb : urt_srtusefulnessfunc_t*</text><ellipse cx="4268" 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="4277" y="474.9683">cbparams : void*</text><ellipse cx="4268" 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="4277" y="504.5776">minLatency : urt_delay_t</text><ellipse cx="4268" 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="4277" y="517.3823">maxLatency : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="4258" x2="4690.5" y1="487.9648" y2="487.9648"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="217" x="4690.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="4907.5" x2="5340" y1="487.9648" y2="487.9648"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="4258" x2="5340" y1="523.9766" y2="523.9766"/><ellipse cx="4268" 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="392" x="4277" y="538.187">urtSrtSubscriberInit (subscriber : urt_srtsubscriber_t*) : urt_status_t</text><ellipse cx="4268" 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="4277" 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="4268" 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="4277" y="563.7964">urtSrtSubscriberFetchNextMessage (subscriber : urt_srtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="4268" 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="4277" y="576.6011">urtSrtSubscriberFetchLatestMessage (subscriber : urt_srtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="4268" 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="4277" y="589.4058">urtSrtSubscriberCalculateUsefulness (subscriber : urt_srtsubscriber_t*, latency : urt_delay_t) : float</text><ellipse cx="4268" 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="4277" y="602.2104">urtSrtSubscriberUnsubscribe (subscriber : urt_srtsubscriber_t*) : urt_status_t</text><!--MD5=[17838fb05fe219fd399839979ec8a4a4]
17
class urt_frtsubscriber_t--><rect fill="#FEFECE" filter="url(#fqetkmfi9z8qk)" height="226.4609" id="urt_frtsubscriber_t" style="stroke: #A80036; stroke-width: 1.5;" width="974" x="3248" y="399.4531"/><ellipse cx="3673.25" cy="415.4531" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M3672.7344,416.0156 Q3670.875,415.3125 3670.2188,414.5469 Q3669.5781,413.7656 3669.5781,412.4531 Q3669.5781,410.7656 3670.6563,409.7969 Q3671.7344,408.8281 3673.6094,408.8281 Q3674.4688,408.8281 3675.3125,409.0313 Q3676.1719,409.2188 3677.0156,409.6094 L3677.0156,412 Q3676.2344,411.4375 3675.4063,411.1563 Q3674.5938,410.8594 3673.7969,410.8594 Q3672.9219,410.8594 3672.4375,411.2188 Q3671.9688,411.5781 3671.9688,412.2344 Q3671.9688,412.75 3672.3125,413.0938 Q3672.6563,413.4219 3673.75,413.8281 L3674.8125,414.2344 Q3676.2969,414.7813 3677,415.6875 Q3677.7188,416.5938 3677.7188,417.9688 Q3677.7188,419.8438 3676.6094,420.7656 Q3675.5,421.6875 3673.25,421.6875 Q3672.3281,421.6875 3671.4063,421.4688 Q3670.4844,421.25 3669.625,420.8281 L3669.625,418.2969 Q3670.5938,418.9844 3671.5156,419.3281 Q3672.4375,419.6719 3673.3281,419.6719 Q3674.2344,419.6719 3674.7344,419.2656 Q3675.2344,418.8438 3675.2344,418.1094 Q3675.2344,417.5469 3674.8906,417.1406 Q3674.5625,416.7188 3673.9375,416.4688 L3672.7344,416.0156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="115" x="3693.75" y="419.6074">urt_frtsubscriber_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3249" x2="4221" y1="431.4531" y2="431.4531"/><ellipse cx="3259" 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="3268" y="462.4683">deadlineOffset : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="3249" x2="3589.5" y1="445.8555" y2="445.8555"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="291" x="3589.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="3880.5" x2="4221" y1="445.8555" y2="445.8555"/><ellipse cx="3259" 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="3268" y="492.0776">maxJitter : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="3249" x2="3599.5" y1="475.4648" y2="475.4648"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="271" x="3599.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="3870.5" x2="4221" y1="475.4648" y2="475.4648"/><ellipse cx="3259" 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="3268" y="521.687">minLatency : urt_delay_t</text><ellipse cx="3259" 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="3268" y="534.4917">maxLatency : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="3249" x2="3481" y1="505.0742" y2="505.0742"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="508" x="3481" 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="3989" x2="4221" y1="505.0742" y2="505.0742"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="3249" x2="4221" y1="541.0859" y2="541.0859"/><ellipse cx="3259" 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="387" x="3268" y="555.2964">urtFrtSubscriberInit (subscriber : urt_frtsubscriber_t*) : urt_status_t</text><ellipse cx="3259" 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="3268" 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="3259" 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="3268" y="580.9058">urtFrtSubscriberFetchNextMessage (subscriber : urt_frtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="3259" 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="3268" y="593.7104">urtFrtSubscriberFetchLatestMessage (subscriber : urt_frtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="3259" 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="3268" y="606.5151">urtFrtSubscriberCalculateValidity (subscriber : urt_frtsubscriber_t*, latency : urt_delay_t) : bool</text><ellipse cx="3259" 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="3268" y="619.3198">urtFrtSubscriberUnsubscribe (subscriber : urt_frtsubscriber_t*) : urt_status_t</text><!--MD5=[104dc879e5721421b987fcc467bc3a1d]
18
class urt_hrtsubscriber_t--><rect fill="#FEFECE" filter="url(#fqetkmfi9z8qk)" height="268.875" id="urt_hrtsubscriber_t" style="stroke: #A80036; stroke-width: 1.5;" width="1084" x="2111" y="377.9531"/><ellipse cx="2589.25" cy="393.9531" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M2588.7344,394.5156 Q2586.875,393.8125 2586.2188,393.0469 Q2585.5781,392.2656 2585.5781,390.9531 Q2585.5781,389.2656 2586.6563,388.2969 Q2587.7344,387.3281 2589.6094,387.3281 Q2590.4688,387.3281 2591.3125,387.5313 Q2592.1719,387.7188 2593.0156,388.1094 L2593.0156,390.5 Q2592.2344,389.9375 2591.4063,389.6563 Q2590.5938,389.3594 2589.7969,389.3594 Q2588.9219,389.3594 2588.4375,389.7188 Q2587.9688,390.0781 2587.9688,390.7344 Q2587.9688,391.25 2588.3125,391.5938 Q2588.6563,391.9219 2589.75,392.3281 L2590.8125,392.7344 Q2592.2969,393.2813 2593,394.1875 Q2593.7188,395.0938 2593.7188,396.4688 Q2593.7188,398.3438 2592.6094,399.2656 Q2591.5,400.1875 2589.25,400.1875 Q2588.3281,400.1875 2587.4063,399.9688 Q2586.4844,399.75 2585.625,399.3281 L2585.625,396.7969 Q2586.5938,397.4844 2587.5156,397.8281 Q2588.4375,398.1719 2589.3281,398.1719 Q2590.2344,398.1719 2590.7344,397.7656 Q2591.2344,397.3438 2591.2344,396.6094 Q2591.2344,396.0469 2590.8906,395.6406 Q2590.5625,395.2188 2589.9375,394.9688 L2588.7344,394.5156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="119" x="2609.75" y="398.1074">urt_hrtsubscriber_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="2112" x2="3194" y1="409.9531" y2="409.9531"/><ellipse cx="2122" 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="2131" y="424.1636">next : urt_hrtsubscriber_t*</text><ellipse cx="2122" 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="2131" y="453.7729">deadlineOffset : urt_delay_t</text><ellipse cx="2122" 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="2131" y="466.5776">qosDeadlineTimer : urt_osTimer_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="2112" x2="2507.5" y1="437.1602" y2="437.1602"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="291" x="2507.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="2798.5" x2="3194" y1="437.1602" y2="437.1602"/><ellipse cx="2122" 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="2131" y="496.187">maxJitter : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="2112" x2="2517.5" y1="479.5742" y2="479.5742"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="271" x="2517.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="2788.5" x2="3194" y1="479.5742" y2="479.5742"/><ellipse cx="2122" 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="2131" y="525.7964">minLatency : urt_delay_t</text><ellipse cx="2122" 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="2131" y="538.6011">maxLatency : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="2112" x2="2401" y1="509.1836" y2="509.1836"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="504" x="2401" 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="2905" x2="3194" y1="509.1836" y2="509.1836"/><ellipse cx="2122" 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="2131" y="568.2104">expectedRate : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="2112" x2="2520.5" y1="551.5977" y2="551.5977"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="265" x="2520.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="2785.5" x2="3194" y1="551.5977" y2="551.5977"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2112" x2="3194" y1="574.8047" y2="574.8047"/><ellipse cx="2122" 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="392" x="2131" y="589.0151">urtHrtSubscriberInit (subscriber : urt_hrtsubscriber_t*) : urt_status_t</text><ellipse cx="2122" 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="2131" 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="2122" 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="2131" y="614.6245">urtHrtSubscriberFetchNextMessage (subscriber : urt_hrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="2122" 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="2131" y="627.4292">urtHrtSubscriberFetchLatestMessage (subscriber : urt_hrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="2122" 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="2131" y="640.2339">urtHrtSubscriberUnsubscribe (subscriber : urt_hrtsubscriber_t*) : urt_status_t</text><!--MD5=[3226071078d8aeaa18fbafa5359ddee6]
19
class urt_servicefunc_t--><rect fill="#FEFECE" filter="url(#fqetkmfi9z8qk)" height="60.8047" id="urt_servicefunc_t" style="stroke: #A80036; stroke-width: 1.5;" width="451" x="7133.5" y="747.4531"/><ellipse cx="7301.75" cy="763.4531" fill="#E0E0E0" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M7305.9844,759.2188 L7300.7031,759.2188 L7300.7031,761.8906 L7305.5,761.8906 L7305.5,764.0469 L7300.7031,764.0469 L7300.7031,769.4531 L7298.2656,769.4531 L7298.2656,757.0625 L7305.9844,757.0625 L7305.9844,759.2188 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="106" x="7322.25" y="767.6074">urt_servicefunc_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="7134.5" x2="7583.5" y1="779.4531" y2="779.4531"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="7134.5" x2="7583.5" y1="787.4531" y2="787.4531"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="439" x="7139.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(#fqetkmfi9z8qk)" height="222.4609" id="urt_service_t" style="stroke: #A80036; stroke-width: 1.5;" width="602" x="7058" y="401.4531"/><ellipse cx="7315.25" cy="417.4531" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M7314.7344,418.0156 Q7312.875,417.3125 7312.2188,416.5469 Q7311.5781,415.7656 7311.5781,414.4531 Q7311.5781,412.7656 7312.6563,411.7969 Q7313.7344,410.8281 7315.6094,410.8281 Q7316.4688,410.8281 7317.3125,411.0313 Q7318.1719,411.2188 7319.0156,411.6094 L7319.0156,414 Q7318.2344,413.4375 7317.4063,413.1563 Q7316.5938,412.8594 7315.7969,412.8594 Q7314.9219,412.8594 7314.4375,413.2188 Q7313.9688,413.5781 7313.9688,414.2344 Q7313.9688,414.75 7314.3125,415.0938 Q7314.6563,415.4219 7315.75,415.8281 L7316.8125,416.2344 Q7318.2969,416.7813 7319,417.6875 Q7319.7188,418.5938 7319.7188,419.9688 Q7319.7188,421.8438 7318.6094,422.7656 Q7317.5,423.6875 7315.25,423.6875 Q7314.3281,423.6875 7313.4063,423.4688 Q7312.4844,423.25 7311.625,422.8281 L7311.625,420.2969 Q7312.5938,420.9844 7313.5156,421.3281 Q7314.4375,421.6719 7315.3281,421.6719 Q7316.2344,421.6719 7316.7344,421.2656 Q7317.2344,420.8438 7317.2344,420.1094 Q7317.2344,419.5469 7316.8906,419.1406 Q7316.5625,418.7188 7315.9375,418.4688 L7314.7344,418.0156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="79" x="7335.75" y="421.6074">urt_service_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="7059" x2="7659" y1="433.4531" y2="433.4531"/><ellipse cx="7069" cy="444.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="7078" y="447.6636">next : urt_service_t*</text><ellipse cx="7069" cy="457.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="7078" y="460.4683">id : urt_serviceid_t</text><ellipse cx="7069" cy="470.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="7078" y="473.2729">lock : urt_osMutex_t</text><ellipse cx="7069" cy="482.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="7078" y="486.0776">callback : urt_servicefunc_t*</text><ellipse cx="7069" cy="512.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="7078" y="515.687">sumDurations : uint64_t</text><ellipse cx="7069" cy="525.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="7078" y="528.4917">numCalls : uint64_t</text><ellipse cx="7069" cy="538.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="7078" y="541.2964">numTimeouts : uint64_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="7059" x2="7263" y1="499.0742" y2="499.0742"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="192" x="7263" y="502.3823">URT_CFG_RPC_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="7455" x2="7659" y1="499.0742" y2="499.0742"/><ellipse cx="7069" cy="567.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="143" x="7078" y="570.9058">minDuration : urt_delay_t</text><ellipse cx="7069" cy="580.5" 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="7078" y="583.7104">maxDuration : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="7059" x2="7132" y1="554.293" y2="554.293"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="454" x="7132" y="557.6011">URT_CFG_RPC_QOS_JITTERCHECKS == true || URT_CFG_RPC_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="7586" x2="7659" y1="554.293" y2="554.293"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="7059" x2="7659" y1="590.3047" y2="590.3047"/><ellipse cx="7069" cy="601.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="576" x="7078" y="604.5151">urtServiceInit(service : urt_service_t*, id : urt_serviceid_t, callback : urt_servicefunc_t*) : urt_status_t</text><ellipse cx="7069" cy="614.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="557" x="7078" y="617.3198">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(#fqetkmfi9z8qk)" height="281.6797" id="urt_core_t" style="stroke: #A80036; stroke-width: 1.5;" width="343" x="5997.5" y="28.9531"/><ellipse cx="6133.25" cy="44.9531" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M6132.7344,45.5156 Q6130.875,44.8125 6130.2188,44.0469 Q6129.5781,43.2656 6129.5781,41.9531 Q6129.5781,40.2656 6130.6563,39.2969 Q6131.7344,38.3281 6133.6094,38.3281 Q6134.4688,38.3281 6135.3125,38.5313 Q6136.1719,38.7188 6137.0156,39.1094 L6137.0156,41.5 Q6136.2344,40.9375 6135.4063,40.6563 Q6134.5938,40.3594 6133.7969,40.3594 Q6132.9219,40.3594 6132.4375,40.7188 Q6131.9688,41.0781 6131.9688,41.7344 Q6131.9688,42.25 6132.3125,42.5938 Q6132.6563,42.9219 6133.75,43.3281 L6134.8125,43.7344 Q6136.2969,44.2813 6137,45.1875 Q6137.7188,46.0938 6137.7188,47.4688 Q6137.7188,49.3438 6136.6094,50.2656 Q6135.5,51.1875 6133.25,51.1875 Q6132.3281,51.1875 6131.4063,50.9688 Q6130.4844,50.75 6129.625,50.3281 L6129.625,47.7969 Q6130.5938,48.4844 6131.5156,48.8281 Q6132.4375,49.1719 6133.3281,49.1719 Q6134.2344,49.1719 6134.7344,48.7656 Q6135.2344,48.3438 6135.2344,47.6094 Q6135.2344,47.0469 6134.8906,46.6406 Q6134.5625,46.2188 6133.9375,45.9688 L6132.7344,45.5156 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="63" x="6153.75" y="49.1074">urt_core_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="5998.5" x2="6339.5" y1="60.9531" y2="60.9531"/><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="6005.5" y="68.9531"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" text-decoration="underline" textLength="119" x="6017.5" y="75.1636">_nodes : urt_node_t*</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="6005.5" y="81.7578"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" text-decoration="underline" textLength="192" x="6017.5" y="87.9683">_evtSource : urt_osEventSource_t</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="6005.5" y="94.5625"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" text-decoration="underline" textLength="119" x="6017.5" y="100.7729">_lock : urt_osMutex_t</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="6005.5" y="107.3672"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" text-decoration="underline" textLength="122" x="6017.5" y="113.5776">_status : urt_status_t</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="6005.5" y="136.9766"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" text-decoration="underline" textLength="117" x="6017.5" y="143.187">_topics : urt_topic_t*</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="5998.5" x2="6064" y1="126.5742" y2="126.5742"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="210" x="6064" y="129.8823">URT_CFG_PUBSUB_ENABLED == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="6274" x2="6339.5" y1="126.5742" y2="126.5742"/><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="6005.5" y="166.5859"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" text-decoration="underline" textLength="145" x="6017.5" y="172.7964">_services : urt_service_t*</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="5998.5" x2="6076.5" y1="156.1836" y2="156.1836"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="185" x="6076.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="6261.5" x2="6339.5" y1="156.1836" y2="156.1836"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="5998.5" x2="6339.5" y1="179.3906" y2="179.3906"/><ellipse cx="6008.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="175" x="6017.5" y="193.6011">urtCoreInit (void) : urt_status_t</text><ellipse cx="6008.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="6017.5" y="206.4058">urtCoreGetStatus (void) : urt_status_t</text><ellipse cx="6008.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="222" x="6017.5" y="219.2104">urtCoreStartNodes (void) : urt_status_t</text><ellipse cx="6008.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="6017.5" y="232.0151">urtCoreSynchronize (node : urt_node_t*) : urt_status_t</text><ellipse cx="6008.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="6017.5" y="244.8198">urtCoreStopNodes (reason : urt_status_t) : urt_status_t</text><ellipse cx="6008.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="6017.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="5998.5" x2="6064" y1="257.8164" y2="257.8164"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="210" x="6064" y="261.1245">URT_CFG_PUBSUB_ENABLED == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="6274" x2="6339.5" y1="257.8164" y2="257.8164"/><ellipse cx="6008.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="6017.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="5998.5" x2="6076.5" y1="287.4258" y2="287.4258"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="185" x="6076.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="6261.5" x2="6339.5" y1="287.4258" y2="287.4258"/><!--MD5=[182342162f0b9b45ddce11acc6582c59]
22
reverse link urt_node_t to urt_node_t--><path d="M6974.6413,491.568 C6989.072,497.5818 6997,504.5435 6997,512.4531 C6997,522.3789 6984.5152,530.8119 6962.3621,537.7522 " fill="none" id="urt_node_t&lt;-urt_node_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="6962.3621,487.154,6966.6552,492.9479,6973.6546,491.2135,6969.3615,485.4196,6962.3621,487.154" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="6971.0832" y="483.8615">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="6971.1707" y="535.0131">0..1</text><!--MD5=[55d7f7c946c3356baf68288566af1bf6]
23
reverse link urt_node_t to urt_nodeSetupCallback_t--><path d="M6150.4353,641.2168 C6148.5471,680.749 6148.1464,720.753 6149.8678,747.1888 " fill="none" id="urt_node_t&lt;-urt_nodeSetupCallback_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="6151.1157,628.1329,6146.8094,633.917,6150.4924,640.1167,6154.7986,634.3326,6151.1157,628.1329" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="6141.6453" y="648.4715">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="6121.9218" y="736.3975">0..1</text><!--MD5=[55d7f7c946c3356baf68288566af1bf6]
24
reverse link urt_node_t to urt_nodeSetupCallback_t--><path d="M6176.9914,633.2524 C6175.4345,675.3075 6171.9851,718.9753 6167.4145,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="6177.1718,628.1329,6172.857,636.9863,6176.9955,633.1298,6180.852,637.2684,6177.1718,628.1329" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[b913f036db99e36b937989146817bd94]
25
reverse link urt_node_t to urt_nodeLoopCallback_t--><path d="M6411.2725,633.7744 C6499.1588,675.7387 6591.9802,719.2374 6654.132,747.3298 " fill="none" id="urt_node_t&lt;-urt_nodeLoopCallback_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="6399.4679,628.1329,6403.1567,634.3291,6410.295,633.3073,6406.6062,627.1111,6399.4679,628.1329" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="6406.6837" y="648.4715">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="6630.278" y="736.5676">1</text><!--MD5=[b913f036db99e36b937989146817bd94]
26
reverse link urt_node_t to urt_nodeLoopCallback_t--><path d="M6430.123,630.3098 C6520.9782,673.3301 6614.3625,718.4635 6671.6467,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="6425.524,628.1329,6431.9474,635.5988,6430.0433,630.2721,6435.3701,628.368,6425.524,628.1329" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[496dffc41052f1912ec8ad492f24fe61]
27
reverse link urt_node_t to urt_nodeShutdownCallback_t--><path d="M5912.0192,633.9029 C5827.3904,675.8274 5741.4228,719.2661 5688.0855,747.3298 " fill="none" id="urt_node_t&lt;-urt_nodeShutdownCallback_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="5923.6774,628.1329,5916.5257,627.2095,5912.9226,633.4559,5920.0743,634.3794,5923.6774,628.1329" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="5898.926" y="648.4715">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="5672.5594" y="736.5676">0..1</text><!--MD5=[496dffc41052f1912ec8ad492f24fe61]
28
reverse link urt_node_t to urt_nodeShutdownCallback_t--><path d="M5945.1226,630.438 C5859.1087,673.4197 5766.982,718.4921 5705.6002,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="5949.7335,628.1329,5939.8948,628.5796,5945.2612,630.3688,5943.4721,635.7352,5949.7335,628.1329" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[536025241394544a90bc53fb552f3a08]
29
reverse link urt_message_t to urt_message_t--><path d="M1233.5642,743.6932 C1247.8974,751.8439 1256.5,763.2638 1256.5,777.9531 C1256.5,796.3867 1242.9528,809.6718 1221.534,817.8085 " fill="none" id="urt_message_t&lt;-urt_message_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="1221.534,738.0977,1225.2873,744.2551,1232.4146,743.1587,1228.6613,737.0014,1221.534,738.0977" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="1229.7829" y="733.4718">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="1229.3281" y="815.9453">0..1</text><!--MD5=[0585cd4928de92ce6927d9c389eadd29]
30
link urt_nrtsubscriber_t to urt_basesubscriber_t--><path d="M1875.1787,589.5304 C1944.02,611.7483 2021.4622,633.5767 2094,646.9531 C2518.3586,725.2072 2655.925,579.8706 3069.8574,704.9137 " fill="none" id="urt_nrtsubscriber_t-&gt;urt_basesubscriber_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="3072.0992,698.2797,3089.1409,710.8726,3067.9658,711.6557,3072.0992,698.2797" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[37a8b7f2877a6b7bb4e9d0352ce3d221]
31
link urt_nrtsubscriber_t to urt_message_t--><path d="M1470.5988,589.6033 C1378.9737,625.9658 1270.2314,669.1214 1179.9674,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="1175.1402,706.8594,1184.981,707.2574,1179.7876,705.015,1182.03,699.8216,1175.1402,706.8594" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[6d81edfa5aa102b898ad487ae19b49f9]
32
link urt_srtsubscriber_t to urt_basesubscriber_t--><path d="M4422.8492,609.0151 C4361.961,622.8959 4299.4105,636.1204 4240,646.9531 C3914.22,706.3547 3526.4148,747.2295 3327.013,766.0919 " fill="none" id="urt_srtsubscriber_t-&gt;urt_basesubscriber_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="3327.4203,773.0843,3306.8536,767.9844,3326.1117,759.1456,3327.4203,773.0843" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[47304731969ac4130b45cc7169c5cada]
33
reverse link urt_srtsubscriber_t to urt_srtusefulnessfunc_t--><path d="M4799,622.0612 C4799,667.4783 4799,716.6246 4799,747.342 " fill="none" id="urt_srtsubscriber_t&lt;-urt_srtusefulnessfunc_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="4799,609.0557,4795,615.0557,4799,621.0557,4803,615.0557,4799,609.0557" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="4790.7063" y="628.778">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="4772.525" y="736.5823">0..1</text><!--MD5=[dffdac3aea8c81c86dd1d0b8122fcada]
34
link urt_srtsubscriber_t to urt_message_t--><path d="M4448.5378,608.9959 C4379.885,624.4322 4308.0632,638.1893 4240,646.9531 C3578.4393,732.1356 1898.3185,605.8704 1239,706.9531 C1234.8627,707.5874 1230.6969,708.2728 1226.5104,709.0046 " 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="1221.5869,709.8846,1231.1503,712.2385,1226.5089,709.0048,1229.7426,704.3633,1221.5869,709.8846" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[f626d284cba98e1d5d5fe914b1fa4188]
35
link urt_frtsubscriber_t to urt_basesubscriber_t--><path d="M3504.3905,625.6265 C3443.0717,655.7192 3378.9567,687.1842 3325.0246,713.6518 " fill="none" id="urt_frtsubscriber_t-&gt;urt_basesubscriber_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="3327.8079,720.0833,3306.7695,722.6106,3321.64,707.5152,3327.8079,720.0833" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[cfcdebdb88febc368723fd91f781523c]
36
link urt_frtsubscriber_t to urt_message_t--><path d="M3347.1778,625.4981 C3308.1799,633.9851 3268.9705,641.391 3231,646.9531 C2354.6178,775.329 2113.8147,568.2973 1239,706.9531 C1234.8659,707.6083 1230.7031,708.3131 1226.5195,709.0628 " 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="1221.5992,709.9631,1231.1722,712.2778,1226.5175,709.0631,1229.7322,704.4085,1221.5992,709.9631" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[1ea71f2b33e56ab0ac5545988c1af396]
37
link urt_hrtsubscriber_t to urt_basesubscriber_t--><path d="M2958.7123,646.9972 C2993.82,663.8002 3029.0613,681.278 3067.3977,701.4154 " fill="none" id="urt_hrtsubscriber_t-&gt;urt_basesubscriber_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="3070.8401,695.3173,3085.2402,710.862,3064.2893,707.6902,3070.8401,695.3173" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[ea2ec5c5272e65289dabade75a749f58]
38
reverse link urt_hrtsubscriber_t to urt_hrtsubscriber_t--><path d="M3207.3399,487.8326 C3221.8539,494.6417 3230,502.8486 3230,512.4531 C3230,524.5058 3217.1717,534.3575 3195.0292,542.0082 " fill="none" id="urt_hrtsubscriber_t&lt;-urt_hrtsubscriber_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="3195.0292,482.898,3199.1102,488.8432,3206.1677,487.3628,3202.0867,481.4176,3195.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="3202.7077" y="479.4456">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="3202.8202" y="539.3871">0..1</text><!--MD5=[a8adaa0500715125c1ab51b9b0fda3ce]
39
link urt_hrtsubscriber_t to urt_message_t--><path d="M2110.872,644.1203 C2104.8881,645.0943 2098.9292,646.0392 2093,646.9531 C1716.9494,704.9143 1613.5328,639.8804 1239,706.9531 C1234.8799,707.6909 1230.73,708.4722 1226.5583,709.2925 " 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="1221.6515,710.2732,1231.2609,712.4316,1226.5545,709.2932,1229.6929,704.5868,1221.6515,710.2732" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[54fcf25ad8c5f1d36e678e42d5bfd4cc]
40
reverse link urt_publisher_t to urt_topic_t--><path d="M794.8249,512.4531 C802.1324,512.4531 809.44,512.4531 816.7475,512.4531 " fill="none" id="urt_publisher_t&lt;-urt_topic_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="781.6714,512.4531,787.6714,516.4531,793.6714,512.4531,787.6714,508.4531,781.6714,512.4531" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="789.4647" y="509.3708">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="801.0814" y="509.2283">1</text><!--MD5=[5025b4c4053b8e7c7ca8a657f09f21c0]
41
link urt_publisher_t to urt_message_t--><path d="M546.5492,577.0622 C632.8323,615.6281 742.6672,664.721 832.1603,704.7217 " 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="836.9443,706.86,830.3602,699.5355,832.3796,704.8196,827.0955,706.839,836.9443,706.86" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[6b2afc1defaa6ed5a86f99c07f8466dd]
42
reverse link urt_topic_t to urt_topic_t--><path d="M1213.0439,476.3703 C1227.3061,484.6063 1236,496.6339 1236,512.4531 C1236,532.3047 1222.309,546.1852 1201.1039,554.0949 " fill="none" id="urt_topic_t&lt;-urt_topic_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="1201.1039,470.8113,1204.855,476.97,1211.9826,475.8762,1208.2316,469.7175,1201.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="1208.7642" y="465.9598">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="1209.0767" y="552.4967">0..1</text><!--MD5=[ed3fb6de0913094c41bd74c175d366df]
43
reverse link urt_topic_t to urt_hrtsubscriber_t--><path d="M1145.317,380.0079 C1174.4977,356.942 1206.4088,335.1844 1239,318.9531 C1246.1417,315.3963 1248.5719,315.8476 1256.5,314.9531 C1301.7131,309.8517 2030.2869,309.8517 2075.5,314.9531 C2163.5516,324.888 2255.7005,349.4069 2339.8741,377.9215 " fill="none" id="urt_topic_t&lt;-urt_hrtsubscriber_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="1135.1127,388.2142,1142.2951,387.5712,1144.4639,380.694,1137.2816,381.337,1135.1127,388.2142" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="1134.5539" y="377.2552">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="2297.0778" y="366.7847">0..1</text><!--MD5=[0b5167e958c0ed93ffc0c98ce399b54d]
44
reverse link urt_topic_t to urt_message_t--><path d="M1002.2699,649.9018 C1001.3084,669.5395 1000.3536,689.0399 999.4898,706.6812 " fill="none" id="urt_topic_t&lt;-urt_message_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1002.9187,636.6522,998.63,642.4494,1002.3318,648.6379,1006.6204,642.8407,1002.9187,636.6522" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="994.3044" y="656.7464">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="991.4372" y="695.6505">1</text><!--MD5=[05f2c35569573d3273c65d3342945557]
45
reverse link urt_service_t to urt_service_t--><path d="M7672.2128,481.5207 C7686.5894,489.3534 7695,499.6642 7695,512.4531 C7695,528.5019 7681.7552,540.6483 7660.0965,548.8921 " fill="none" id="urt_service_t&lt;-urt_service_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="7660.0965,476.0141,7663.9038,482.1382,7671.0211,480.9792,7667.2139,474.8551,7660.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="7668.2006" y="471.9095">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="7668.4131" y="546.7234">0..1</text><!--MD5=[586e61fedafd54ae7ea71cebd9f9032a]
46
reverse link urt_service_t to urt_servicefunc_t--><path d="M7359,636.5187 C7359,677.6673 7359,719.9335 7359,747.4119 " fill="none" id="urt_service_t&lt;-urt_servicefunc_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="7359,623.5107,7355,629.5107,7359,635.5107,7363,629.5107,7359,623.5107" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="7350.7188" y="643.9022">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="7332.375" y="736.1932">0..1</text><!--MD5=[694e7400eb99f74d44ea388aed89d199]
47
reverse link urt_core_t to urt_node_t--><path d="M6169,324.3176 C6169,348.6799 6169,373.5026 6169,396.7874 " fill="none" id="urt_core_t&lt;-urt_node_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="6169,311.2384,6165,317.2384,6169,323.2384,6173,317.2384,6169,311.2384" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="6160.8063" y="330.5231">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="6144.2313" y="385.9598">0..1</text><!--MD5=[250695c91040478b50550bc37a8775c7]
48
reverse link urt_core_t to urt_topic_t--><path d="M5984.1951,172.1411 C5114.7709,182.8663 1464.3839,232.8757 1239,318.9531 C1198.4172,334.4523 1159.9062,360.3339 1126.4111,388.2063 " fill="none" id="urt_core_t&lt;-urt_topic_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="5997.4141,171.9784,5991.3653,168.0526,5985.415,172.1261,5991.4638,176.052,5997.4141,171.9784" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="5981.4579" y="168.8075">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="1108.8346" y="377.2468">0..1</text><!--MD5=[8d0a227ec56585cdbc167f8316b34b64]
49
reverse link urt_core_t to urt_service_t--><path d="M6353.8069,180.1867 C6535.9637,195.0838 6819.6792,231.3366 7050,318.9531 C7104.2795,339.6016 7159.3425,370.3043 7207.6552,401.2021 " fill="none" id="urt_core_t&lt;-urt_service_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="6340.597,179.1293,6346.2587,183.5954,6352.5587,180.0869,6346.8971,175.6209,6340.597,179.1293" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="6348.5537" y="176.2824">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="7172.6805" y="390.2794">0..1</text><!--MD5=[03a527c74bd3b585c42288042ead7cf8]
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) : urt_status_t
77
  + {method} urtCoreGetStatus (void) : urt_status_t
78
  + {method} urtCoreStartNodes (void) : urt_status_t
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*) : urt_status_t
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*) : urt_status_t
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*) : urt_status_t
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*) : urt_status_t
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*) : urt_status_t
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*) : urt_status_t
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*) : urt_status_t
219
  + {method} urtPublisherPublish (publisher : urt_publisher_t*, payload : void*, n : 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} hrtSubscribers : urt_hrtsubscriber_t*
229
  + {field} hrtReleased : urt_osCondvar_t
230
  + {field} mandatoryMessage : urt_message_t
231
  + {field} latestMessage : urt_message_t*
232
  .. URT_CFG_PUBSUB_QOS_RATECHECKS == true ..
233
  + {field} qosRateTimer : urt_osTimer_t
234
  .. URT_CFG_PUBSUB_PROFILING == true ..
235
  + {field} numDiscardedMessages : uint64_t
236
  + {field} numSubscribers : unsigned int
237
  __
238
  + {method} urtTopicInit (topic : urt_topic_t*, id : urt_topicid_t) : urt_status_t
239
}
240

    
241
}
242

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

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

    
249
  class urt_service_t <<S,BFAFFF>> {
250
  + {field} next : urt_service_t*
251
  + {field} id : urt_serviceid_t
252
  + {field} lock : urt_osMutex_t
253
  + {field} callback : urt_servicefunc_t*
254
  .. URT_CFG_RPC_PROFILING == true ..
255
  + {field} sumDurations : uint64_t
256
  + {field} numCalls : uint64_t
257
  + {field} numTimeouts : uint64_t
258
  .. URT_CFG_RPC_QOS_JITTERCHECKS == true || URT_CFG_RPC_PROFILING == true  ..
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>