Statistics
| Branch: | Revision:

urtware / doc / classdiagrams / pubsub.svg @ f6e5368e

History | View | Annotate | Download (57.938 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="797px" preserveAspectRatio="none" style="width:5337px;height:797px;" version="1.1" viewBox="0 0 5337 797" width="5337px" zoomAndPan="magnify"><defs><filter height="300%" id="fvsjqt0klpekf" 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="2627.5" y="16.708">µRtWare</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="225" x="2559.5" y="37.6611">Publish-Subscribe System</text><!--MD5=[16a3bbbe805f94d6e6ce317c08ab945e]
2
cluster subscriber--><rect fill="#FFFFFF" filter="url(#fvsjqt0klpekf)" height="498" style="stroke: #000000; stroke-width: 1.5;" width="4063" x="1253.5" y="94.9063"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="85" x="3242.5" y="109.9014">subscriber</text><!--MD5=[50a042e24f957794dab9ba3ea8701c50]
3
class urt_basesubscriber_t--><rect fill="#FEFECE" filter="url(#fvsjqt0klpekf)" height="133.6328" id="urt_basesubscriber_t" style="stroke: #A80036; stroke-width: 1.5;" width="225" x="2680" y="450.9063"/><ellipse cx="2722.45" cy="466.9063" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M2721.9344,467.4688 Q2720.075,466.7656 2719.4188,466 Q2718.7781,465.2188 2718.7781,463.9063 Q2718.7781,462.2188 2719.8563,461.25 Q2720.9344,460.2813 2722.8094,460.2813 Q2723.6688,460.2813 2724.5125,460.4844 Q2725.3719,460.6719 2726.2156,461.0625 L2726.2156,463.4531 Q2725.4344,462.8906 2724.6063,462.6094 Q2723.7938,462.3125 2722.9969,462.3125 Q2722.1219,462.3125 2721.6375,462.6719 Q2721.1688,463.0313 2721.1688,463.6875 Q2721.1688,464.2031 2721.5125,464.5469 Q2721.8563,464.875 2722.95,465.2813 L2724.0125,465.6875 Q2725.4969,466.2344 2726.2,467.1406 Q2726.9188,468.0469 2726.9188,469.4219 Q2726.9188,471.2969 2725.8094,472.2188 Q2724.7,473.1406 2722.45,473.1406 Q2721.5281,473.1406 2720.6063,472.9219 Q2719.6844,472.7031 2718.825,472.2813 L2718.825,469.75 Q2719.7938,470.4375 2720.7156,470.7813 Q2721.6375,471.125 2722.5281,471.125 Q2723.4344,471.125 2723.9344,470.7188 Q2724.4344,470.2969 2724.4344,469.5625 Q2724.4344,469 2724.0906,468.5938 Q2723.7625,468.1719 2723.1375,467.9219 L2721.9344,467.4688 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="132" x="2742.55" y="471.0605">urt_basesubscriber_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="2681" x2="2904" y1="482.9063" y2="482.9063"/><ellipse cx="2691" cy="493.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="2700" y="497.1167">topic : urt_topic_t*</text><ellipse cx="2691" cy="506.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="2700" y="509.9214">evtListener : urt_osEventListener_t</text><ellipse cx="2691" cy="519.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="2700" y="522.7261">lastMessage : urt_message_t*</text><ellipse cx="2691" cy="532.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="2700" y="535.5308">lastMessageTime : urt_osTime_t</text><ellipse cx="2691" cy="561.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="2700" y="565.1401">sumLatencies : uint64_t</text><ellipse cx="2691" cy="574.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="2700" y="577.9448">numMessagesReceived : uint64_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="2681" x2="2684" y1="548.5273" y2="548.5273"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="217" x="2684" y="551.8354">URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="2901" x2="2904" y1="548.5273" y2="548.5273"/><!--MD5=[9ff46073dd541e50679ef35e851c67d6]
4
class urt_nrtsubscriber_t--><rect fill="#FEFECE" filter="url(#fvsjqt0klpekf)" height="154.4375" id="urt_nrtsubscriber_t" style="stroke: #A80036; stroke-width: 1.5;" width="821" x="3350" y="179.4063"/><ellipse cx="3696.75" cy="195.4063" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M3696.2344,195.9688 Q3694.375,195.2656 3693.7188,194.5 Q3693.0781,193.7188 3693.0781,192.4063 Q3693.0781,190.7188 3694.1563,189.75 Q3695.2344,188.7813 3697.1094,188.7813 Q3697.9688,188.7813 3698.8125,188.9844 Q3699.6719,189.1719 3700.5156,189.5625 L3700.5156,191.9531 Q3699.7344,191.3906 3698.9063,191.1094 Q3698.0938,190.8125 3697.2969,190.8125 Q3696.4219,190.8125 3695.9375,191.1719 Q3695.4688,191.5313 3695.4688,192.1875 Q3695.4688,192.7031 3695.8125,193.0469 Q3696.1563,193.375 3697.25,193.7813 L3698.3125,194.1875 Q3699.7969,194.7344 3700.5,195.6406 Q3701.2188,196.5469 3701.2188,197.9219 Q3701.2188,199.7969 3700.1094,200.7188 Q3699,201.6406 3696.75,201.6406 Q3695.8281,201.6406 3694.9063,201.4219 Q3693.9844,201.2031 3693.125,200.7813 L3693.125,198.25 Q3694.0938,198.9375 3695.0156,199.2813 Q3695.9375,199.625 3696.8281,199.625 Q3697.7344,199.625 3698.2344,199.2188 Q3698.7344,198.7969 3698.7344,198.0625 Q3698.7344,197.5 3698.3906,197.0938 Q3698.0625,196.6719 3697.4375,196.4219 L3696.2344,195.9688 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="119" x="3717.25" y="199.5605">urt_nrtsubscriber_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3351" x2="4170" y1="211.4063" y2="211.4063"/><ellipse cx="3361" cy="239.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="3370" y="242.4214">minLatency : urt_delay_t</text><ellipse cx="3361" cy="252.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="3370" y="255.2261">maxLatency : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="3351" x2="3652" y1="225.8086" y2="225.8086"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="217" x="3652" y="229.1167">URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="3869" x2="4170" y1="225.8086" y2="225.8086"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="3351" x2="4170" y1="261.8203" y2="261.8203"/><ellipse cx="3361" cy="272.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="3370" y="276.0308">urtNrtSubscriberInit (subscriber : urt_nrtsubscriber_t*) : void</text><ellipse cx="3361" cy="285.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="3370" y="288.8354">urtNrtSubscriberSubscribe (subscriber : urt_nrtsubscriber_t*, topic : urt_topic_t*, messages : urt_message_t*) : urt_status_t</text><ellipse cx="3361" cy="298.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="3370" y="301.6401">urtNrtSubscriberFetchNextMessage (subscriber : urt_nrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="3361" cy="311.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="3370" y="314.4448">urtNrtSubscriberFetchLatestMessage (subscriber : urt_nrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="3361" cy="324.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="3370" y="327.2495">urtNrtSubscriberUnsubscribe (subscriber : urt_nrtsubscriber_t*) : urt_status_t</text><!--MD5=[5c7929572d87ccc448d875bea5da0fb1]
5
class urt_srtsubscriber_t--><rect fill="#FEFECE" filter="url(#fvsjqt0klpekf)" height="192.8516" id="urt_srtsubscriber_t" style="stroke: #A80036; stroke-width: 1.5;" width="1044" x="2270.5" y="159.9063"/><ellipse cx="2729.25" cy="175.9063" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M2728.7344,176.4688 Q2726.875,175.7656 2726.2188,175 Q2725.5781,174.2188 2725.5781,172.9063 Q2725.5781,171.2188 2726.6563,170.25 Q2727.7344,169.2813 2729.6094,169.2813 Q2730.4688,169.2813 2731.3125,169.4844 Q2732.1719,169.6719 2733.0156,170.0625 L2733.0156,172.4531 Q2732.2344,171.8906 2731.4063,171.6094 Q2730.5938,171.3125 2729.7969,171.3125 Q2728.9219,171.3125 2728.4375,171.6719 Q2727.9688,172.0313 2727.9688,172.6875 Q2727.9688,173.2031 2728.3125,173.5469 Q2728.6563,173.875 2729.75,174.2813 L2730.8125,174.6875 Q2732.2969,175.2344 2733,176.1406 Q2733.7188,177.0469 2733.7188,178.4219 Q2733.7188,180.2969 2732.6094,181.2188 Q2731.5,182.1406 2729.25,182.1406 Q2728.3281,182.1406 2727.4063,181.9219 Q2726.4844,181.7031 2725.625,181.2813 L2725.625,178.75 Q2726.5938,179.4375 2727.5156,179.7813 Q2728.4375,180.125 2729.3281,180.125 Q2730.2344,180.125 2730.7344,179.7188 Q2731.2344,179.2969 2731.2344,178.5625 Q2731.2344,178 2730.8906,177.5938 Q2730.5625,177.1719 2729.9375,176.9219 L2728.7344,176.4688 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="118" x="2749.75" y="180.0605">urt_srtsubscriber_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="2271.5" x2="3313.5" y1="191.9063" y2="191.9063"/><ellipse cx="2281.5" cy="202.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="189" x="2290.5" y="206.1167">usefulnesscb : urt_usefulness_f*</text><ellipse cx="2281.5" cy="215.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="2290.5" y="218.9214">cbparams : void*</text><ellipse cx="2281.5" cy="245.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="2290.5" y="248.5308">minLatency : urt_delay_t</text><ellipse cx="2281.5" cy="258.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="2290.5" y="261.3354">maxLatency : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="2271.5" x2="2684" y1="231.918" y2="231.918"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="217" x="2684" y="235.2261">URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="2901" x2="3313.5" y1="231.918" y2="231.918"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2271.5" x2="3313.5" y1="267.9297" y2="267.9297"/><ellipse cx="2281.5" cy="278.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="2290.5" y="282.1401">urtSrtSubscriberInit (subscriber : urt_srtsubscriber_t*) : void</text><ellipse cx="2281.5" cy="291.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="1018" x="2290.5" y="294.9448">urtSrtSubscriberSubscribe (subscriber : urt_srtsubscriber_t*, topic : urt_topic_t*, messages : urt_message_t*, usefulnesscb : urt_usefulness_f*, cbparams : void*) : urt_status_t</text><ellipse cx="2281.5" cy="304.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="2290.5" y="307.7495">urtSrtSubscriberFetchNextMessage (subscriber : urt_srtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="2281.5" cy="317.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="2290.5" y="320.5542">urtSrtSubscriberFetchLatestMessage (subscriber : urt_srtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="2281.5" cy="330.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="2290.5" y="333.3589">urtSrtSubscriberCalculateUsefulness (subscriber : urt_srtsubscriber_t*, latency : urt_delay_t) : float</text><ellipse cx="2281.5" cy="342.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="2290.5" y="346.1636">urtSrtSubscriberUnsubscribe (subscriber : urt_srtsubscriber_t*) : urt_status_t</text><!--MD5=[17838fb05fe219fd399839979ec8a4a4]
6
class urt_frtsubscriber_t--><rect fill="#FEFECE" filter="url(#fvsjqt0klpekf)" height="226.4609" id="urt_frtsubscriber_t" style="stroke: #A80036; stroke-width: 1.5;" width="974" x="1261.5" y="143.4063"/><ellipse cx="1686.75" cy="159.4063" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1686.2344,159.9688 Q1684.375,159.2656 1683.7188,158.5 Q1683.0781,157.7188 1683.0781,156.4063 Q1683.0781,154.7188 1684.1563,153.75 Q1685.2344,152.7813 1687.1094,152.7813 Q1687.9688,152.7813 1688.8125,152.9844 Q1689.6719,153.1719 1690.5156,153.5625 L1690.5156,155.9531 Q1689.7344,155.3906 1688.9063,155.1094 Q1688.0938,154.8125 1687.2969,154.8125 Q1686.4219,154.8125 1685.9375,155.1719 Q1685.4688,155.5313 1685.4688,156.1875 Q1685.4688,156.7031 1685.8125,157.0469 Q1686.1563,157.375 1687.25,157.7813 L1688.3125,158.1875 Q1689.7969,158.7344 1690.5,159.6406 Q1691.2188,160.5469 1691.2188,161.9219 Q1691.2188,163.7969 1690.1094,164.7188 Q1689,165.6406 1686.75,165.6406 Q1685.8281,165.6406 1684.9063,165.4219 Q1683.9844,165.2031 1683.125,164.7813 L1683.125,162.25 Q1684.0938,162.9375 1685.0156,163.2813 Q1685.9375,163.625 1686.8281,163.625 Q1687.7344,163.625 1688.2344,163.2188 Q1688.7344,162.7969 1688.7344,162.0625 Q1688.7344,161.5 1688.3906,161.0938 Q1688.0625,160.6719 1687.4375,160.4219 L1686.2344,159.9688 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="115" x="1707.25" y="163.5605">urt_frtsubscriber_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1262.5" x2="2234.5" y1="175.4063" y2="175.4063"/><ellipse cx="1272.5" cy="203.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="206.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="189.8086" y2="189.8086"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="291" x="1603" y="193.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="189.8086" y2="189.8086"/><ellipse cx="1272.5" cy="232.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="236.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="219.418" y2="219.418"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="271" x="1613" y="222.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="219.418" y2="219.418"/><ellipse cx="1272.5" cy="262.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="265.6401">minLatency : urt_delay_t</text><ellipse cx="1272.5" cy="275.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="278.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="249.0273" y2="249.0273"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="508" x="1494.5" y="252.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="249.0273" y2="249.0273"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1262.5" x2="2234.5" y1="285.0391" y2="285.0391"/><ellipse cx="1272.5" cy="296.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="299.2495">urtFrtSubscriberInit (subscriber : urt_frtsubscriber_t*) : void</text><ellipse cx="1272.5" cy="308.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="312.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="321.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="324.8589">urtFrtSubscriberFetchNextMessage (subscriber : urt_frtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="1272.5" cy="334.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="337.6636">urtFrtSubscriberFetchLatestMessage (subscriber : urt_frtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="1272.5" cy="347.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="350.4683">urtFrtSubscriberCalculateValidity (subscriber : urt_frtsubscriber_t*, latency : urt_delay_t) : bool</text><ellipse cx="1272.5" cy="360.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="363.2729">urtFrtSubscriberUnsubscribe (subscriber : urt_frtsubscriber_t*) : urt_status_t</text><!--MD5=[104dc879e5721421b987fcc467bc3a1d]
7
class urt_hrtsubscriber_t--><rect fill="#FEFECE" filter="url(#fvsjqt0klpekf)" height="268.875" id="urt_hrtsubscriber_t" style="stroke: #A80036; stroke-width: 1.5;" width="1084" x="4206.5" y="121.9063"/><ellipse cx="4684.75" cy="137.9063" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M4684.2344,138.4688 Q4682.375,137.7656 4681.7188,137 Q4681.0781,136.2188 4681.0781,134.9063 Q4681.0781,133.2188 4682.1563,132.25 Q4683.2344,131.2813 4685.1094,131.2813 Q4685.9688,131.2813 4686.8125,131.4844 Q4687.6719,131.6719 4688.5156,132.0625 L4688.5156,134.4531 Q4687.7344,133.8906 4686.9063,133.6094 Q4686.0938,133.3125 4685.2969,133.3125 Q4684.4219,133.3125 4683.9375,133.6719 Q4683.4688,134.0313 4683.4688,134.6875 Q4683.4688,135.2031 4683.8125,135.5469 Q4684.1563,135.875 4685.25,136.2813 L4686.3125,136.6875 Q4687.7969,137.2344 4688.5,138.1406 Q4689.2188,139.0469 4689.2188,140.4219 Q4689.2188,142.2969 4688.1094,143.2188 Q4687,144.1406 4684.75,144.1406 Q4683.8281,144.1406 4682.9063,143.9219 Q4681.9844,143.7031 4681.125,143.2813 L4681.125,140.75 Q4682.0938,141.4375 4683.0156,141.7813 Q4683.9375,142.125 4684.8281,142.125 Q4685.7344,142.125 4686.2344,141.7188 Q4686.7344,141.2969 4686.7344,140.5625 Q4686.7344,140 4686.3906,139.5938 Q4686.0625,139.1719 4685.4375,138.9219 L4684.2344,138.4688 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="119" x="4705.25" y="142.0605">urt_hrtsubscriber_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="4207.5" x2="5289.5" y1="153.9063" y2="153.9063"/><ellipse cx="4217.5" cy="164.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="4226.5" y="168.1167">next : urt_hrtsubscriber_t*</text><ellipse cx="4217.5" cy="194.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="4226.5" y="197.7261">deadlineOffset : urt_delay_t</text><ellipse cx="4217.5" cy="207.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="4226.5" y="210.5308">qosDeadlineTimer : urt_osTimer_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="4207.5" x2="4603" y1="181.1133" y2="181.1133"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="291" x="4603" y="184.4214">URT_CFG_PUBSUB_QOS_DEADLINECHECKS == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="4894" x2="5289.5" y1="181.1133" y2="181.1133"/><ellipse cx="4217.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="124" x="4226.5" y="240.1401">maxJitter : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="4207.5" x2="4613" y1="223.5273" y2="223.5273"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="271" x="4613" y="226.8354">URT_CFG_PUBSUB_QOS_JITTERCHECKS == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="4884" x2="5289.5" y1="223.5273" y2="223.5273"/><ellipse cx="4217.5" cy="266.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="4226.5" y="269.7495">minLatency : urt_delay_t</text><ellipse cx="4217.5" cy="279.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="4226.5" y="282.5542">maxLatency : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="4207.5" x2="4496.5" y1="253.1367" y2="253.1367"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="504" x="4496.5" y="256.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="5000.5" x2="5289.5" y1="253.1367" y2="253.1367"/><ellipse cx="4217.5" cy="308.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="4226.5" y="312.1636">expectedRate : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="4207.5" x2="4616" y1="295.5508" y2="295.5508"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="265" x="4616" y="298.8589">URT_CFG_PUBSUB_QOS_RATECHECKS == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="4881" x2="5289.5" y1="295.5508" y2="295.5508"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="4207.5" x2="5289.5" y1="318.7578" y2="318.7578"/><ellipse cx="4217.5" cy="329.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="4226.5" y="332.9683">urtHrtSubscriberInit (subscriber : urt_hrtsubscriber_t*) : void</text><ellipse cx="4217.5" cy="342.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="4226.5" y="345.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="4217.5" cy="355.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="4226.5" y="358.5776">urtHrtSubscriberFetchNextMessage (subscriber : urt_hrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="4217.5" cy="368.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="4226.5" y="371.3823">urtHrtSubscriberFetchLatestMessage (subscriber : urt_hrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="4217.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="446" x="4226.5" y="384.187">urtHrtSubscriberUnsubscribe (subscriber : urt_hrtsubscriber_t*) : urt_status_t</text><!--MD5=[e602aa6d45f270ad04f88c9ca5352b33]
8
class urt_message_t--><rect fill="#FEFECE" filter="url(#fvsjqt0klpekf)" height="141.6328" id="urt_message_t" style="stroke: #A80036; stroke-width: 1.5;" width="406" x="813.5" y="644.9063"/><ellipse cx="966.25" cy="660.9063" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M965.7344,661.4688 Q963.875,660.7656 963.2188,660 Q962.5781,659.2188 962.5781,657.9063 Q962.5781,656.2188 963.6563,655.25 Q964.7344,654.2813 966.6094,654.2813 Q967.4688,654.2813 968.3125,654.4844 Q969.1719,654.6719 970.0156,655.0625 L970.0156,657.4531 Q969.2344,656.8906 968.4063,656.6094 Q967.5938,656.3125 966.7969,656.3125 Q965.9219,656.3125 965.4375,656.6719 Q964.9688,657.0313 964.9688,657.6875 Q964.9688,658.2031 965.3125,658.5469 Q965.6563,658.875 966.75,659.2813 L967.8125,659.6875 Q969.2969,660.2344 970,661.1406 Q970.7188,662.0469 970.7188,663.4219 Q970.7188,665.2969 969.6094,666.2188 Q968.5,667.1406 966.25,667.1406 Q965.3281,667.1406 964.4063,666.9219 Q963.4844,666.7031 962.625,666.2813 L962.625,663.75 Q963.5938,664.4375 964.5156,664.7813 Q965.4375,665.125 966.3281,665.125 Q967.2344,665.125 967.7344,664.7188 Q968.2344,664.2969 968.2344,663.5625 Q968.2344,663 967.8906,662.5938 Q967.5625,662.1719 966.9375,661.9219 L965.7344,661.4688 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="92" x="986.75" y="665.0605">urt_message_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="814.5" x2="1218.5" y1="676.9063" y2="676.9063"/><ellipse cx="824.5" cy="687.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="833.5" y="691.1167">next : urt_message_t*</text><ellipse cx="824.5" cy="700.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="833.5" y="703.9214">payload : void*</text><ellipse cx="824.5" cy="713.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="833.5" y="716.7261">originTime : urt_osTime_t</text><ellipse cx="824.5" cy="726.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="833.5" y="729.5308">numHrtConsumersLeft : unsigned int</text><ellipse cx="824.5" cy="755.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="833.5" y="759.1401">numConsumersLeft : unsigned int</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="814.5" x2="908" y1="742.5273" y2="742.5273"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="217" x="908" y="745.8354">URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1125" x2="1218.5" y1="742.5273" y2="742.5273"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="814.5" x2="1218.5" y1="765.7344" y2="765.7344"/><ellipse cx="824.5" cy="776.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="833.5" y="779.9448">urtMessageInit (message : urt_message_t*, payload : void*) : void</text><!--MD5=[2ac85a9c1cceb8bb0c9045edc105e6e3]
9
class urt_publisher_t--><rect fill="#FEFECE" filter="url(#fvsjqt0klpekf)" height="196.0469" id="urt_publisher_t" style="stroke: #A80036; stroke-width: 1.5;" width="783" x="6" y="158.4063"/><ellipse cx="346.75" cy="174.4063" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M346.2344,174.9688 Q344.375,174.2656 343.7188,173.5 Q343.0781,172.7188 343.0781,171.4063 Q343.0781,169.7188 344.1563,168.75 Q345.2344,167.7813 347.1094,167.7813 Q347.9688,167.7813 348.8125,167.9844 Q349.6719,168.1719 350.5156,168.5625 L350.5156,170.9531 Q349.7344,170.3906 348.9063,170.1094 Q348.0938,169.8125 347.2969,169.8125 Q346.4219,169.8125 345.9375,170.1719 Q345.4688,170.5313 345.4688,171.1875 Q345.4688,171.7031 345.8125,172.0469 Q346.1563,172.375 347.25,172.7813 L348.3125,173.1875 Q349.7969,173.7344 350.5,174.6406 Q351.2188,175.5469 351.2188,176.9219 Q351.2188,178.7969 350.1094,179.7188 Q349,180.6406 346.75,180.6406 Q345.8281,180.6406 344.9063,180.4219 Q343.9844,180.2031 343.125,179.7813 L343.125,177.25 Q344.0938,177.9375 345.0156,178.2813 Q345.9375,178.625 346.8281,178.625 Q347.7344,178.625 348.2344,178.2188 Q348.7344,177.7969 348.7344,177.0625 Q348.7344,176.5 348.3906,176.0938 Q348.0625,175.6719 347.4375,175.4219 L346.2344,174.9688 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="93" x="367.25" y="178.5605">urt_publisher_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="788" y1="190.4063" y2="190.4063"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="289" x="12" y="204.6167">URT_PUBSUB_PUBLISHER_PUBLISH_TIMEOUT : bool</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="788" y1="211.2109" y2="211.2109"/><ellipse cx="17" cy="222.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="104" x="26" y="225.4214">topic : urt_topic_t*</text><ellipse cx="17" cy="251.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="149" x="26" y="255.0308">publishAttempts : uint64_t</text><ellipse cx="17" cy="264.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="124" x="26" y="267.8354">publishFails : uint64_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="7" x2="289" y1="238.418" y2="238.418"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="217" x="289" y="241.7261">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="238.418" y2="238.418"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="788" y1="274.4297" y2="274.4297"/><ellipse cx="17" cy="285.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="572" x="26" y="288.6401">urtPublisherInit (publisher : urt_publisher_t*, topic : urt_topic_t*, messages : urt_message_t*) : void</text><ellipse cx="17" cy="315.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="632" x="26" y="318.2495">urtPublisherPublish (publisher : urt_publisher_t*, payload : void*, bytes : size_t, t : urt_osTime_t) : urt_status_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="7" x2="244" y1="301.6367" y2="301.6367"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="307" x="244" y="304.9448">URT_PUBSUB_PUBLISHER_PUBLISH_TIMEOUT == false</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="551" x2="788" y1="301.6367" y2="301.6367"/><ellipse cx="17" cy="344.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="757" x="26" y="347.8589">urtPublisherPublish (publisher : urt_publisher_t*, payload : void*, bytes : size_t, t : urt_osTime_t, timeout : urt_delay_t) : urt_status_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="7" x2="246.5" y1="331.2461" y2="331.2461"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="302" x="246.5" y="334.5542">URT_PUBSUB_PUBLISHER_PUBLISH_TIMEOUT == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="548.5" x2="788" y1="331.2461" y2="331.2461"/><!--MD5=[a1b1e66ec52c209a9fa2dab315cd7630]
10
class urt_topic_t--><rect fill="#FEFECE" filter="url(#fvsjqt0klpekf)" height="260.875" id="urt_topic_t" style="stroke: #A80036; stroke-width: 1.5;" width="384" x="824.5" y="125.9063"/><ellipse cx="979.25" cy="141.9063" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M978.7344,142.4688 Q976.875,141.7656 976.2188,141 Q975.5781,140.2188 975.5781,138.9063 Q975.5781,137.2188 976.6563,136.25 Q977.7344,135.2813 979.6094,135.2813 Q980.4688,135.2813 981.3125,135.4844 Q982.1719,135.6719 983.0156,136.0625 L983.0156,138.4531 Q982.2344,137.8906 981.4063,137.6094 Q980.5938,137.3125 979.7969,137.3125 Q978.9219,137.3125 978.4375,137.6719 Q977.9688,138.0313 977.9688,138.6875 Q977.9688,139.2031 978.3125,139.5469 Q978.6563,139.875 979.75,140.2813 L980.8125,140.6875 Q982.2969,141.2344 983,142.1406 Q983.7188,143.0469 983.7188,144.4219 Q983.7188,146.2969 982.6094,147.2188 Q981.5,148.1406 979.25,148.1406 Q978.3281,148.1406 977.4063,147.9219 Q976.4844,147.7031 975.625,147.2813 L975.625,144.75 Q976.5938,145.4375 977.5156,145.7813 Q978.4375,146.125 979.3281,146.125 Q980.2344,146.125 980.7344,145.7188 Q981.2344,145.2969 981.2344,144.5625 Q981.2344,144 980.8906,143.5938 Q980.5625,143.1719 979.9375,142.9219 L978.7344,142.4688 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="66" x="999.75" y="146.0605">urt_topic_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="825.5" x2="1207.5" y1="157.9063" y2="157.9063"/><ellipse cx="835.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="101" x="844.5" y="172.1167">next : urt_topic_t*</text><ellipse cx="835.5" cy="181.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="184.9214">id : urt_topicid_t</text><ellipse cx="835.5" cy="194.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="197.7261">lock : urt_osMutex_t</text><ellipse cx="835.5" cy="207.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="210.5308">evtSource : urt_osEventSource_t</text><ellipse cx="835.5" cy="220.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="223.3354">numHrtSubscribers : unsigned int</text><ellipse cx="835.5" cy="232.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="236.1401">hrtReleased : urt_osCondvar_t</text><ellipse cx="835.5" cy="245.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="248.9448">mandatoryMessage : urt_message_t</text><ellipse cx="835.5" cy="258.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="261.7495">latestMessage : urt_message_t*</text><ellipse cx="835.5" cy="288.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="291.3589">hrtSubscribers : urt_hrtsubscriber_t*</text><ellipse cx="835.5" cy="300.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="304.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="274.7461" y2="274.7461"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="265" x="884" y="278.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="274.7461" y2="274.7461"/><ellipse cx="835.5" cy="330.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="333.7729">numMessagesPublished : uint64_t</text><ellipse cx="835.5" cy="343.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="346.5776">numMessagesDiscarded : uint64_t</text><ellipse cx="835.5" cy="356.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="359.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="317.1602" y2="317.1602"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="217" x="908" y="320.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="317.1602" y2="317.1602"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="825.5" x2="1207.5" y1="365.9766" y2="365.9766"/><ellipse cx="835.5" cy="376.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="380.187">urtTopicInit (topic : urt_topic_t*, id : urt_topicid_t) : urt_status_t</text><!--MD5=[536025241394544a90bc53fb552f3a08]
11
reverse link urt_message_t to urt_message_t--><path d="M1232.0028,689.5133 C1246.0209,695.6657 1254.5,704.4634 1254.5,715.9063 C1254.5,730.4083 1240.8815,740.6616 1219.6293,746.6663 " fill="none" id="urt_message_t&lt;-urt_message_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="1219.6293,685.1463,1223.956,690.9151,1230.9452,689.14,1226.6185,683.3712,1219.6293,685.1463" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="1227.7203" y="680.7284">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="20" x="1227.2886" y="744.578">0,1</text><!--MD5=[aa8990705afdbad14c7f998fe04b6f05]
12
reverse link urt_basesubscriber_t to urt_message_t--><path d="M2666.4993,531.9537 C2363.0553,565.7836 1589.5394,652.0201 1219.5884,693.2647 " fill="none" id="urt_basesubscriber_t&lt;-urt_message_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="2679.718,530.4799,2673.3117,527.1695,2667.7919,531.8097,2674.1982,535.1202,2679.718,530.4799" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="2663.8717" y="527.9045">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="20" x="1227.2463" y="704.7964">0,1</text><!--MD5=[0585cd4928de92ce6927d9c389eadd29]
13
link urt_nrtsubscriber_t to urt_basesubscriber_t--><path d="M3526.2283,333.4389 C3463.5669,353.1064 3395.689,373.5723 3332.5,390.9063 C3194.3193,428.812 3034.3631,465.5535 2924.6129,489.6812 " fill="none" id="urt_nrtsubscriber_t-&gt;urt_basesubscriber_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="2926.0966,496.5221,2905.0621,493.9626,2923.1016,482.8462,2926.0966,496.5221" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[6d81edfa5aa102b898ad487ae19b49f9]
14
link urt_srtsubscriber_t to urt_basesubscriber_t--><path d="M2792.5,353.0363 C2792.5,378.3836 2792.5,405.5704 2792.5,430.41 " fill="none" id="urt_srtsubscriber_t-&gt;urt_basesubscriber_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="2799.5001,430.6313,2792.5,450.6312,2785.5001,430.6312,2799.5001,430.6313" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[f626d284cba98e1d5d5fe914b1fa4188]
15
link urt_frtsubscriber_t to urt_basesubscriber_t--><path d="M2169.1729,369.427 C2197.6878,376.7857 2225.9994,384.0058 2253.5,390.9063 C2391.7604,425.5991 2550.6746,462.7076 2659.9377,487.7957 " fill="none" id="urt_frtsubscriber_t-&gt;urt_basesubscriber_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="2661.8156,481.0446,2679.7455,492.337,2658.687,494.6905,2661.8156,481.0446" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[1ea71f2b33e56ab0ac5545988c1af396]
16
link urt_hrtsubscriber_t to urt_basesubscriber_t--><path d="M4206.3442,387.8991 C4200.3691,388.9284 4194.4195,389.9315 4188.5,390.9063 C3728.3838,466.6802 3174.9618,500.1722 2925.6847,512.2261 " fill="none" id="urt_hrtsubscriber_t-&gt;urt_basesubscriber_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="2925.7015,519.2331,2905.3912,513.1923,2925.0356,505.249,2925.7015,519.2331" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[ea2ec5c5272e65289dabade75a749f58]
17
reverse link urt_hrtsubscriber_t to urt_hrtsubscriber_t--><path d="M5302.8399,232.1588 C5317.3539,238.8647 5325.5,246.9473 5325.5,256.4063 C5325.5,268.2764 5312.6717,277.9788 5290.5292,285.5136 " fill="none" id="urt_hrtsubscriber_t&lt;-urt_hrtsubscriber_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="5290.5292,227.299,5294.6414,233.2226,5301.691,231.7052,5297.5788,225.7815,5290.5292,227.299" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="5298.2077" y="223.8529">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="20" x="5298.2921" y="282.8861">0,1</text><!--MD5=[54fcf25ad8c5f1d36e678e42d5bfd4cc]
18
reverse link urt_publisher_t to urt_topic_t--><path d="M802.3622,256.4063 C809.6684,256.4063 816.9747,256.4063 824.2809,256.4063 " fill="none" id="urt_publisher_t&lt;-urt_topic_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="789.2109,256.4063,795.2109,260.4063,801.2109,256.4063,795.2109,252.4063,789.2109,256.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="253.3217">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="808.6161" y="253.1852">1</text><!--MD5=[5025b4c4053b8e7c7ca8a657f09f21c0]
19
link urt_publisher_t to urt_message_t--><path d="M529.5318,354.417 C645.3911,440.4224 811.3639,563.6284 916.516,641.6855 " 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="920.5419,644.6741,915.6996,636.0978,916.5272,641.6938,910.9312,642.5213,920.5419,644.6741" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[6b2afc1defaa6ed5a86f99c07f8466dd]
20
reverse link urt_topic_t to urt_topic_t--><path d="M1220.5439,220.8703 C1234.8061,228.9814 1243.5,240.8267 1243.5,256.4063 C1243.5,275.9571 1229.809,289.6274 1208.6039,297.4171 " fill="none" id="urt_topic_t&lt;-urt_topic_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="1208.6039,215.3954,1212.3907,221.5322,1219.5119,220.3971,1215.7251,214.2603,1208.6039,215.3954" 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="210.5724">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="20" x="1216.4986" y="295.798">0,1</text><!--MD5=[ed3fb6de0913094c41bd74c175d366df]
21
reverse link urt_topic_t to urt_hrtsubscriber_t--><path d="M1163.0785,118.0086 C1193.9801,96.2116 1227.9195,76.9316 1263,64.9063 C1339.4129,38.7124 4091.2552,52.0293 4171,64.9063 C4247.3838,77.2405 4327.3368,98.1948 4402.5629,121.8264 " fill="none" id="urt_topic_t&lt;-urt_hrtsubscriber_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="1152.278,125.8156,1159.4839,125.5424,1162.0033,118.7857,1154.7973,119.0589,1152.278,125.8156" 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="114.9065">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="20" x="4361.9853" y="110.6867">0,1</text><!--MD5=[0b5167e958c0ed93ffc0c98ce399b54d]
22
reverse link urt_topic_t to urt_message_t--><path d="M1016.5,400.3211 C1016.5,481.6692 1016.5,579.7848 1016.5,644.7927 " fill="none" id="urt_topic_t&lt;-urt_message_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1016.5,387.1584,1012.5,393.1584,1016.5,399.1584,1020.5,393.1584,1016.5,387.1584" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="1008.2813" y="406.793">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="1008.0875" y="633.7783">1</text><!--MD5=[3963fa39dea3a9aae9fd717b2dc4370c]
23
@startuml
24

    
25
title **µRtWare**\nPublish-Subscribe System
26

    
27

    
28

    
29

    
30

    
31

    
32

    
33

    
34

    
35

    
36

    
37

    
38

    
39
  class urt_message_t <<S,BFAFFF>> {
40
  + {field} next : urt_message_t*
41
  + {field} payload : void*
42
  + {field} originTime : urt_osTime_t
43
  + {field} numHrtConsumersLeft : unsigned int
44
  .. URT_CFG_PUBSUB_PROFILING == true ..
45
  + {field} numConsumersLeft : unsigned int
46
  __
47
  + {method} urtMessageInit (message : urt_message_t*, payload : void*) : void
48
}
49

    
50
  package "subscriber" <<Rectangle>> {
51
    class urt_basesubscriber_t <<S,BFAFFF>> {
52
    + {field} topic : urt_topic_t*
53
    + {field} evtListener : urt_osEventListener_t
54
    + {field} lastMessage : urt_message_t*
55
    + {field} lastMessageTime : urt_osTime_t
56
    .. URT_CFG_PUBSUB_PROFILING == true ..
57
    + {field} sumLatencies : uint64_t
58
    + {field} numMessagesReceived : uint64_t
59
  }
60

    
61
    class urt_nrtsubscriber_t <<S,BFAFFF>> {
62
    .. URT_CFG_PUBSUB_PROFILING == true ..
63
    + {field} minLatency : urt_delay_t
64
    + {field} maxLatency : urt_delay_t
65
    __
66
    + {method} urtNrtSubscriberInit (subscriber : urt_nrtsubscriber_t*) : void
67
    + {method} urtNrtSubscriberSubscribe (subscriber : urt_nrtsubscriber_t*, topic : urt_topic_t*, messages : urt_message_t*) : urt_status_t
68
    + {method} urtNrtSubscriberFetchNextMessage (subscriber : urt_nrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t
69
    + {method} urtNrtSubscriberFetchLatestMessage (subscriber : urt_nrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t
70
    + {method} urtNrtSubscriberUnsubscribe (subscriber : urt_nrtsubscriber_t*) : urt_status_t
71
  }
72

    
73
    class urt_srtsubscriber_t <<S,BFAFFF>> {
74
    + {field} usefulnesscb : urt_usefulness_f*
75
    + {field} cbparams : void*
76
    .. URT_CFG_PUBSUB_PROFILING == true ..
77
    + {field} minLatency : urt_delay_t
78
    + {field} maxLatency : urt_delay_t
79
    __
80
    + {method} urtSrtSubscriberInit (subscriber : urt_srtsubscriber_t*) : void
81
    + {method} urtSrtSubscriberSubscribe (subscriber : urt_srtsubscriber_t*, topic : urt_topic_t*, messages : urt_message_t*, usefulnesscb : urt_usefulness_f*, cbparams : void*) : urt_status_t
82
    + {method} urtSrtSubscriberFetchNextMessage (subscriber : urt_srtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t
83
    + {method} urtSrtSubscriberFetchLatestMessage (subscriber : urt_srtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t
84
    + {method} urtSrtSubscriberCalculateUsefulness (subscriber : urt_srtsubscriber_t*, latency : urt_delay_t) : float
85
    + {method} urtSrtSubscriberUnsubscribe (subscriber : urt_srtsubscriber_t*) : urt_status_t
86
  }
87

    
88
    class urt_frtsubscriber_t <<S,BFAFFF>> {
89
    .. URT_CFG_PUBSUB_QOS_DEADLINECHECKS == true ..
90
    + {field} deadlineOffset : urt_delay_t
91
    .. URT_CFG_PUBSUB_QOS_JITTERCHECKS == true ..
92
    + {field} maxJitter : urt_delay_t
93
    .. URT_CFG_PUBSUB_QOS_JITTERCHECKS == true ||  URT_CFG_PUBSUB_PROFILING == true ..
94
    + {field} minLatency : urt_delay_t
95
    + {field} maxLatency : urt_delay_t
96
    __
97
    + {method} urtFrtSubscriberInit (subscriber : urt_frtsubscriber_t*) : void
98
    + {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
99
    + {method} urtFrtSubscriberFetchNextMessage (subscriber : urt_frtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t
100
    + {method} urtFrtSubscriberFetchLatestMessage (subscriber : urt_frtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t
101
    + {method} urtFrtSubscriberCalculateValidity (subscriber : urt_frtsubscriber_t*, latency : urt_delay_t) : bool
102
    + {method} urtFrtSubscriberUnsubscribe (subscriber : urt_frtsubscriber_t*) : urt_status_t
103
  }
104

    
105
    class urt_hrtsubscriber_t <<S,BFAFFF>> {
106
    + {field} next : urt_hrtsubscriber_t*
107
    .. URT_CFG_PUBSUB_QOS_DEADLINECHECKS == true ..
108
    + {field} deadlineOffset : urt_delay_t
109
    + {field} qosDeadlineTimer : urt_osTimer_t
110
    .. URT_CFG_PUBSUB_QOS_JITTERCHECKS == true ..
111
    + {field} maxJitter : urt_delay_t
112
    .. URT_CFG_PUBSUB_QOS_JITTERCHECKS == true || URT_CFG_PUBSUB_PROFILING == true..
113
    + {field} minLatency : urt_delay_t
114
    + {field} maxLatency : urt_delay_t
115
    .. URT_CFG_PUBSUB_QOS_RATECHECKS == true ..
116
    + {field} expectedRate : urt_delay_t
117
    __
118
    + {method} urtHrtSubscriberInit (subscriber : urt_hrtsubscriber_t*) : void
119
    + {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
120
    + {method} urtHrtSubscriberFetchNextMessage (subscriber : urt_hrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t
121
    + {method} urtHrtSubscriberFetchLatestMessage (subscriber : urt_hrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t
122
    + {method} urtHrtSubscriberUnsubscribe (subscriber : urt_hrtsubscriber_t*) : urt_status_t
123
  }
124
} 
125

    
126
  class urt_publisher_t <<S,BFAFFF>> {
127
  URT_PUBSUB_PUBLISHER_PUBLISH_TIMEOUT : bool
128
  __
129
  + {field} topic : urt_topic_t*
130
  .. URT_CFG_PUBSUB_PROFILING == true ..
131
  + {field} publishAttempts : uint64_t
132
  + {field} publishFails : uint64_t
133
  __
134
  + {method} urtPublisherInit (publisher : urt_publisher_t*, topic : urt_topic_t*, messages : urt_message_t*) : void
135
  .. URT_PUBSUB_PUBLISHER_PUBLISH_TIMEOUT == false ..
136
  + {method} urtPublisherPublish (publisher : urt_publisher_t*, payload : void*, bytes : size_t, t : urt_osTime_t) : urt_status_t
137
  .. URT_PUBSUB_PUBLISHER_PUBLISH_TIMEOUT == true ..
138
  + {method} urtPublisherPublish (publisher : urt_publisher_t*, payload : void*, bytes : size_t, t : urt_osTime_t, timeout : urt_delay_t) : urt_status_t
139
}
140

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

    
161

    
162

    
163

    
164
urt_message_t "1" o- "0,1" urt_message_t
165

    
166
urt_basesubscriber_t "1" o- - "0,1" urt_message_t
167

    
168
urt_nrtsubscriber_t - -|> urt_basesubscriber_t
169

    
170
urt_srtsubscriber_t - -|> urt_basesubscriber_t
171

    
172
urt_frtsubscriber_t - -|> urt_basesubscriber_t
173

    
174
urt_hrtsubscriber_t - -|> urt_basesubscriber_t
175
urt_hrtsubscriber_t "1" o- "0,1" urt_hrtsubscriber_t
176

    
177
urt_publisher_t "1" o- "1" urt_topic_t
178
urt_publisher_t ..> urt_message_t
179

    
180
urt_topic_t "1" o- "0,1" urt_topic_t
181
urt_topic_t "1" o- "0,1" urt_hrtsubscriber_t
182
urt_topic_t "1" *- - "1" urt_message_t
183

    
184

    
185

    
186
@enduml
187

    
188
PlantUML version 1.2020.00(Sat Jan 11 13:30:53 CET 2020)
189
(GPL source distribution)
190
Java Runtime: OpenJDK Runtime Environment
191
JVM: OpenJDK 64-Bit Server VM
192
Java Version: 11.0.7+10-post-Ubuntu-2ubuntu218.04
193
Operating System: Linux
194
Default Encoding: UTF-8
195
Language: en
196
Country: US
197
--></g></svg>