Statistics
| Branch: | Revision:

urtware / doc / classdiagrams / pubsub.svg @ ee83a495

History | View | Annotate | Download (59.518 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="611px" preserveAspectRatio="none" style="width:5343px;height:611px;" version="1.1" viewBox="0 0 5343 611" width="5343px" zoomAndPan="magnify"><defs><filter height="300%" id="fijp6wls75jyj" 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="2635" y="16.708">µRtWare</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="225" x="2567" y="37.6611">Publish-Subscribe System</text><!--MD5=[16a3bbbe805f94d6e6ce317c08ab945e]
2
cluster subscriber--><rect fill="#FFFFFF" filter="url(#fijp6wls75jyj)" height="502" style="stroke: #000000; stroke-width: 1.5;" width="4103" x="1229.5" y="98.9063"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="85" x="3238.5" y="113.9014">subscriber</text><!--MD5=[50a042e24f957794dab9ba3ea8701c50]
3
class urt_basesubscriber_t--><rect fill="#FEFECE" filter="url(#fijp6wls75jyj)" height="133.6328" id="urt_basesubscriber_t" style="stroke: #A80036; stroke-width: 1.5;" width="225" x="3039" y="458.9063"/><ellipse cx="3081.45" cy="474.9063" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M3080.9344,475.4688 Q3079.075,474.7656 3078.4188,474 Q3077.7781,473.2188 3077.7781,471.9063 Q3077.7781,470.2188 3078.8563,469.25 Q3079.9344,468.2813 3081.8094,468.2813 Q3082.6688,468.2813 3083.5125,468.4844 Q3084.3719,468.6719 3085.2156,469.0625 L3085.2156,471.4531 Q3084.4344,470.8906 3083.6063,470.6094 Q3082.7938,470.3125 3081.9969,470.3125 Q3081.1219,470.3125 3080.6375,470.6719 Q3080.1688,471.0313 3080.1688,471.6875 Q3080.1688,472.2031 3080.5125,472.5469 Q3080.8563,472.875 3081.95,473.2813 L3083.0125,473.6875 Q3084.4969,474.2344 3085.2,475.1406 Q3085.9188,476.0469 3085.9188,477.4219 Q3085.9188,479.2969 3084.8094,480.2188 Q3083.7,481.1406 3081.45,481.1406 Q3080.5281,481.1406 3079.6063,480.9219 Q3078.6844,480.7031 3077.825,480.2813 L3077.825,477.75 Q3078.7938,478.4375 3079.7156,478.7813 Q3080.6375,479.125 3081.5281,479.125 Q3082.4344,479.125 3082.9344,478.7188 Q3083.4344,478.2969 3083.4344,477.5625 Q3083.4344,477 3083.0906,476.5938 Q3082.7625,476.1719 3082.1375,475.9219 L3080.9344,475.4688 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="132" x="3101.55" y="479.0605">urt_basesubscriber_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3040" x2="3263" y1="490.9063" y2="490.9063"/><ellipse cx="3050" cy="501.9063" 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="3059" y="505.1167">topic : urt_topic_t*</text><ellipse cx="3050" cy="514.7109" 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="3059" y="517.9214">evtListener : urt_osEventListener_t</text><ellipse cx="3050" cy="527.5156" 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="3059" y="530.7261">lastMessage : urt_message_t*</text><ellipse cx="3050" cy="540.3203" 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="3059" y="543.5308">lastMessageTime : urt_osTime_t</text><ellipse cx="3050" cy="569.9297" 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="3059" y="573.1401">sumLatencies : uint64_t</text><ellipse cx="3050" cy="582.7344" 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="3059" y="585.9448">numMessagesReceived : uint64_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="3040" x2="3043" y1="556.5273" y2="556.5273"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="217" x="3043" y="559.8354">URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="3260" x2="3263" y1="556.5273" y2="556.5273"/><!--MD5=[fc7708c915a0148c667d62e1370980fd]
4
class urt_srtusefulnessfunc_t--><rect fill="#FEFECE" filter="url(#fijp6wls75jyj)" height="60.8047" id="urt_srtusefulnessfunc_t" style="stroke: #A80036; stroke-width: 1.5;" width="374" x="4595.5" y="495.4063"/><ellipse cx="4704.75" cy="511.4063" fill="#E0E0E0" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M4708.9844,507.1719 L4703.7031,507.1719 L4703.7031,509.8438 L4708.5,509.8438 L4708.5,512 L4703.7031,512 L4703.7031,517.4063 L4701.2656,517.4063 L4701.2656,505.0156 L4708.9844,505.0156 L4708.9844,507.1719 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="147" x="4725.25" y="515.5605">urt_srtusefulnessfunc_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="4596.5" x2="4968.5" y1="527.4063" y2="527.4063"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="4596.5" x2="4968.5" y1="535.4063" y2="535.4063"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="362" x="4601.5" y="549.6167">urt_srtusefulnessfunc_t (dt : urt_delay_t, params : void*) : float</text><!--MD5=[9ff46073dd541e50679ef35e851c67d6]
5
class urt_nrtsubscriber_t--><rect fill="#FEFECE" filter="url(#fijp6wls75jyj)" height="154.4375" id="urt_nrtsubscriber_t" style="stroke: #A80036; stroke-width: 1.5;" width="821" x="2247" y="183.4063"/><ellipse cx="2593.75" cy="199.4063" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M2593.2344,199.9688 Q2591.375,199.2656 2590.7188,198.5 Q2590.0781,197.7188 2590.0781,196.4063 Q2590.0781,194.7188 2591.1563,193.75 Q2592.2344,192.7813 2594.1094,192.7813 Q2594.9688,192.7813 2595.8125,192.9844 Q2596.6719,193.1719 2597.5156,193.5625 L2597.5156,195.9531 Q2596.7344,195.3906 2595.9063,195.1094 Q2595.0938,194.8125 2594.2969,194.8125 Q2593.4219,194.8125 2592.9375,195.1719 Q2592.4688,195.5313 2592.4688,196.1875 Q2592.4688,196.7031 2592.8125,197.0469 Q2593.1563,197.375 2594.25,197.7813 L2595.3125,198.1875 Q2596.7969,198.7344 2597.5,199.6406 Q2598.2188,200.5469 2598.2188,201.9219 Q2598.2188,203.7969 2597.1094,204.7188 Q2596,205.6406 2593.75,205.6406 Q2592.8281,205.6406 2591.9063,205.4219 Q2590.9844,205.2031 2590.125,204.7813 L2590.125,202.25 Q2591.0938,202.9375 2592.0156,203.2813 Q2592.9375,203.625 2593.8281,203.625 Q2594.7344,203.625 2595.2344,203.2188 Q2595.7344,202.7969 2595.7344,202.0625 Q2595.7344,201.5 2595.3906,201.0938 Q2595.0625,200.6719 2594.4375,200.4219 L2593.2344,199.9688 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="119" x="2614.25" y="203.5605">urt_nrtsubscriber_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="2248" x2="3067" y1="215.4063" y2="215.4063"/><ellipse cx="2258" cy="243.2109" 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="2267" y="246.4214">minLatency : urt_delay_t</text><ellipse cx="2258" cy="256.0156" 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="2267" y="259.2261">maxLatency : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="2248" x2="2549" y1="229.8086" y2="229.8086"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="217" x="2549" y="233.1167">URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="2766" x2="3067" y1="229.8086" y2="229.8086"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2248" x2="3067" y1="265.8203" y2="265.8203"/><ellipse cx="2258" cy="276.8203" 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="2267" y="280.0308">urtNrtSubscriberInit (subscriber : urt_nrtsubscriber_t*) : urt_status_t</text><ellipse cx="2258" cy="289.625" 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="2267" y="292.8354">urtNrtSubscriberSubscribe (subscriber : urt_nrtsubscriber_t*, topic : urt_topic_t*, messages : urt_message_t*) : urt_status_t</text><ellipse cx="2258" cy="302.4297" 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="2267" y="305.6401">urtNrtSubscriberFetchNextMessage (subscriber : urt_nrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="2258" cy="315.2344" 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="2267" y="318.4448">urtNrtSubscriberFetchLatestMessage (subscriber : urt_nrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="2258" cy="328.0391" 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="2267" y="331.2495">urtNrtSubscriberUnsubscribe (subscriber : urt_nrtsubscriber_t*) : urt_status_t</text><!--MD5=[5c7929572d87ccc448d875bea5da0fb1]
6
class urt_srtsubscriber_t--><rect fill="#FEFECE" filter="url(#fijp6wls75jyj)" height="192.8516" id="urt_srtsubscriber_t" style="stroke: #A80036; stroke-width: 1.5;" width="1084" x="4240.5" y="163.9063"/><ellipse cx="4719.25" cy="179.9063" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M4718.7344,180.4688 Q4716.875,179.7656 4716.2188,179 Q4715.5781,178.2188 4715.5781,176.9063 Q4715.5781,175.2188 4716.6563,174.25 Q4717.7344,173.2813 4719.6094,173.2813 Q4720.4688,173.2813 4721.3125,173.4844 Q4722.1719,173.6719 4723.0156,174.0625 L4723.0156,176.4531 Q4722.2344,175.8906 4721.4063,175.6094 Q4720.5938,175.3125 4719.7969,175.3125 Q4718.9219,175.3125 4718.4375,175.6719 Q4717.9688,176.0313 4717.9688,176.6875 Q4717.9688,177.2031 4718.3125,177.5469 Q4718.6563,177.875 4719.75,178.2813 L4720.8125,178.6875 Q4722.2969,179.2344 4723,180.1406 Q4723.7188,181.0469 4723.7188,182.4219 Q4723.7188,184.2969 4722.6094,185.2188 Q4721.5,186.1406 4719.25,186.1406 Q4718.3281,186.1406 4717.4063,185.9219 Q4716.4844,185.7031 4715.625,185.2813 L4715.625,182.75 Q4716.5938,183.4375 4717.5156,183.7813 Q4718.4375,184.125 4719.3281,184.125 Q4720.2344,184.125 4720.7344,183.7188 Q4721.2344,183.2969 4721.2344,182.5625 Q4721.2344,182 4720.8906,181.5938 Q4720.5625,181.1719 4719.9375,180.9219 L4718.7344,180.4688 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="118" x="4739.75" y="184.0605">urt_srtsubscriber_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="4241.5" x2="5323.5" y1="195.9063" y2="195.9063"/><ellipse cx="4251.5" cy="206.9063" 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="4260.5" y="210.1167">usefulnesscb : urt_srtusefulnessfunc_t*</text><ellipse cx="4251.5" cy="219.7109" 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="4260.5" y="222.9214">cbparams : void*</text><ellipse cx="4251.5" cy="249.3203" 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="4260.5" y="252.5308">minLatency : urt_delay_t</text><ellipse cx="4251.5" cy="262.125" 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="4260.5" y="265.3354">maxLatency : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="4241.5" x2="4674" y1="235.918" y2="235.918"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="217" x="4674" y="239.2261">URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="4891" x2="5323.5" y1="235.918" y2="235.918"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="4241.5" x2="5323.5" y1="271.9297" y2="271.9297"/><ellipse cx="4251.5" cy="282.9297" 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="4260.5" y="286.1401">urtSrtSubscriberInit (subscriber : urt_srtsubscriber_t*) : urt_status_t</text><ellipse cx="4251.5" cy="295.7344" 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="4260.5" y="298.9448">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="4251.5" cy="308.5391" 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="4260.5" y="311.7495">urtSrtSubscriberFetchNextMessage (subscriber : urt_srtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="4251.5" cy="321.3438" 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="4260.5" y="324.5542">urtSrtSubscriberFetchLatestMessage (subscriber : urt_srtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="4251.5" cy="334.1484" 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="4260.5" y="337.3589">urtSrtSubscriberCalculateUsefulness (subscriber : urt_srtsubscriber_t*, latency : urt_delay_t) : float</text><ellipse cx="4251.5" cy="346.9531" 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="4260.5" y="350.1636">urtSrtSubscriberUnsubscribe (subscriber : urt_srtsubscriber_t*) : urt_status_t</text><!--MD5=[17838fb05fe219fd399839979ec8a4a4]
7
class urt_frtsubscriber_t--><rect fill="#FEFECE" filter="url(#fijp6wls75jyj)" height="226.4609" id="urt_frtsubscriber_t" style="stroke: #A80036; stroke-width: 1.5;" width="974" x="1237.5" y="147.4063"/><ellipse cx="1662.75" cy="163.4063" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1662.2344,163.9688 Q1660.375,163.2656 1659.7188,162.5 Q1659.0781,161.7188 1659.0781,160.4063 Q1659.0781,158.7188 1660.1563,157.75 Q1661.2344,156.7813 1663.1094,156.7813 Q1663.9688,156.7813 1664.8125,156.9844 Q1665.6719,157.1719 1666.5156,157.5625 L1666.5156,159.9531 Q1665.7344,159.3906 1664.9063,159.1094 Q1664.0938,158.8125 1663.2969,158.8125 Q1662.4219,158.8125 1661.9375,159.1719 Q1661.4688,159.5313 1661.4688,160.1875 Q1661.4688,160.7031 1661.8125,161.0469 Q1662.1563,161.375 1663.25,161.7813 L1664.3125,162.1875 Q1665.7969,162.7344 1666.5,163.6406 Q1667.2188,164.5469 1667.2188,165.9219 Q1667.2188,167.7969 1666.1094,168.7188 Q1665,169.6406 1662.75,169.6406 Q1661.8281,169.6406 1660.9063,169.4219 Q1659.9844,169.2031 1659.125,168.7813 L1659.125,166.25 Q1660.0938,166.9375 1661.0156,167.2813 Q1661.9375,167.625 1662.8281,167.625 Q1663.7344,167.625 1664.2344,167.2188 Q1664.7344,166.7969 1664.7344,166.0625 Q1664.7344,165.5 1664.3906,165.0938 Q1664.0625,164.6719 1663.4375,164.4219 L1662.2344,163.9688 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="115" x="1683.25" y="167.5605">urt_frtsubscriber_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1238.5" x2="2210.5" y1="179.4063" y2="179.4063"/><ellipse cx="1248.5" cy="207.2109" 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="1257.5" y="210.4214">deadlineOffset : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1238.5" x2="1579" y1="193.8086" y2="193.8086"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="291" x="1579" y="197.1167">URT_CFG_PUBSUB_QOS_DEADLINECHECKS == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1870" x2="2210.5" y1="193.8086" y2="193.8086"/><ellipse cx="1248.5" cy="236.8203" 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="1257.5" y="240.0308">maxJitter : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1238.5" x2="1589" y1="223.418" y2="223.418"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="271" x="1589" y="226.7261">URT_CFG_PUBSUB_QOS_JITTERCHECKS == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1860" x2="2210.5" y1="223.418" y2="223.418"/><ellipse cx="1248.5" cy="266.4297" 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="1257.5" y="269.6401">minLatency : urt_delay_t</text><ellipse cx="1248.5" cy="279.2344" 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="1257.5" y="282.4448">maxLatency : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1238.5" x2="1470.5" y1="253.0273" y2="253.0273"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="508" x="1470.5" y="256.3354">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="1978.5" x2="2210.5" y1="253.0273" y2="253.0273"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1238.5" x2="2210.5" y1="289.0391" y2="289.0391"/><ellipse cx="1248.5" cy="300.0391" 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="1257.5" y="303.2495">urtFrtSubscriberInit (subscriber : urt_frtsubscriber_t*) : urt_status_t</text><ellipse cx="1248.5" cy="312.8438" 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="1257.5" y="316.0542">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="1248.5" cy="325.6484" 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="1257.5" y="328.8589">urtFrtSubscriberFetchNextMessage (subscriber : urt_frtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="1248.5" cy="338.4531" 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="1257.5" y="341.6636">urtFrtSubscriberFetchLatestMessage (subscriber : urt_frtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="1248.5" cy="351.2578" 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="1257.5" y="354.4683">urtFrtSubscriberCalculateValidity (subscriber : urt_frtsubscriber_t*, latency : urt_delay_t) : bool</text><ellipse cx="1248.5" cy="364.0625" 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="1257.5" y="367.2729">urtFrtSubscriberUnsubscribe (subscriber : urt_frtsubscriber_t*) : urt_status_t</text><!--MD5=[104dc879e5721421b987fcc467bc3a1d]
8
class urt_hrtsubscriber_t--><rect fill="#FEFECE" filter="url(#fijp6wls75jyj)" height="268.875" id="urt_hrtsubscriber_t" style="stroke: #A80036; stroke-width: 1.5;" width="1084" x="3103.5" y="125.9063"/><ellipse cx="3581.75" cy="141.9063" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M3581.2344,142.4688 Q3579.375,141.7656 3578.7188,141 Q3578.0781,140.2188 3578.0781,138.9063 Q3578.0781,137.2188 3579.1563,136.25 Q3580.2344,135.2813 3582.1094,135.2813 Q3582.9688,135.2813 3583.8125,135.4844 Q3584.6719,135.6719 3585.5156,136.0625 L3585.5156,138.4531 Q3584.7344,137.8906 3583.9063,137.6094 Q3583.0938,137.3125 3582.2969,137.3125 Q3581.4219,137.3125 3580.9375,137.6719 Q3580.4688,138.0313 3580.4688,138.6875 Q3580.4688,139.2031 3580.8125,139.5469 Q3581.1563,139.875 3582.25,140.2813 L3583.3125,140.6875 Q3584.7969,141.2344 3585.5,142.1406 Q3586.2188,143.0469 3586.2188,144.4219 Q3586.2188,146.2969 3585.1094,147.2188 Q3584,148.1406 3581.75,148.1406 Q3580.8281,148.1406 3579.9063,147.9219 Q3578.9844,147.7031 3578.125,147.2813 L3578.125,144.75 Q3579.0938,145.4375 3580.0156,145.7813 Q3580.9375,146.125 3581.8281,146.125 Q3582.7344,146.125 3583.2344,145.7188 Q3583.7344,145.2969 3583.7344,144.5625 Q3583.7344,144 3583.3906,143.5938 Q3583.0625,143.1719 3582.4375,142.9219 L3581.2344,142.4688 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="119" x="3602.25" y="146.0605">urt_hrtsubscriber_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3104.5" x2="4186.5" y1="157.9063" y2="157.9063"/><ellipse cx="3114.5" cy="168.9063" 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="3123.5" y="172.1167">next : urt_hrtsubscriber_t*</text><ellipse cx="3114.5" cy="198.5156" 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="3123.5" y="201.7261">deadlineOffset : urt_delay_t</text><ellipse cx="3114.5" cy="211.3203" 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="3123.5" y="214.5308">qosDeadlineTimer : urt_osTimer_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="3104.5" x2="3500" y1="185.1133" y2="185.1133"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="291" x="3500" y="188.4214">URT_CFG_PUBSUB_QOS_DEADLINECHECKS == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="3791" x2="4186.5" y1="185.1133" y2="185.1133"/><ellipse cx="3114.5" cy="240.9297" 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="3123.5" y="244.1401">maxJitter : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="3104.5" x2="3510" y1="227.5273" y2="227.5273"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="271" x="3510" y="230.8354">URT_CFG_PUBSUB_QOS_JITTERCHECKS == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="3781" x2="4186.5" y1="227.5273" y2="227.5273"/><ellipse cx="3114.5" cy="270.5391" 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="3123.5" y="273.7495">minLatency : urt_delay_t</text><ellipse cx="3114.5" cy="283.3438" 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="3123.5" y="286.5542">maxLatency : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="3104.5" x2="3393.5" y1="257.1367" y2="257.1367"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="504" x="3393.5" y="260.4448">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="3897.5" x2="4186.5" y1="257.1367" y2="257.1367"/><ellipse cx="3114.5" cy="312.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="150" x="3123.5" y="316.1636">expectedRate : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="3104.5" x2="3513" y1="299.5508" y2="299.5508"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="265" x="3513" y="302.8589">URT_CFG_PUBSUB_QOS_RATECHECKS == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="3778" x2="4186.5" y1="299.5508" y2="299.5508"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="3104.5" x2="4186.5" y1="322.7578" y2="322.7578"/><ellipse cx="3114.5" cy="333.7578" 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="3123.5" y="336.9683">urtHrtSubscriberInit (subscriber : urt_hrtsubscriber_t*) : urt_status_t</text><ellipse cx="3114.5" cy="346.5625" 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="3123.5" y="349.7729">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="3114.5" cy="359.3672" 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="3123.5" y="362.5776">urtHrtSubscriberFetchNextMessage (subscriber : urt_hrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="3114.5" cy="372.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="795" x="3123.5" y="375.3823">urtHrtSubscriberFetchLatestMessage (subscriber : urt_hrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="3114.5" cy="384.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="446" x="3123.5" y="388.187">urtHrtSubscriberUnsubscribe (subscriber : urt_hrtsubscriber_t*) : urt_status_t</text><!--MD5=[e602aa6d45f270ad04f88c9ca5352b33]
9
class urt_message_t--><rect fill="#FEFECE" filter="url(#fijp6wls75jyj)" height="141.6328" id="urt_message_t" style="stroke: #A80036; stroke-width: 1.5;" width="451" x="753" y="454.9063"/><ellipse cx="928.25" cy="470.9063" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M927.7344,471.4688 Q925.875,470.7656 925.2188,470 Q924.5781,469.2188 924.5781,467.9063 Q924.5781,466.2188 925.6563,465.25 Q926.7344,464.2813 928.6094,464.2813 Q929.4688,464.2813 930.3125,464.4844 Q931.1719,464.6719 932.0156,465.0625 L932.0156,467.4531 Q931.2344,466.8906 930.4063,466.6094 Q929.5938,466.3125 928.7969,466.3125 Q927.9219,466.3125 927.4375,466.6719 Q926.9688,467.0313 926.9688,467.6875 Q926.9688,468.2031 927.3125,468.5469 Q927.6563,468.875 928.75,469.2813 L929.8125,469.6875 Q931.2969,470.2344 932,471.1406 Q932.7188,472.0469 932.7188,473.4219 Q932.7188,475.2969 931.6094,476.2188 Q930.5,477.1406 928.25,477.1406 Q927.3281,477.1406 926.4063,476.9219 Q925.4844,476.7031 924.625,476.2813 L924.625,473.75 Q925.5938,474.4375 926.5156,474.7813 Q927.4375,475.125 928.3281,475.125 Q929.2344,475.125 929.7344,474.7188 Q930.2344,474.2969 930.2344,473.5625 Q930.2344,473 929.8906,472.5938 Q929.5625,472.1719 928.9375,471.9219 L927.7344,471.4688 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="92" x="948.75" y="475.0605">urt_message_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="754" x2="1203" y1="486.9063" y2="486.9063"/><ellipse cx="764" cy="497.9063" 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="773" y="501.1167">next : urt_message_t*</text><ellipse cx="764" cy="510.7109" 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="773" y="513.9214">payload : void*</text><ellipse cx="764" cy="523.5156" 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="773" y="526.7261">originTime : urt_osTime_t</text><ellipse cx="764" cy="536.3203" 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="773" y="539.5308">numHrtConsumersLeft : unsigned int</text><ellipse cx="764" cy="565.9297" 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="773" y="569.1401">numConsumersLeft : unsigned int</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="754" x2="870" y1="552.5273" y2="552.5273"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="217" x="870" y="555.8354">URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1087" x2="1203" y1="552.5273" y2="552.5273"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="754" x2="1203" y1="575.7344" y2="575.7344"/><ellipse cx="764" cy="586.7344" 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="773" y="589.9448">urtMessageInit (message : urt_message_t*, payload : void*) : urt_status_t</text><!--MD5=[2ac85a9c1cceb8bb0c9045edc105e6e3]
10
class urt_publisher_t--><rect fill="#FEFECE" filter="url(#fijp6wls75jyj)" height="128.8281" id="urt_publisher_t" style="stroke: #A80036; stroke-width: 1.5;" width="759" x="6" y="195.9063"/><ellipse cx="334.75" cy="211.9063" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M334.2344,212.4688 Q332.375,211.7656 331.7188,211 Q331.0781,210.2188 331.0781,208.9063 Q331.0781,207.2188 332.1563,206.25 Q333.2344,205.2813 335.1094,205.2813 Q335.9688,205.2813 336.8125,205.4844 Q337.6719,205.6719 338.5156,206.0625 L338.5156,208.4531 Q337.7344,207.8906 336.9063,207.6094 Q336.0938,207.3125 335.2969,207.3125 Q334.4219,207.3125 333.9375,207.6719 Q333.4688,208.0313 333.4688,208.6875 Q333.4688,209.2031 333.8125,209.5469 Q334.1563,209.875 335.25,210.2813 L336.3125,210.6875 Q337.7969,211.2344 338.5,212.1406 Q339.2188,213.0469 339.2188,214.4219 Q339.2188,216.2969 338.1094,217.2188 Q337,218.1406 334.75,218.1406 Q333.8281,218.1406 332.9063,217.9219 Q331.9844,217.7031 331.125,217.2813 L331.125,214.75 Q332.0938,215.4375 333.0156,215.7813 Q333.9375,216.125 334.8281,216.125 Q335.7344,216.125 336.2344,215.7188 Q336.7344,215.2969 336.7344,214.5625 Q336.7344,214 336.3906,213.5938 Q336.0625,213.1719 335.4375,212.9219 L334.2344,212.4688 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="93" x="355.25" y="216.0605">urt_publisher_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="764" y1="227.9063" y2="227.9063"/><ellipse cx="17" cy="238.9063" 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="26" y="242.1167">topic : urt_topic_t*</text><ellipse cx="17" cy="268.5156" 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="26" y="271.7261">publishAttempts : uint64_t</text><ellipse cx="17" cy="281.3203" 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="26" y="284.5308">publishFails : uint64_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="7" x2="277" y1="255.1133" y2="255.1133"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="217" x="277" y="258.4214">URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="494" x2="764" y1="255.1133" y2="255.1133"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="764" y1="291.125" y2="291.125"/><ellipse cx="17" cy="302.125" 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="26" y="305.3354">urtPublisherInit (publisher : urt_publisher_t*, topic : urt_topic_t*, messages : urt_message_t*) : urt_status_t</text><ellipse cx="17" cy="314.9297" 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="26" y="318.1401">urtPublisherPublish (publisher : urt_publisher_t*, payload : void*, n : size_t, t : urt_osTime_t, timeout : urt_delay_t) : urt_status_t</text><!--MD5=[a1b1e66ec52c209a9fa2dab315cd7630]
11
class urt_topic_t--><rect fill="#FEFECE" filter="url(#fijp6wls75jyj)" height="248.0703" id="urt_topic_t" style="stroke: #A80036; stroke-width: 1.5;" width="384" x="800.5" y="136.4063"/><ellipse cx="955.25" cy="152.4063" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M954.7344,152.9688 Q952.875,152.2656 952.2188,151.5 Q951.5781,150.7188 951.5781,149.4063 Q951.5781,147.7188 952.6563,146.75 Q953.7344,145.7813 955.6094,145.7813 Q956.4688,145.7813 957.3125,145.9844 Q958.1719,146.1719 959.0156,146.5625 L959.0156,148.9531 Q958.2344,148.3906 957.4063,148.1094 Q956.5938,147.8125 955.7969,147.8125 Q954.9219,147.8125 954.4375,148.1719 Q953.9688,148.5313 953.9688,149.1875 Q953.9688,149.7031 954.3125,150.0469 Q954.6563,150.375 955.75,150.7813 L956.8125,151.1875 Q958.2969,151.7344 959,152.6406 Q959.7188,153.5469 959.7188,154.9219 Q959.7188,156.7969 958.6094,157.7188 Q957.5,158.6406 955.25,158.6406 Q954.3281,158.6406 953.4063,158.4219 Q952.4844,158.2031 951.625,157.7813 L951.625,155.25 Q952.5938,155.9375 953.5156,156.2813 Q954.4375,156.625 955.3281,156.625 Q956.2344,156.625 956.7344,156.2188 Q957.2344,155.7969 957.2344,155.0625 Q957.2344,154.5 956.8906,154.0938 Q956.5625,153.6719 955.9375,153.4219 L954.7344,152.9688 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="66" x="975.75" y="156.5605">urt_topic_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="801.5" x2="1183.5" y1="168.4063" y2="168.4063"/><ellipse cx="811.5" cy="179.4063" 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="820.5" y="182.6167">next : urt_topic_t*</text><ellipse cx="811.5" cy="192.2109" 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="820.5" y="195.4214">id : urt_topicid_t</text><ellipse cx="811.5" cy="205.0156" 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="820.5" y="208.2261">lock : urt_osMutex_t</text><ellipse cx="811.5" cy="217.8203" 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="820.5" y="221.0308">evtSource : urt_osEventSource_t</text><ellipse cx="811.5" cy="230.625" 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="820.5" y="233.8354">numHrtSubscribers : unsigned int</text><ellipse cx="811.5" cy="243.4297" 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="820.5" y="246.6401">hrtSubscribers : urt_hrtsubscriber_t*</text><ellipse cx="811.5" cy="256.2344" 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="820.5" y="259.4448">hrtReleased : urt_osCondvar_t</text><ellipse cx="811.5" cy="269.0391" 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="820.5" y="272.2495">mandatoryMessage : urt_message_t</text><ellipse cx="811.5" cy="281.8438" 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="820.5" y="285.0542">latestMessage : urt_message_t*</text><ellipse cx="811.5" cy="311.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="170" x="820.5" y="314.6636">qosRateTimer : urt_osTimer_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="801.5" x2="860" y1="298.0508" y2="298.0508"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="265" x="860" y="301.3589">URT_CFG_PUBSUB_QOS_RATECHECKS == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1125" x2="1183.5" y1="298.0508" y2="298.0508"/><ellipse cx="811.5" cy="341.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="197" x="820.5" y="344.2729">numDiscardedMessages : uint64_t</text><ellipse cx="811.5" cy="353.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="176" x="820.5" y="357.0776">numSubscribers : unsigned int</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="801.5" x2="884" y1="327.6602" y2="327.6602"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="217" x="884" y="330.9683">URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1101" x2="1183.5" y1="327.6602" y2="327.6602"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="801.5" x2="1183.5" y1="363.6719" y2="363.6719"/><ellipse cx="811.5" cy="374.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="358" x="820.5" y="377.8823">urtTopicInit (topic : urt_topic_t*, id : urt_topicid_t) : urt_status_t</text><!--MD5=[536025241394544a90bc53fb552f3a08]
12
reverse link urt_message_t to urt_message_t--><path d="M1216.0642,491.6464 C1230.3974,499.7971 1239,511.217 1239,525.9063 C1239,544.3399 1225.4528,557.625 1204.034,565.7617 " fill="none" id="urt_message_t&lt;-urt_message_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="1204.034,486.0508,1207.7873,492.2082,1214.9146,491.1118,1211.1613,484.9545,1204.034,486.0508" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="1212.2829" y="481.4249">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="1211.8281" y="563.8984">0..1</text><!--MD5=[0585cd4928de92ce6927d9c389eadd29]
13
link urt_nrtsubscriber_t to urt_basesubscriber_t--><path d="M2801.0488,337.5565 C2870.4782,374.8713 2953.218,419.3397 3020.864,455.6961 " fill="none" id="urt_nrtsubscriber_t-&gt;urt_basesubscriber_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="3024.314,449.6033,3038.617,465.2374,3017.6863,461.9351,3024.314,449.6033" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[37a8b7f2877a6b7bb4e9d0352ce3d221]
14
link urt_nrtsubscriber_t to urt_message_t--><path d="M2448.108,337.4631 C2379.3604,359.7152 2301.9849,381.5689 2229.5,394.9063 C1788.1168,476.1219 1663.6814,378.1555 1221.5,454.9063 C1217.376,455.6221 1213.2225,456.3828 1209.0475,457.1844 " 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="1204.1369,458.1437,1213.7369,460.3438,1209.0441,457.1849,1212.2029,452.4922,1204.1369,458.1437" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[6d81edfa5aa102b898ad487ae19b49f9]
15
link urt_srtsubscriber_t to urt_basesubscriber_t--><path d="M4407.1322,356.9519 C4346.0027,370.8759 4283.1722,384.1181 4223.5,394.9063 C3887.5331,455.6462 3487.1413,496.2563 3283.954,514.6423 " fill="none" id="urt_srtsubscriber_t-&gt;urt_basesubscriber_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="3284.5705,521.615,3264.0246,516.4315,3283.3186,507.6711,3284.5705,521.615" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[47304731969ac4130b45cc7169c5cada]
16
reverse link urt_srtsubscriber_t to urt_srtusefulnessfunc_t--><path d="M4782.5,370.0144 C4782.5,415.4315 4782.5,464.5778 4782.5,495.2952 " fill="none" id="urt_srtsubscriber_t&lt;-urt_srtusefulnessfunc_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="4782.5,357.0089,4778.5,363.0089,4782.5,369.0089,4786.5,363.0089,4782.5,357.0089" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="4774.2063" y="376.7311">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="4756.025" y="484.5355">0..1</text><!--MD5=[dffdac3aea8c81c86dd1d0b8122fcada]
17
link urt_srtsubscriber_t to urt_message_t--><path d="M4432.0378,356.9495 C4363.385,372.3858 4291.5632,386.1427 4223.5,394.9063 C3561.7187,480.115 1881.0384,353.7921 1221.5,454.9063 C1217.3627,455.5406 1213.1968,456.226 1209.0104,456.9577 " 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="1204.0869,457.8378,1213.6503,460.1916,1209.0089,456.9579,1212.2426,452.3164,1204.0869,457.8378" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[f626d284cba98e1d5d5fe914b1fa4188]
18
link urt_frtsubscriber_t to urt_basesubscriber_t--><path d="M2132.1239,373.4097 C2164.9595,381.1559 2197.7152,388.4394 2229.5,394.9063 C2508.098,451.5886 2838.991,492.2111 3018.8819,512.092 " fill="none" id="urt_frtsubscriber_t-&gt;urt_basesubscriber_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="3019.8785,505.1592,3038.9961,514.2978,3018.3522,519.0758,3019.8785,505.1592" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[cfcdebdb88febc368723fd91f781523c]
19
link urt_frtsubscriber_t to urt_message_t--><path d="M1406.7766,373.4835 C1330.9943,400.4543 1252.0987,428.533 1182.9788,453.1327 " 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="1178.0193,454.8978,1187.8395,455.6484,1182.7298,453.2212,1185.157,448.1115,1178.0193,454.8978" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[1ea71f2b33e56ab0ac5545988c1af396]
20
link urt_hrtsubscriber_t to urt_basesubscriber_t--><path d="M3395.2437,394.9064 C3356.0536,415.9691 3316.9728,436.9731 3281.9486,455.7968 " fill="none" id="urt_hrtsubscriber_t-&gt;urt_basesubscriber_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="3284.9546,462.1281,3264.0238,465.4304,3278.3268,449.7963,3284.9546,462.1281" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[ea2ec5c5272e65289dabade75a749f58]
21
reverse link urt_hrtsubscriber_t to urt_hrtsubscriber_t--><path d="M4199.8399,235.7858 C4214.3539,242.5949 4222.5,250.8018 4222.5,260.4063 C4222.5,272.459 4209.6717,282.3107 4187.5292,289.9614 " fill="none" id="urt_hrtsubscriber_t&lt;-urt_hrtsubscriber_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="4187.5292,230.8512,4191.6102,236.7964,4198.6677,235.3159,4194.5867,229.3707,4187.5292,230.8512" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="4195.2077" y="227.3988">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="4195.3202" y="287.3402">0..1</text><!--MD5=[a8adaa0500715125c1ab51b9b0fda3ce]
22
link urt_hrtsubscriber_t to urt_message_t--><path d="M3103.4186,392.3959 C3097.4199,393.2676 3091.4455,394.1051 3085.5,394.9063 C2264.051,505.5987 2040.0199,324.306 1221.5,454.9063 C1217.3666,455.5658 1213.2044,456.2745 1209.0214,457.0277 " 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="1204.1017,457.9324,1213.6767,460.2387,1209.0192,457.0281,1212.2299,452.3706,1204.1017,457.9324" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[54fcf25ad8c5f1d36e678e42d5bfd4cc]
23
reverse link urt_publisher_t to urt_topic_t--><path d="M778.3249,260.4063 C785.6324,260.4063 792.94,260.4063 800.2475,260.4063 " fill="none" id="urt_publisher_t&lt;-urt_topic_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="765.1714,260.4063,771.1714,264.4063,777.1714,260.4063,771.1714,256.4063,765.1714,260.4063" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="772.9647" y="257.3239">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="784.5814" y="257.1814">1</text><!--MD5=[5025b4c4053b8e7c7ca8a657f09f21c0]
24
link urt_publisher_t to urt_message_t--><path d="M529.8058,325.0154 C615.9437,363.5813 725.5937,412.6742 814.9361,452.6749 " 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="819.7121,454.8132,813.1324,447.4846,815.1486,452.77,809.8633,454.7862,819.7121,454.8132" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[6b2afc1defaa6ed5a86f99c07f8466dd]
25
reverse link urt_topic_t to urt_topic_t--><path d="M1196.5439,224.3234 C1210.8061,232.5595 1219.5,244.587 1219.5,260.4063 C1219.5,280.2579 1205.809,294.1384 1184.6039,302.0481 " fill="none" id="urt_topic_t&lt;-urt_topic_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="1184.6039,218.7645,1188.355,224.9232,1195.4826,223.8294,1191.7316,217.6707,1184.6039,218.7645" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="1192.2642" y="213.913">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="1192.5767" y="300.4498">0..1</text><!--MD5=[ed3fb6de0913094c41bd74c175d366df]
26
reverse link urt_topic_t to urt_hrtsubscriber_t--><path d="M1130.406,128.2476 C1163.5796,103.9181 1200.6064,82.0674 1239,68.9063 C1335.1205,35.9568 2967.6883,52.7082 3068,68.9063 C3144.3838,81.2405 3224.3368,102.1948 3299.5629,125.8263 " fill="none" id="urt_topic_t&lt;-urt_hrtsubscriber_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="1119.7739,136.226,1126.9738,135.8241,1129.372,129.0235,1122.1721,129.4253,1119.7739,136.226" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="1119.2859" y="125.2705">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="3254.8697" y="114.6867">0..1</text><!--MD5=[0b5167e958c0ed93ffc0c98ce399b54d]
27
reverse link urt_topic_t to urt_message_t--><path d="M985.2522,397.855 C984.2167,417.4927 983.1885,436.9931 982.2582,454.6344 " fill="none" id="urt_topic_t&lt;-urt_message_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="985.9509,384.6054,981.6405,390.3864,985.319,396.5887,989.6294,390.8077,985.9509,384.6054" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="977.3081" y="404.6996">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="974.2333" y="443.6037">1</text><!--MD5=[25a1c01fd1a45519879667c2d8772a97]
28
@startuml
29

    
30
title **µRtWare**\nPublish-Subscribe System
31

    
32

    
33

    
34

    
35

    
36

    
37

    
38

    
39

    
40

    
41

    
42

    
43

    
44
  class urt_message_t <<S,BFAFFF>> {
45
  + {field} next : urt_message_t*
46
  + {field} payload : void*
47
  + {field} originTime : urt_osTime_t
48
  + {field} numHrtConsumersLeft : unsigned int
49
  .. URT_CFG_PUBSUB_PROFILING == true ..
50
  + {field} numConsumersLeft : unsigned int
51
  __
52
  + {method} urtMessageInit (message : urt_message_t*, payload : void*) : urt_status_t
53
}
54

    
55
  package "subscriber" <<Rectangle>> {
56
    class urt_basesubscriber_t <<S,BFAFFF>> {
57
    + {field} topic : urt_topic_t*
58
    + {field} evtListener : urt_osEventListener_t
59
    + {field} lastMessage : urt_message_t*
60
    + {field} lastMessageTime : urt_osTime_t
61
    .. URT_CFG_PUBSUB_PROFILING == true ..
62
    + {field} sumLatencies : uint64_t
63
    + {field} numMessagesReceived : uint64_t
64
  }
65

    
66
    class urt_srtusefulnessfunc_t <<F,E0E0E0>> {
67
    urt_srtusefulnessfunc_t (dt : urt_delay_t, params : void*) : float
68
  }
69

    
70
    class urt_nrtsubscriber_t <<S,BFAFFF>> {
71
    .. URT_CFG_PUBSUB_PROFILING == true ..
72
    + {field} minLatency : urt_delay_t
73
    + {field} maxLatency : urt_delay_t
74
    __
75
    + {method} urtNrtSubscriberInit (subscriber : urt_nrtsubscriber_t*) : urt_status_t
76
    + {method} urtNrtSubscriberSubscribe (subscriber : urt_nrtsubscriber_t*, topic : urt_topic_t*, messages : urt_message_t*) : urt_status_t
77
    + {method} urtNrtSubscriberFetchNextMessage (subscriber : urt_nrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t
78
    + {method} urtNrtSubscriberFetchLatestMessage (subscriber : urt_nrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t
79
    + {method} urtNrtSubscriberUnsubscribe (subscriber : urt_nrtsubscriber_t*) : urt_status_t
80
  }
81

    
82
    class urt_srtsubscriber_t <<S,BFAFFF>> {
83
    + {field} usefulnesscb : urt_srtusefulnessfunc_t*
84
    + {field} cbparams : void*
85
    .. URT_CFG_PUBSUB_PROFILING == true ..
86
    + {field} minLatency : urt_delay_t
87
    + {field} maxLatency : urt_delay_t
88
    __
89
    + {method} urtSrtSubscriberInit (subscriber : urt_srtsubscriber_t*) : urt_status_t
90
    + {method} urtSrtSubscriberSubscribe (subscriber : urt_srtsubscriber_t*, topic : urt_topic_t*, messages : urt_message_t*, usefulnesscb : urt_srtusefulnessfunc_t*, cbparams : void*) : urt_status_t
91
    + {method} urtSrtSubscriberFetchNextMessage (subscriber : urt_srtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t
92
    + {method} urtSrtSubscriberFetchLatestMessage (subscriber : urt_srtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t
93
    + {method} urtSrtSubscriberCalculateUsefulness (subscriber : urt_srtsubscriber_t*, latency : urt_delay_t) : float
94
    + {method} urtSrtSubscriberUnsubscribe (subscriber : urt_srtsubscriber_t*) : urt_status_t
95
  }
96

    
97
    class urt_frtsubscriber_t <<S,BFAFFF>> {
98
    .. URT_CFG_PUBSUB_QOS_DEADLINECHECKS == true ..
99
    + {field} deadlineOffset : urt_delay_t
100
    .. URT_CFG_PUBSUB_QOS_JITTERCHECKS == true ..
101
    + {field} maxJitter : urt_delay_t
102
    .. URT_CFG_PUBSUB_QOS_JITTERCHECKS == true ||  URT_CFG_PUBSUB_PROFILING == true ..
103
    + {field} minLatency : urt_delay_t
104
    + {field} maxLatency : urt_delay_t
105
    __
106
    + {method} urtFrtSubscriberInit (subscriber : urt_frtsubscriber_t*) : urt_status_t
107
    + {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
108
    + {method} urtFrtSubscriberFetchNextMessage (subscriber : urt_frtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t
109
    + {method} urtFrtSubscriberFetchLatestMessage (subscriber : urt_frtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t
110
    + {method} urtFrtSubscriberCalculateValidity (subscriber : urt_frtsubscriber_t*, latency : urt_delay_t) : bool
111
    + {method} urtFrtSubscriberUnsubscribe (subscriber : urt_frtsubscriber_t*) : urt_status_t
112
  }
113

    
114
    class urt_hrtsubscriber_t <<S,BFAFFF>> {
115
    + {field} next : urt_hrtsubscriber_t*
116
    .. URT_CFG_PUBSUB_QOS_DEADLINECHECKS == true ..
117
    + {field} deadlineOffset : urt_delay_t
118
    + {field} qosDeadlineTimer : urt_osTimer_t
119
    .. URT_CFG_PUBSUB_QOS_JITTERCHECKS == true ..
120
    + {field} maxJitter : urt_delay_t
121
    .. URT_CFG_PUBSUB_QOS_JITTERCHECKS == true || URT_CFG_PUBSUB_PROFILING == true..
122
    + {field} minLatency : urt_delay_t
123
    + {field} maxLatency : urt_delay_t
124
    .. URT_CFG_PUBSUB_QOS_RATECHECKS == true ..
125
    + {field} expectedRate : urt_delay_t
126
    __
127
    + {method} urtHrtSubscriberInit (subscriber : urt_hrtsubscriber_t*) : urt_status_t
128
    + {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
129
    + {method} urtHrtSubscriberFetchNextMessage (subscriber : urt_hrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t
130
    + {method} urtHrtSubscriberFetchLatestMessage (subscriber : urt_hrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t
131
    + {method} urtHrtSubscriberUnsubscribe (subscriber : urt_hrtsubscriber_t*) : urt_status_t
132
  }
133
} 
134

    
135
  class urt_publisher_t <<S,BFAFFF>> {
136
  + {field} topic : urt_topic_t*
137
  .. URT_CFG_PUBSUB_PROFILING == true ..
138
  + {field} publishAttempts : uint64_t
139
  + {field} publishFails : uint64_t
140
  __
141
  + {method} urtPublisherInit (publisher : urt_publisher_t*, topic : urt_topic_t*, messages : urt_message_t*) : urt_status_t
142
  + {method} urtPublisherPublish (publisher : urt_publisher_t*, payload : void*, n : size_t, t : urt_osTime_t, timeout : urt_delay_t) : urt_status_t
143
}
144

    
145
  class urt_topic_t <<S,BFAFFF>> {
146
  + {field} next : urt_topic_t*
147
  + {field} id : urt_topicid_t
148
  + {field} lock : urt_osMutex_t
149
  + {field} evtSource : urt_osEventSource_t
150
  + {field} numHrtSubscribers : unsigned int
151
  + {field} hrtSubscribers : urt_hrtsubscriber_t*
152
  + {field} hrtReleased : urt_osCondvar_t
153
  + {field} mandatoryMessage : urt_message_t
154
  + {field} latestMessage : urt_message_t*
155
  .. URT_CFG_PUBSUB_QOS_RATECHECKS == true ..
156
  + {field} qosRateTimer : urt_osTimer_t
157
  .. URT_CFG_PUBSUB_PROFILING == true ..
158
  + {field} numDiscardedMessages : uint64_t
159
  + {field} numSubscribers : unsigned int
160
  __
161
  + {method} urtTopicInit (topic : urt_topic_t*, id : urt_topicid_t) : urt_status_t
162
}
163

    
164

    
165

    
166

    
167
urt_message_t "1" o- - "0..1" urt_message_t
168

    
169
urt_nrtsubscriber_t - -|> urt_basesubscriber_t
170
urt_nrtsubscriber_t ..> urt_message_t
171

    
172
urt_srtsubscriber_t - -|> urt_basesubscriber_t
173
urt_srtsubscriber_t "1" o- - "0..1" urt_srtusefulnessfunc_t
174
urt_srtsubscriber_t ..> urt_message_t
175

    
176
urt_frtsubscriber_t - -|> urt_basesubscriber_t
177
urt_frtsubscriber_t ..> urt_message_t
178

    
179
urt_hrtsubscriber_t - -|> urt_basesubscriber_t
180
urt_hrtsubscriber_t "1" o- - "0..1" urt_hrtsubscriber_t
181
urt_hrtsubscriber_t ..> urt_message_t
182

    
183
urt_publisher_t "1" o- "1" urt_topic_t
184
urt_publisher_t ..> urt_message_t
185

    
186
urt_topic_t "1" o- - "0..1" urt_topic_t
187
urt_topic_t "1" o- "0..1" urt_hrtsubscriber_t
188
urt_topic_t "1" *- - "1" urt_message_t
189

    
190

    
191

    
192
@enduml
193

    
194
PlantUML version 1.2020.00(Sat Jan 11 13:30:53 CET 2020)
195
(GPL source distribution)
196
Java Runtime: OpenJDK Runtime Environment
197
JVM: OpenJDK 64-Bit Server VM
198
Java Version: 11.0.6+10-post-Ubuntu-1ubuntu118.04.1
199
Operating System: Linux
200
Default Encoding: UTF-8
201
Language: en
202
Country: US
203
--></g></svg>