Statistics
| Branch: | Revision:

urtware / doc / classdiagrams / pubsub.svg @ dd31cb03

History | View | Annotate | Download (59.808 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:5367px;height:611px;" version="1.1" viewBox="0 0 5367 611" width="5367px" zoomAndPan="magnify"><defs><filter height="300%" id="f1vdqrr2j4r1ep" 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="2647" y="16.708">µRtWare</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="225" x="2579" y="37.6611">Publish-Subscribe System</text><!--MD5=[16a3bbbe805f94d6e6ce317c08ab945e]
2
cluster subscriber--><rect fill="#FFFFFF" filter="url(#f1vdqrr2j4r1ep)" height="502" style="stroke: #000000; stroke-width: 1.5;" width="4103" x="1253.5" y="98.9063"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="85" x="3262.5" y="113.9014">subscriber</text><!--MD5=[50a042e24f957794dab9ba3ea8701c50]
3
class urt_basesubscriber_t--><rect fill="#FEFECE" filter="url(#f1vdqrr2j4r1ep)" height="133.6328" id="urt_basesubscriber_t" style="stroke: #A80036; stroke-width: 1.5;" width="225" x="3063" y="458.9063"/><ellipse cx="3105.45" cy="474.9063" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M3104.9344,475.4688 Q3103.075,474.7656 3102.4188,474 Q3101.7781,473.2188 3101.7781,471.9063 Q3101.7781,470.2188 3102.8563,469.25 Q3103.9344,468.2813 3105.8094,468.2813 Q3106.6688,468.2813 3107.5125,468.4844 Q3108.3719,468.6719 3109.2156,469.0625 L3109.2156,471.4531 Q3108.4344,470.8906 3107.6063,470.6094 Q3106.7938,470.3125 3105.9969,470.3125 Q3105.1219,470.3125 3104.6375,470.6719 Q3104.1688,471.0313 3104.1688,471.6875 Q3104.1688,472.2031 3104.5125,472.5469 Q3104.8563,472.875 3105.95,473.2813 L3107.0125,473.6875 Q3108.4969,474.2344 3109.2,475.1406 Q3109.9188,476.0469 3109.9188,477.4219 Q3109.9188,479.2969 3108.8094,480.2188 Q3107.7,481.1406 3105.45,481.1406 Q3104.5281,481.1406 3103.6063,480.9219 Q3102.6844,480.7031 3101.825,480.2813 L3101.825,477.75 Q3102.7938,478.4375 3103.7156,478.7813 Q3104.6375,479.125 3105.5281,479.125 Q3106.4344,479.125 3106.9344,478.7188 Q3107.4344,478.2969 3107.4344,477.5625 Q3107.4344,477 3107.0906,476.5938 Q3106.7625,476.1719 3106.1375,475.9219 L3104.9344,475.4688 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="132" x="3125.55" y="479.0605">urt_basesubscriber_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3064" x2="3287" y1="490.9063" y2="490.9063"/><ellipse cx="3074" 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="3083" y="505.1167">topic : urt_topic_t*</text><ellipse cx="3074" 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="3083" y="517.9214">evtListener : urt_osEventListener_t</text><ellipse cx="3074" 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="3083" y="530.7261">lastMessage : urt_message_t*</text><ellipse cx="3074" 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="3083" y="543.5308">lastMessageTime : urt_osTime_t</text><ellipse cx="3074" 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="3083" y="573.1401">sumLatencies : uint64_t</text><ellipse cx="3074" 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="3083" y="585.9448">numMessagesReceived : uint64_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="3064" x2="3067" y1="556.5273" y2="556.5273"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="217" x="3067" y="559.8354">URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="3284" x2="3287" y1="556.5273" y2="556.5273"/><!--MD5=[fc7708c915a0148c667d62e1370980fd]
4
class urt_srtusefulnessfunc_t--><rect fill="#FEFECE" filter="url(#f1vdqrr2j4r1ep)" height="60.8047" id="urt_srtusefulnessfunc_t" style="stroke: #A80036; stroke-width: 1.5;" width="374" x="4619.5" y="495.4063"/><ellipse cx="4728.75" cy="511.4063" fill="#E0E0E0" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M4732.9844,507.1719 L4727.7031,507.1719 L4727.7031,509.8438 L4732.5,509.8438 L4732.5,512 L4727.7031,512 L4727.7031,517.4063 L4725.2656,517.4063 L4725.2656,505.0156 L4732.9844,505.0156 L4732.9844,507.1719 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="147" x="4749.25" y="515.5605">urt_srtusefulnessfunc_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="4620.5" x2="4992.5" y1="527.4063" y2="527.4063"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="4620.5" x2="4992.5" y1="535.4063" y2="535.4063"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="362" x="4625.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(#f1vdqrr2j4r1ep)" height="154.4375" id="urt_nrtsubscriber_t" style="stroke: #A80036; stroke-width: 1.5;" width="821" x="2271" y="183.4063"/><ellipse cx="2617.75" cy="199.4063" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M2617.2344,199.9688 Q2615.375,199.2656 2614.7188,198.5 Q2614.0781,197.7188 2614.0781,196.4063 Q2614.0781,194.7188 2615.1563,193.75 Q2616.2344,192.7813 2618.1094,192.7813 Q2618.9688,192.7813 2619.8125,192.9844 Q2620.6719,193.1719 2621.5156,193.5625 L2621.5156,195.9531 Q2620.7344,195.3906 2619.9063,195.1094 Q2619.0938,194.8125 2618.2969,194.8125 Q2617.4219,194.8125 2616.9375,195.1719 Q2616.4688,195.5313 2616.4688,196.1875 Q2616.4688,196.7031 2616.8125,197.0469 Q2617.1563,197.375 2618.25,197.7813 L2619.3125,198.1875 Q2620.7969,198.7344 2621.5,199.6406 Q2622.2188,200.5469 2622.2188,201.9219 Q2622.2188,203.7969 2621.1094,204.7188 Q2620,205.6406 2617.75,205.6406 Q2616.8281,205.6406 2615.9063,205.4219 Q2614.9844,205.2031 2614.125,204.7813 L2614.125,202.25 Q2615.0938,202.9375 2616.0156,203.2813 Q2616.9375,203.625 2617.8281,203.625 Q2618.7344,203.625 2619.2344,203.2188 Q2619.7344,202.7969 2619.7344,202.0625 Q2619.7344,201.5 2619.3906,201.0938 Q2619.0625,200.6719 2618.4375,200.4219 L2617.2344,199.9688 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="119" x="2638.25" y="203.5605">urt_nrtsubscriber_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="2272" x2="3091" y1="215.4063" y2="215.4063"/><ellipse cx="2282" 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="2291" y="246.4214">minLatency : urt_delay_t</text><ellipse cx="2282" 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="2291" y="259.2261">maxLatency : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="2272" x2="2573" y1="229.8086" y2="229.8086"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="217" x="2573" y="233.1167">URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="2790" x2="3091" y1="229.8086" y2="229.8086"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2272" x2="3091" y1="265.8203" y2="265.8203"/><ellipse cx="2282" 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="347" x="2291" y="280.0308">urtNrtSubscriberInit (subscriber : urt_nrtsubscriber_t*) : void</text><ellipse cx="2282" 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="2291" y="292.8354">urtNrtSubscriberSubscribe (subscriber : urt_nrtsubscriber_t*, topic : urt_topic_t*, messages : urt_message_t*) : urt_status_t</text><ellipse cx="2282" 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="2291" y="305.6401">urtNrtSubscriberFetchNextMessage (subscriber : urt_nrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="2282" 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="2291" y="318.4448">urtNrtSubscriberFetchLatestMessage (subscriber : urt_nrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="2282" 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="2291" y="331.2495">urtNrtSubscriberUnsubscribe (subscriber : urt_nrtsubscriber_t*) : urt_status_t</text><!--MD5=[5c7929572d87ccc448d875bea5da0fb1]
6
class urt_srtsubscriber_t--><rect fill="#FEFECE" filter="url(#f1vdqrr2j4r1ep)" height="192.8516" id="urt_srtsubscriber_t" style="stroke: #A80036; stroke-width: 1.5;" width="1084" x="4264.5" y="163.9063"/><ellipse cx="4743.25" cy="179.9063" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M4742.7344,180.4688 Q4740.875,179.7656 4740.2188,179 Q4739.5781,178.2188 4739.5781,176.9063 Q4739.5781,175.2188 4740.6563,174.25 Q4741.7344,173.2813 4743.6094,173.2813 Q4744.4688,173.2813 4745.3125,173.4844 Q4746.1719,173.6719 4747.0156,174.0625 L4747.0156,176.4531 Q4746.2344,175.8906 4745.4063,175.6094 Q4744.5938,175.3125 4743.7969,175.3125 Q4742.9219,175.3125 4742.4375,175.6719 Q4741.9688,176.0313 4741.9688,176.6875 Q4741.9688,177.2031 4742.3125,177.5469 Q4742.6563,177.875 4743.75,178.2813 L4744.8125,178.6875 Q4746.2969,179.2344 4747,180.1406 Q4747.7188,181.0469 4747.7188,182.4219 Q4747.7188,184.2969 4746.6094,185.2188 Q4745.5,186.1406 4743.25,186.1406 Q4742.3281,186.1406 4741.4063,185.9219 Q4740.4844,185.7031 4739.625,185.2813 L4739.625,182.75 Q4740.5938,183.4375 4741.5156,183.7813 Q4742.4375,184.125 4743.3281,184.125 Q4744.2344,184.125 4744.7344,183.7188 Q4745.2344,183.2969 4745.2344,182.5625 Q4745.2344,182 4744.8906,181.5938 Q4744.5625,181.1719 4743.9375,180.9219 L4742.7344,180.4688 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="118" x="4763.75" y="184.0605">urt_srtsubscriber_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="4265.5" x2="5347.5" y1="195.9063" y2="195.9063"/><ellipse cx="4275.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="4284.5" y="210.1167">usefulnesscb : urt_srtusefulnessfunc_t*</text><ellipse cx="4275.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="4284.5" y="222.9214">cbparams : void*</text><ellipse cx="4275.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="4284.5" y="252.5308">minLatency : urt_delay_t</text><ellipse cx="4275.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="4284.5" y="265.3354">maxLatency : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="4265.5" x2="4698" y1="235.918" y2="235.918"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="217" x="4698" y="239.2261">URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="4915" x2="5347.5" y1="235.918" y2="235.918"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="4265.5" x2="5347.5" y1="271.9297" y2="271.9297"/><ellipse cx="4275.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="347" x="4284.5" y="286.1401">urtSrtSubscriberInit (subscriber : urt_srtsubscriber_t*) : void</text><ellipse cx="4275.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="4284.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="4275.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="4284.5" y="311.7495">urtSrtSubscriberFetchNextMessage (subscriber : urt_srtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="4275.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="4284.5" y="324.5542">urtSrtSubscriberFetchLatestMessage (subscriber : urt_srtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="4275.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="4284.5" y="337.3589">urtSrtSubscriberCalculateUsefulness (subscriber : urt_srtsubscriber_t*, latency : urt_delay_t) : float</text><ellipse cx="4275.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="4284.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(#f1vdqrr2j4r1ep)" height="226.4609" id="urt_frtsubscriber_t" style="stroke: #A80036; stroke-width: 1.5;" width="974" x="1261.5" y="147.4063"/><ellipse cx="1686.75" cy="163.4063" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1686.2344,163.9688 Q1684.375,163.2656 1683.7188,162.5 Q1683.0781,161.7188 1683.0781,160.4063 Q1683.0781,158.7188 1684.1563,157.75 Q1685.2344,156.7813 1687.1094,156.7813 Q1687.9688,156.7813 1688.8125,156.9844 Q1689.6719,157.1719 1690.5156,157.5625 L1690.5156,159.9531 Q1689.7344,159.3906 1688.9063,159.1094 Q1688.0938,158.8125 1687.2969,158.8125 Q1686.4219,158.8125 1685.9375,159.1719 Q1685.4688,159.5313 1685.4688,160.1875 Q1685.4688,160.7031 1685.8125,161.0469 Q1686.1563,161.375 1687.25,161.7813 L1688.3125,162.1875 Q1689.7969,162.7344 1690.5,163.6406 Q1691.2188,164.5469 1691.2188,165.9219 Q1691.2188,167.7969 1690.1094,168.7188 Q1689,169.6406 1686.75,169.6406 Q1685.8281,169.6406 1684.9063,169.4219 Q1683.9844,169.2031 1683.125,168.7813 L1683.125,166.25 Q1684.0938,166.9375 1685.0156,167.2813 Q1685.9375,167.625 1686.8281,167.625 Q1687.7344,167.625 1688.2344,167.2188 Q1688.7344,166.7969 1688.7344,166.0625 Q1688.7344,165.5 1688.3906,165.0938 Q1688.0625,164.6719 1687.4375,164.4219 L1686.2344,163.9688 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="115" x="1707.25" y="167.5605">urt_frtsubscriber_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1262.5" x2="2234.5" y1="179.4063" y2="179.4063"/><ellipse cx="1272.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="1281.5" y="210.4214">deadlineOffset : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1262.5" x2="1603" y1="193.8086" y2="193.8086"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="291" x="1603" 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="1894" x2="2234.5" y1="193.8086" y2="193.8086"/><ellipse cx="1272.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="1281.5" y="240.0308">maxJitter : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1262.5" x2="1613" y1="223.418" y2="223.418"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="271" x="1613" 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="1884" x2="2234.5" y1="223.418" y2="223.418"/><ellipse cx="1272.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="1281.5" y="269.6401">minLatency : urt_delay_t</text><ellipse cx="1272.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="1281.5" y="282.4448">maxLatency : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1262.5" x2="1494.5" y1="253.0273" y2="253.0273"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="508" x="1494.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="2002.5" x2="2234.5" y1="253.0273" y2="253.0273"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1262.5" x2="2234.5" y1="289.0391" y2="289.0391"/><ellipse cx="1272.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="342" x="1281.5" y="303.2495">urtFrtSubscriberInit (subscriber : urt_frtsubscriber_t*) : void</text><ellipse cx="1272.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="1281.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="1272.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="1281.5" y="328.8589">urtFrtSubscriberFetchNextMessage (subscriber : urt_frtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="1272.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="1281.5" y="341.6636">urtFrtSubscriberFetchLatestMessage (subscriber : urt_frtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="1272.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="1281.5" y="354.4683">urtFrtSubscriberCalculateValidity (subscriber : urt_frtsubscriber_t*, latency : urt_delay_t) : bool</text><ellipse cx="1272.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="1281.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(#f1vdqrr2j4r1ep)" height="268.875" id="urt_hrtsubscriber_t" style="stroke: #A80036; stroke-width: 1.5;" width="1084" x="3127.5" y="125.9063"/><ellipse cx="3605.75" cy="141.9063" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M3605.2344,142.4688 Q3603.375,141.7656 3602.7188,141 Q3602.0781,140.2188 3602.0781,138.9063 Q3602.0781,137.2188 3603.1563,136.25 Q3604.2344,135.2813 3606.1094,135.2813 Q3606.9688,135.2813 3607.8125,135.4844 Q3608.6719,135.6719 3609.5156,136.0625 L3609.5156,138.4531 Q3608.7344,137.8906 3607.9063,137.6094 Q3607.0938,137.3125 3606.2969,137.3125 Q3605.4219,137.3125 3604.9375,137.6719 Q3604.4688,138.0313 3604.4688,138.6875 Q3604.4688,139.2031 3604.8125,139.5469 Q3605.1563,139.875 3606.25,140.2813 L3607.3125,140.6875 Q3608.7969,141.2344 3609.5,142.1406 Q3610.2188,143.0469 3610.2188,144.4219 Q3610.2188,146.2969 3609.1094,147.2188 Q3608,148.1406 3605.75,148.1406 Q3604.8281,148.1406 3603.9063,147.9219 Q3602.9844,147.7031 3602.125,147.2813 L3602.125,144.75 Q3603.0938,145.4375 3604.0156,145.7813 Q3604.9375,146.125 3605.8281,146.125 Q3606.7344,146.125 3607.2344,145.7188 Q3607.7344,145.2969 3607.7344,144.5625 Q3607.7344,144 3607.3906,143.5938 Q3607.0625,143.1719 3606.4375,142.9219 L3605.2344,142.4688 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="119" x="3626.25" y="146.0605">urt_hrtsubscriber_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3128.5" x2="4210.5" y1="157.9063" y2="157.9063"/><ellipse cx="3138.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="3147.5" y="172.1167">next : urt_hrtsubscriber_t*</text><ellipse cx="3138.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="3147.5" y="201.7261">deadlineOffset : urt_delay_t</text><ellipse cx="3138.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="3147.5" y="214.5308">qosDeadlineTimer : urt_osTimer_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="3128.5" x2="3524" y1="185.1133" y2="185.1133"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="291" x="3524" 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="3815" x2="4210.5" y1="185.1133" y2="185.1133"/><ellipse cx="3138.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="3147.5" y="244.1401">maxJitter : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="3128.5" x2="3534" y1="227.5273" y2="227.5273"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="271" x="3534" 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="3805" x2="4210.5" y1="227.5273" y2="227.5273"/><ellipse cx="3138.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="3147.5" y="273.7495">minLatency : urt_delay_t</text><ellipse cx="3138.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="3147.5" y="286.5542">maxLatency : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="3128.5" x2="3417.5" y1="257.1367" y2="257.1367"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="504" x="3417.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="3921.5" x2="4210.5" y1="257.1367" y2="257.1367"/><ellipse cx="3138.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="3147.5" y="316.1636">expectedRate : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="3128.5" x2="3537" y1="299.5508" y2="299.5508"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="265" x="3537" 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="3802" x2="4210.5" y1="299.5508" y2="299.5508"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="3128.5" x2="4210.5" y1="322.7578" y2="322.7578"/><ellipse cx="3138.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="347" x="3147.5" y="336.9683">urtHrtSubscriberInit (subscriber : urt_hrtsubscriber_t*) : void</text><ellipse cx="3138.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="3147.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="3138.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="3147.5" y="362.5776">urtHrtSubscriberFetchNextMessage (subscriber : urt_hrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="3138.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="3147.5" y="375.3823">urtHrtSubscriberFetchLatestMessage (subscriber : urt_hrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="3138.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="3147.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(#f1vdqrr2j4r1ep)" height="141.6328" id="urt_message_t" style="stroke: #A80036; stroke-width: 1.5;" width="406" x="821.5" y="454.9063"/><ellipse cx="974.25" cy="470.9063" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M973.7344,471.4688 Q971.875,470.7656 971.2188,470 Q970.5781,469.2188 970.5781,467.9063 Q970.5781,466.2188 971.6563,465.25 Q972.7344,464.2813 974.6094,464.2813 Q975.4688,464.2813 976.3125,464.4844 Q977.1719,464.6719 978.0156,465.0625 L978.0156,467.4531 Q977.2344,466.8906 976.4063,466.6094 Q975.5938,466.3125 974.7969,466.3125 Q973.9219,466.3125 973.4375,466.6719 Q972.9688,467.0313 972.9688,467.6875 Q972.9688,468.2031 973.3125,468.5469 Q973.6563,468.875 974.75,469.2813 L975.8125,469.6875 Q977.2969,470.2344 978,471.1406 Q978.7188,472.0469 978.7188,473.4219 Q978.7188,475.2969 977.6094,476.2188 Q976.5,477.1406 974.25,477.1406 Q973.3281,477.1406 972.4063,476.9219 Q971.4844,476.7031 970.625,476.2813 L970.625,473.75 Q971.5938,474.4375 972.5156,474.7813 Q973.4375,475.125 974.3281,475.125 Q975.2344,475.125 975.7344,474.7188 Q976.2344,474.2969 976.2344,473.5625 Q976.2344,473 975.8906,472.5938 Q975.5625,472.1719 974.9375,471.9219 L973.7344,471.4688 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="92" x="994.75" y="475.0605">urt_message_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="822.5" x2="1226.5" y1="486.9063" y2="486.9063"/><ellipse cx="832.5" 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="841.5" y="501.1167">next : urt_message_t*</text><ellipse cx="832.5" 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="841.5" y="513.9214">payload : void*</text><ellipse cx="832.5" 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="841.5" y="526.7261">originTime : urt_osTime_t</text><ellipse cx="832.5" 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="841.5" y="539.5308">numHrtConsumersLeft : unsigned int</text><ellipse cx="832.5" 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="841.5" y="569.1401">numConsumersLeft : unsigned int</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="822.5" x2="916" y1="552.5273" y2="552.5273"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="217" x="916" y="555.8354">URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1133" x2="1226.5" y1="552.5273" y2="552.5273"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="822.5" x2="1226.5" y1="575.7344" y2="575.7344"/><ellipse cx="832.5" 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="380" x="841.5" y="589.9448">urtMessageInit (message : urt_message_t*, payload : void*) : void</text><!--MD5=[2ac85a9c1cceb8bb0c9045edc105e6e3]
10
class urt_publisher_t--><rect fill="#FEFECE" filter="url(#f1vdqrr2j4r1ep)" height="128.8281" id="urt_publisher_t" style="stroke: #A80036; stroke-width: 1.5;" width="783" x="6" y="195.9063"/><ellipse cx="346.75" cy="211.9063" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M346.2344,212.4688 Q344.375,211.7656 343.7188,211 Q343.0781,210.2188 343.0781,208.9063 Q343.0781,207.2188 344.1563,206.25 Q345.2344,205.2813 347.1094,205.2813 Q347.9688,205.2813 348.8125,205.4844 Q349.6719,205.6719 350.5156,206.0625 L350.5156,208.4531 Q349.7344,207.8906 348.9063,207.6094 Q348.0938,207.3125 347.2969,207.3125 Q346.4219,207.3125 345.9375,207.6719 Q345.4688,208.0313 345.4688,208.6875 Q345.4688,209.2031 345.8125,209.5469 Q346.1563,209.875 347.25,210.2813 L348.3125,210.6875 Q349.7969,211.2344 350.5,212.1406 Q351.2188,213.0469 351.2188,214.4219 Q351.2188,216.2969 350.1094,217.2188 Q349,218.1406 346.75,218.1406 Q345.8281,218.1406 344.9063,217.9219 Q343.9844,217.7031 343.125,217.2813 L343.125,214.75 Q344.0938,215.4375 345.0156,215.7813 Q345.9375,216.125 346.8281,216.125 Q347.7344,216.125 348.2344,215.7188 Q348.7344,215.2969 348.7344,214.5625 Q348.7344,214 348.3906,213.5938 Q348.0625,213.1719 347.4375,212.9219 L346.2344,212.4688 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="93" x="367.25" y="216.0605">urt_publisher_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="788" 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="289" y1="255.1133" y2="255.1133"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="217" x="289" y="258.4214">URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="506" x2="788" y1="255.1133" y2="255.1133"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="788" 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="572" x="26" y="305.3354">urtPublisherInit (publisher : urt_publisher_t*, topic : urt_topic_t*, messages : urt_message_t*) : void</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="757" x="26" y="318.1401">urtPublisherPublish (publisher : urt_publisher_t*, payload : void*, bytes : 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(#f1vdqrr2j4r1ep)" height="260.875" id="urt_topic_t" style="stroke: #A80036; stroke-width: 1.5;" width="384" x="824.5" y="129.9063"/><ellipse cx="979.25" cy="145.9063" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M978.7344,146.4688 Q976.875,145.7656 976.2188,145 Q975.5781,144.2188 975.5781,142.9063 Q975.5781,141.2188 976.6563,140.25 Q977.7344,139.2813 979.6094,139.2813 Q980.4688,139.2813 981.3125,139.4844 Q982.1719,139.6719 983.0156,140.0625 L983.0156,142.4531 Q982.2344,141.8906 981.4063,141.6094 Q980.5938,141.3125 979.7969,141.3125 Q978.9219,141.3125 978.4375,141.6719 Q977.9688,142.0313 977.9688,142.6875 Q977.9688,143.2031 978.3125,143.5469 Q978.6563,143.875 979.75,144.2813 L980.8125,144.6875 Q982.2969,145.2344 983,146.1406 Q983.7188,147.0469 983.7188,148.4219 Q983.7188,150.2969 982.6094,151.2188 Q981.5,152.1406 979.25,152.1406 Q978.3281,152.1406 977.4063,151.9219 Q976.4844,151.7031 975.625,151.2813 L975.625,148.75 Q976.5938,149.4375 977.5156,149.7813 Q978.4375,150.125 979.3281,150.125 Q980.2344,150.125 980.7344,149.7188 Q981.2344,149.2969 981.2344,148.5625 Q981.2344,148 980.8906,147.5938 Q980.5625,147.1719 979.9375,146.9219 L978.7344,146.4688 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="66" x="999.75" y="150.0605">urt_topic_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="825.5" x2="1207.5" y1="161.9063" y2="161.9063"/><ellipse cx="835.5" cy="172.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="101" x="844.5" y="176.1167">next : urt_topic_t*</text><ellipse cx="835.5" cy="185.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="91" x="844.5" y="188.9214">id : urt_topicid_t</text><ellipse cx="835.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="113" x="844.5" y="201.7261">lock : urt_osMutex_t</text><ellipse cx="835.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="186" x="844.5" y="214.5308">evtSource : urt_osEventSource_t</text><ellipse cx="835.5" cy="224.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="193" x="844.5" y="227.3354">numHrtSubscribers : unsigned int</text><ellipse cx="835.5" cy="236.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="173" x="844.5" y="240.1401">hrtReleased : urt_osCondvar_t</text><ellipse cx="835.5" cy="249.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="209" x="844.5" y="252.9448">mandatoryMessage : urt_message_t</text><ellipse cx="835.5" cy="262.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="186" x="844.5" y="265.7495">latestMessage : urt_message_t*</text><ellipse cx="835.5" cy="292.1484" 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="844.5" y="295.3589">hrtSubscribers : urt_hrtsubscriber_t*</text><ellipse cx="835.5" cy="304.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="170" x="844.5" y="308.1636">qosRateTimer : urt_osTimer_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="825.5" x2="884" y1="278.7461" y2="278.7461"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="265" x="884" y="282.0542">URT_CFG_PUBSUB_QOS_RATECHECKS == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1149" x2="1207.5" y1="278.7461" y2="278.7461"/><ellipse cx="835.5" cy="334.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="195" x="844.5" y="337.7729">numMessagesPublished : uint64_t</text><ellipse cx="835.5" cy="347.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="197" x="844.5" y="350.5776">numMessagesDiscarded : uint64_t</text><ellipse cx="835.5" cy="360.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="176" x="844.5" y="363.3823">numSubscribers : unsigned int</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="825.5" x2="908" y1="321.1602" y2="321.1602"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="217" x="908" y="324.4683">URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1125" x2="1207.5" y1="321.1602" y2="321.1602"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="825.5" x2="1207.5" y1="369.9766" y2="369.9766"/><ellipse cx="835.5" cy="380.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="358" x="844.5" y="384.187">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="M1239.5848,490.4729 C1253.8521,498.6869 1262.5,510.498 1262.5,525.9063 C1262.5,545.2422 1248.8815,558.9133 1227.6293,566.9196 " fill="none" id="urt_message_t&lt;-urt_message_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="1227.6293,484.893,1231.3745,491.0552,1238.5032,489.9681,1234.758,483.8059,1227.6293,484.893" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="1235.7203" y="480.0746">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="1235.3605" y="565.1998">0..1</text><!--MD5=[0585cd4928de92ce6927d9c389eadd29]
13
link urt_nrtsubscriber_t to urt_basesubscriber_t--><path d="M2825.0488,337.5565 C2894.4782,374.8713 2977.218,419.3397 3044.864,455.6961 " fill="none" id="urt_nrtsubscriber_t-&gt;urt_basesubscriber_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="3048.314,449.6033,3062.617,465.2374,3041.6863,461.9351,3048.314,449.6033" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[37a8b7f2877a6b7bb4e9d0352ce3d221]
14
link urt_nrtsubscriber_t to urt_message_t--><path d="M2472.108,337.4631 C2403.3604,359.7152 2325.9849,381.5689 2253.5,394.9063 C1812.1168,476.1219 1686.6222,372.285 1245.5,454.9063 C1241.2295,455.7062 1236.9267,456.5646 1232.6019,457.4752 " 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="1227.5155,458.5678,1237.1549,460.5883,1232.404,457.5176,1235.4746,452.7667,1227.5155,458.5678" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[6d81edfa5aa102b898ad487ae19b49f9]
15
link urt_srtsubscriber_t to urt_basesubscriber_t--><path d="M4431.1322,356.9519 C4370.0027,370.8759 4307.1722,384.1181 4247.5,394.9063 C3911.5331,455.6462 3511.1413,496.2563 3307.954,514.6423 " fill="none" id="urt_srtsubscriber_t-&gt;urt_basesubscriber_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="3308.5705,521.615,3288.0246,516.4315,3307.3186,507.6711,3308.5705,521.615" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[47304731969ac4130b45cc7169c5cada]
16
reverse link urt_srtsubscriber_t to urt_srtusefulnessfunc_t--><path d="M4806.5,370.0144 C4806.5,415.4315 4806.5,464.5778 4806.5,495.2952 " fill="none" id="urt_srtsubscriber_t&lt;-urt_srtusefulnessfunc_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="4806.5,357.0089,4802.5,363.0089,4806.5,369.0089,4810.5,363.0089,4806.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="4798.2063" y="376.7311">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="4780.025" y="484.5355">0..1</text><!--MD5=[dffdac3aea8c81c86dd1d0b8122fcada]
17
link urt_srtsubscriber_t to urt_message_t--><path d="M4456.0378,356.9495 C4387.385,372.3858 4315.5632,386.1427 4247.5,394.9063 C3585.7187,480.115 1903.6362,345.0348 1245.5,454.9063 C1241.2859,455.6097 1237.0419,456.3768 1232.7776,457.2007 " 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="1227.7629,458.194,1237.3685,460.3692,1232.6676,457.2225,1235.8143,452.5216,1227.7629,458.194" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[f626d284cba98e1d5d5fe914b1fa4188]
18
link urt_frtsubscriber_t to urt_basesubscriber_t--><path d="M2156.1239,373.4097 C2188.9595,381.1559 2221.7152,388.4394 2253.5,394.9063 C2532.098,451.5886 2862.991,492.2111 3042.8819,512.092 " fill="none" id="urt_frtsubscriber_t-&gt;urt_basesubscriber_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="3043.8785,505.1592,3062.9961,514.2978,3042.3522,519.0758,3043.8785,505.1592" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[cfcdebdb88febc368723fd91f781523c]
19
link urt_frtsubscriber_t to urt_message_t--><path d="M1440.1465,373.4835 C1366.599,400.4543 1290.0301,428.533 1222.9486,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="1218.1353,454.8978,1227.9622,455.5544,1222.8296,453.1762,1225.2078,448.0436,1218.1353,454.8978" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[1ea71f2b33e56ab0ac5545988c1af396]
20
link urt_hrtsubscriber_t to urt_basesubscriber_t--><path d="M3419.2437,394.9064 C3380.0536,415.9691 3340.9728,436.9731 3305.9486,455.7968 " fill="none" id="urt_hrtsubscriber_t-&gt;urt_basesubscriber_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="3308.9546,462.1281,3288.0238,465.4304,3302.3268,449.7963,3308.9546,462.1281" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[ea2ec5c5272e65289dabade75a749f58]
21
reverse link urt_hrtsubscriber_t to urt_hrtsubscriber_t--><path d="M4223.8399,235.7858 C4238.3539,242.5949 4246.5,250.8018 4246.5,260.4063 C4246.5,272.459 4233.6717,282.3107 4211.5292,289.9614 " fill="none" id="urt_hrtsubscriber_t&lt;-urt_hrtsubscriber_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="4211.5292,230.8512,4215.6102,236.7964,4222.6677,235.3159,4218.5867,229.3707,4211.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="4219.2077" y="227.3988">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="4219.3202" y="287.3402">0..1</text><!--MD5=[a8adaa0500715125c1ab51b9b0fda3ce]
22
link urt_hrtsubscriber_t to urt_message_t--><path d="M3127.4186,392.3959 C3121.4199,393.2676 3115.4455,394.1051 3109.5,394.9063 C2288.051,505.5987 2062.2118,313.4382 1245.5,454.9063 C1241.2903,455.6355 1237.0503,456.426 1232.7896,457.2716 " 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="1227.7791,458.2892,1237.3952,460.4179,1232.6791,457.294,1235.8029,452.5779,1227.7791,458.2892" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[54fcf25ad8c5f1d36e678e42d5bfd4cc]
23
reverse link urt_publisher_t to urt_topic_t--><path d="M802.3622,260.4063 C809.6684,260.4063 816.9747,260.4063 824.2809,260.4063 " fill="none" id="urt_publisher_t&lt;-urt_topic_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="789.2109,260.4063,795.2109,264.4063,801.2109,260.4063,795.2109,256.4063,789.2109,260.4063" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="797.2488" y="257.3239">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="808.6161" y="257.1852">1</text><!--MD5=[5025b4c4053b8e7c7ca8a657f09f21c0]
24
link urt_publisher_t to urt_message_t--><path d="M550.0797,325.0154 C641.2468,363.6197 757.3237,412.7718 851.8397,452.7942 " 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="856.6079,454.8132,849.8801,447.6203,852.0037,452.8634,846.7606,454.987,856.6079,454.8132" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[6b2afc1defaa6ed5a86f99c07f8466dd]
25
reverse link urt_topic_t to urt_topic_t--><path d="M1220.5439,224.3234 C1234.8061,232.5595 1243.5,244.587 1243.5,260.4063 C1243.5,280.2579 1229.809,294.1384 1208.6039,302.0481 " fill="none" id="urt_topic_t&lt;-urt_topic_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="1208.6039,218.7645,1212.355,224.9232,1219.4826,223.8294,1215.7316,217.6707,1208.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="1216.2642" y="213.9168">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="1216.5767" y="300.4536">0..1</text><!--MD5=[ed3fb6de0913094c41bd74c175d366df]
26
reverse link urt_topic_t to urt_hrtsubscriber_t--><path d="M1163.0785,122.0086 C1193.9801,100.2117 1227.9195,80.9316 1263,68.9063 C1359.1205,35.9568 2991.6883,52.7082 3092,68.9063 C3168.3838,81.2405 3248.3368,102.1948 3323.5629,125.8263 " fill="none" id="urt_topic_t&lt;-urt_hrtsubscriber_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="1152.278,129.8155,1159.4839,129.5424,1162.0033,122.7857,1154.7973,123.0589,1152.278,129.8155" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="1151.8964" y="118.9065">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="24" x="3278.8697" y="114.6867">0..1</text><!--MD5=[0b5167e958c0ed93ffc0c98ce399b54d]
27
reverse link urt_topic_t to urt_message_t--><path d="M1020.8347,404.2655 C1021.3606,421.7169 1021.8787,438.9104 1022.3523,454.6283 " fill="none" id="urt_topic_t&lt;-urt_message_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1020.4414,391.2118,1016.624,397.3296,1020.803,403.2063,1024.6204,397.0885,1020.4414,391.2118" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="1012.4382" y="410.8493">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="1013.7183" y="443.5969">1</text><!--MD5=[af49c93758316ac56787a531006d9e3f]
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*) : void
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*) : void
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*) : void
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*) : void
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*) : void
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*) : void
142
  + {method} urtPublisherPublish (publisher : urt_publisher_t*, payload : void*, bytes : 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} hrtReleased : urt_osCondvar_t
152
  + {field} mandatoryMessage : urt_message_t
153
  + {field} latestMessage : urt_message_t*
154
  .. URT_CFG_PUBSUB_QOS_RATECHECKS == true ..
155
  + {field} hrtSubscribers : urt_hrtsubscriber_t*
156
  + {field} qosRateTimer : urt_osTimer_t
157
  .. URT_CFG_PUBSUB_PROFILING == true ..
158
  + {field} numMessagesPublished : uint64_t
159
  + {field} numMessagesDiscarded : uint64_t
160
  + {field} numSubscribers : unsigned int
161
  __
162
  + {method} urtTopicInit (topic : urt_topic_t*, id : urt_topicid_t) : urt_status_t
163
}
164

    
165

    
166

    
167

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

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

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

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

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

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

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

    
191

    
192

    
193
@enduml
194

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