urtware / doc / classdiagrams / pubsub.svg @ 33aa05c5
History | View | Annotate | Download (70.146 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="827px" preserveAspectRatio="none" style="width:5557px;height:827px;" version="1.1" viewBox="0 0 5557 827" width="5557px" zoomAndPan="magnify"><defs><filter height="300%" id="f11mdjur5d2uci" 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="2725.25" y="16.708">µRtWare</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacingAndGlyphs" textLength="225" x="2657.25" y="37.6611">Publish-Subscribe System</text><!--MD5=[16a3bbbe805f94d6e6ce317c08ab945e] |
---|---|
2 |
cluster subscriber--><rect fill="#FFFFFF" filter="url(#f11mdjur5d2uci)" height="498" style="stroke: #000000; stroke-width: 1.5;" width="4063" x="1473.5" y="117.3228"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="85" x="3462.5" y="132.3179">subscriber</text><!--MD5=[50a042e24f957794dab9ba3ea8701c50] |
3 |
class urt_basesubscriber_t--><rect fill="#FEFECE" filter="url(#f11mdjur5d2uci)" height="133.6328" id="urt_basesubscriber_t" style="stroke: #A80036; stroke-width: 1.5;" width="225" x="2900" y="473.3228"/><ellipse cx="2942.45" cy="489.3228" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M2941.9344,489.8853 Q2940.075,489.1821 2939.4188,488.4165 Q2938.7781,487.6353 2938.7781,486.3228 Q2938.7781,484.6353 2939.8563,483.6665 Q2940.9344,482.6978 2942.8094,482.6978 Q2943.6688,482.6978 2944.5125,482.9009 Q2945.3719,483.0884 2946.2156,483.479 L2946.2156,485.8696 Q2945.4344,485.3071 2944.6063,485.0259 Q2943.7938,484.729 2942.9969,484.729 Q2942.1219,484.729 2941.6375,485.0884 Q2941.1688,485.4478 2941.1688,486.104 Q2941.1688,486.6196 2941.5125,486.9634 Q2941.8563,487.2915 2942.95,487.6978 L2944.0125,488.104 Q2945.4969,488.6509 2946.2,489.5571 Q2946.9188,490.4634 2946.9188,491.8384 Q2946.9188,493.7134 2945.8094,494.6353 Q2944.7,495.5571 2942.45,495.5571 Q2941.5281,495.5571 2940.6063,495.3384 Q2939.6844,495.1196 2938.825,494.6978 L2938.825,492.1665 Q2939.7938,492.854 2940.7156,493.1978 Q2941.6375,493.5415 2942.5281,493.5415 Q2943.4344,493.5415 2943.9344,493.1353 Q2944.4344,492.7134 2944.4344,491.979 Q2944.4344,491.4165 2944.0906,491.0103 Q2943.7625,490.5884 2943.1375,490.3384 L2941.9344,489.8853 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="132" x="2962.55" y="493.477">urt_basesubscriber_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="2901" x2="3124" y1="505.3228" y2="505.3228"/><ellipse cx="2911" cy="516.3228" fill="none" 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="2920" y="519.5332">topic : urt_topic_t*</text><ellipse cx="2911" cy="529.1274" fill="none" 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="2920" y="532.3379">evtListener : urt_osEventListener_t</text><ellipse cx="2911" cy="541.9321" fill="none" 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="2920" y="545.1426">lastMessage : urt_message_t*</text><ellipse cx="2911" cy="554.7368" fill="none" 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="2920" y="557.9473">lastMessageTime : urt_osTime_t</text><ellipse cx="2911" cy="584.3462" fill="none" 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="2920" y="587.5566">sumLatencies : uint64_t</text><ellipse cx="2911" cy="597.1509" fill="none" 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="2920" y="600.3613">numMessagesReceived : uint64_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="2901" x2="2904" y1="570.9438" y2="570.9438"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="217" x="2904" y="574.2519">URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="3121" x2="3124" y1="570.9438" y2="570.9438"/><!--MD5=[9ff46073dd541e50679ef35e851c67d6] |
4 |
class urt_nrtsubscriber_t--><rect fill="#FEFECE" filter="url(#f11mdjur5d2uci)" height="154.4375" id="urt_nrtsubscriber_t" style="stroke: #A80036; stroke-width: 1.5;" width="821" x="3570" y="201.8228"/><ellipse cx="3916.75" cy="217.8228" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M3916.2344,218.3853 Q3914.375,217.6821 3913.7188,216.9165 Q3913.0781,216.1353 3913.0781,214.8228 Q3913.0781,213.1353 3914.1563,212.1665 Q3915.2344,211.1978 3917.1094,211.1978 Q3917.9688,211.1978 3918.8125,211.4009 Q3919.6719,211.5884 3920.5156,211.979 L3920.5156,214.3696 Q3919.7344,213.8071 3918.9063,213.5259 Q3918.0938,213.229 3917.2969,213.229 Q3916.4219,213.229 3915.9375,213.5884 Q3915.4688,213.9478 3915.4688,214.604 Q3915.4688,215.1196 3915.8125,215.4634 Q3916.1563,215.7915 3917.25,216.1978 L3918.3125,216.604 Q3919.7969,217.1509 3920.5,218.0571 Q3921.2188,218.9634 3921.2188,220.3384 Q3921.2188,222.2134 3920.1094,223.1353 Q3919,224.0571 3916.75,224.0571 Q3915.8281,224.0571 3914.9063,223.8384 Q3913.9844,223.6196 3913.125,223.1978 L3913.125,220.6665 Q3914.0938,221.354 3915.0156,221.6978 Q3915.9375,222.0415 3916.8281,222.0415 Q3917.7344,222.0415 3918.2344,221.6353 Q3918.7344,221.2134 3918.7344,220.479 Q3918.7344,219.9165 3918.3906,219.5103 Q3918.0625,219.0884 3917.4375,218.8384 L3916.2344,218.3853 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="119" x="3937.25" y="221.977">urt_nrtsubscriber_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="3571" x2="4390" y1="233.8228" y2="233.8228"/><ellipse cx="3581" cy="261.6274" fill="none" 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="3590" y="264.8379">minLatency : urt_delay_t</text><ellipse cx="3581" cy="274.4321" fill="none" 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="3590" y="277.6426">maxLatency : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="3571" x2="3872" y1="248.2251" y2="248.2251"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="217" x="3872" y="251.5332">URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="4089" x2="4390" y1="248.2251" y2="248.2251"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="3571" x2="4390" y1="284.2368" y2="284.2368"/><ellipse cx="3581" cy="295.2368" 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="3590" y="298.4473">urtNrtSubscriberInit (subscriber : urt_nrtsubscriber_t*) : void</text><ellipse cx="3581" cy="308.0415" 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="3590" y="311.2519">urtNrtSubscriberSubscribe (subscriber : urt_nrtsubscriber_t*, topic : urt_topic_t*, messages : urt_message_t*) : urt_status_t</text><ellipse cx="3581" cy="320.8462" 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="3590" y="324.0566">urtNrtSubscriberFetchNextMessage (subscriber : urt_nrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="3581" cy="333.6509" 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="3590" y="336.8613">urtNrtSubscriberFetchLatestMessage (subscriber : urt_nrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="3581" cy="346.4556" 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="3590" y="349.666">urtNrtSubscriberUnsubscribe (subscriber : urt_nrtsubscriber_t*) : urt_status_t</text><!--MD5=[5c7929572d87ccc448d875bea5da0fb1] |
5 |
class urt_srtsubscriber_t--><rect fill="#FEFECE" filter="url(#f11mdjur5d2uci)" height="192.8516" id="urt_srtsubscriber_t" style="stroke: #A80036; stroke-width: 1.5;" width="1044" x="2490.5" y="182.3228"/><ellipse cx="2949.25" cy="198.3228" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M2948.7344,198.8853 Q2946.875,198.1821 2946.2188,197.4165 Q2945.5781,196.6353 2945.5781,195.3228 Q2945.5781,193.6353 2946.6563,192.6665 Q2947.7344,191.6978 2949.6094,191.6978 Q2950.4688,191.6978 2951.3125,191.9009 Q2952.1719,192.0884 2953.0156,192.479 L2953.0156,194.8696 Q2952.2344,194.3071 2951.4063,194.0259 Q2950.5938,193.729 2949.7969,193.729 Q2948.9219,193.729 2948.4375,194.0884 Q2947.9688,194.4478 2947.9688,195.104 Q2947.9688,195.6196 2948.3125,195.9634 Q2948.6563,196.2915 2949.75,196.6978 L2950.8125,197.104 Q2952.2969,197.6509 2953,198.5571 Q2953.7188,199.4634 2953.7188,200.8384 Q2953.7188,202.7134 2952.6094,203.6353 Q2951.5,204.5571 2949.25,204.5571 Q2948.3281,204.5571 2947.4063,204.3384 Q2946.4844,204.1196 2945.625,203.6978 L2945.625,201.1665 Q2946.5938,201.854 2947.5156,202.1978 Q2948.4375,202.5415 2949.3281,202.5415 Q2950.2344,202.5415 2950.7344,202.1353 Q2951.2344,201.7134 2951.2344,200.979 Q2951.2344,200.4165 2950.8906,200.0103 Q2950.5625,199.5884 2949.9375,199.3384 L2948.7344,198.8853 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="118" x="2969.75" y="202.477">urt_srtsubscriber_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="2491.5" x2="3533.5" y1="214.3228" y2="214.3228"/><ellipse cx="2501.5" cy="225.3228" fill="none" 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="2510.5" y="228.5332">usefulnesscb : urt_usefulness_f*</text><ellipse cx="2501.5" cy="238.1274" fill="none" 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="2510.5" y="241.3379">cbparams : void*</text><ellipse cx="2501.5" cy="267.7368" fill="none" 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="2510.5" y="270.9473">minLatency : urt_delay_t</text><ellipse cx="2501.5" cy="280.5415" fill="none" 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="2510.5" y="283.7519">maxLatency : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="2491.5" x2="2904" y1="254.3345" y2="254.3345"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="217" x="2904" y="257.6426">URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="3121" x2="3533.5" y1="254.3345" y2="254.3345"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="2491.5" x2="3533.5" y1="290.3462" y2="290.3462"/><ellipse cx="2501.5" cy="301.3462" 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="2510.5" y="304.5566">urtSrtSubscriberInit (subscriber : urt_srtsubscriber_t*) : void</text><ellipse cx="2501.5" cy="314.1509" 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="2510.5" y="317.3613">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="2501.5" cy="326.9556" 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="2510.5" y="330.166">urtSrtSubscriberFetchNextMessage (subscriber : urt_srtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="2501.5" cy="339.7603" 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="2510.5" y="342.9707">urtSrtSubscriberFetchLatestMessage (subscriber : urt_srtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="2501.5" cy="352.5649" 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="2510.5" y="355.7754">urtSrtSubscriberCalculateUsefulness (subscriber : urt_srtsubscriber_t*, latency : urt_delay_t) : float</text><ellipse cx="2501.5" cy="365.3696" 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="2510.5" y="368.5801">urtSrtSubscriberUnsubscribe (subscriber : urt_srtsubscriber_t*) : urt_status_t</text><!--MD5=[17838fb05fe219fd399839979ec8a4a4] |
6 |
class urt_frtsubscriber_t--><rect fill="#FEFECE" filter="url(#f11mdjur5d2uci)" height="226.4609" id="urt_frtsubscriber_t" style="stroke: #A80036; stroke-width: 1.5;" width="974" x="1481.5" y="165.8228"/><ellipse cx="1906.75" cy="181.8228" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1906.2344,182.3853 Q1904.375,181.6821 1903.7188,180.9165 Q1903.0781,180.1353 1903.0781,178.8228 Q1903.0781,177.1353 1904.1563,176.1665 Q1905.2344,175.1978 1907.1094,175.1978 Q1907.9688,175.1978 1908.8125,175.4009 Q1909.6719,175.5884 1910.5156,175.979 L1910.5156,178.3696 Q1909.7344,177.8071 1908.9063,177.5259 Q1908.0938,177.229 1907.2969,177.229 Q1906.4219,177.229 1905.9375,177.5884 Q1905.4688,177.9478 1905.4688,178.604 Q1905.4688,179.1196 1905.8125,179.4634 Q1906.1563,179.7915 1907.25,180.1978 L1908.3125,180.604 Q1909.7969,181.1509 1910.5,182.0571 Q1911.2188,182.9634 1911.2188,184.3384 Q1911.2188,186.2134 1910.1094,187.1353 Q1909,188.0571 1906.75,188.0571 Q1905.8281,188.0571 1904.9063,187.8384 Q1903.9844,187.6196 1903.125,187.1978 L1903.125,184.6665 Q1904.0938,185.354 1905.0156,185.6978 Q1905.9375,186.0415 1906.8281,186.0415 Q1907.7344,186.0415 1908.2344,185.6353 Q1908.7344,185.2134 1908.7344,184.479 Q1908.7344,183.9165 1908.3906,183.5103 Q1908.0625,183.0884 1907.4375,182.8384 L1906.2344,182.3853 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="115" x="1927.25" y="185.977">urt_frtsubscriber_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1482.5" x2="2454.5" y1="197.8228" y2="197.8228"/><ellipse cx="1492.5" cy="225.6274" fill="none" 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="1501.5" y="228.8379">deadlineOffset : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1482.5" x2="1823" y1="212.2251" y2="212.2251"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="291" x="1823" y="215.5332">URT_CFG_PUBSUB_QOS_DEADLINECHECKS == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="2114" x2="2454.5" y1="212.2251" y2="212.2251"/><ellipse cx="1492.5" cy="255.2368" fill="none" 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="1501.5" y="258.4473">maxJitter : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1482.5" x2="1833" y1="241.8345" y2="241.8345"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="271" x="1833" y="245.1426">URT_CFG_PUBSUB_QOS_JITTERCHECKS == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="2104" x2="2454.5" y1="241.8345" y2="241.8345"/><ellipse cx="1492.5" cy="284.8462" fill="none" 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="1501.5" y="288.0566">minLatency : urt_delay_t</text><ellipse cx="1492.5" cy="297.6509" fill="none" 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="1501.5" y="300.8613">maxLatency : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1482.5" x2="1714.5" y1="271.4438" y2="271.4438"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="508" x="1714.5" y="274.7519">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="2222.5" x2="2454.5" y1="271.4438" y2="271.4438"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1482.5" x2="2454.5" y1="307.4556" y2="307.4556"/><ellipse cx="1492.5" cy="318.4556" 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="1501.5" y="321.666">urtFrtSubscriberInit (subscriber : urt_frtsubscriber_t*) : void</text><ellipse cx="1492.5" cy="331.2603" 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="1501.5" y="334.4707">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="1492.5" cy="344.0649" 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="1501.5" y="347.2754">urtFrtSubscriberFetchNextMessage (subscriber : urt_frtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="1492.5" cy="356.8696" 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="1501.5" y="360.0801">urtFrtSubscriberFetchLatestMessage (subscriber : urt_frtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="1492.5" cy="369.6743" 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="1501.5" y="372.8848">urtFrtSubscriberCalculateValidity (subscriber : urt_frtsubscriber_t*, latency : urt_delay_t) : bool</text><ellipse cx="1492.5" cy="382.479" 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="1501.5" y="385.6894">urtFrtSubscriberUnsubscribe (subscriber : urt_frtsubscriber_t*) : urt_status_t</text><!--MD5=[104dc879e5721421b987fcc467bc3a1d] |
7 |
class urt_hrtsubscriber_t--><rect fill="#FEFECE" filter="url(#f11mdjur5d2uci)" height="268.875" id="urt_hrtsubscriber_t" style="stroke: #A80036; stroke-width: 1.5;" width="1084" x="4426.5" y="144.3228"/><ellipse cx="4904.75" cy="160.3228" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M4904.2344,160.8853 Q4902.375,160.1821 4901.7188,159.4165 Q4901.0781,158.6353 4901.0781,157.3228 Q4901.0781,155.6353 4902.1563,154.6665 Q4903.2344,153.6978 4905.1094,153.6978 Q4905.9688,153.6978 4906.8125,153.9009 Q4907.6719,154.0884 4908.5156,154.479 L4908.5156,156.8696 Q4907.7344,156.3071 4906.9063,156.0259 Q4906.0938,155.729 4905.2969,155.729 Q4904.4219,155.729 4903.9375,156.0884 Q4903.4688,156.4478 4903.4688,157.104 Q4903.4688,157.6196 4903.8125,157.9634 Q4904.1563,158.2915 4905.25,158.6978 L4906.3125,159.104 Q4907.7969,159.6509 4908.5,160.5571 Q4909.2188,161.4634 4909.2188,162.8384 Q4909.2188,164.7134 4908.1094,165.6353 Q4907,166.5571 4904.75,166.5571 Q4903.8281,166.5571 4902.9063,166.3384 Q4901.9844,166.1196 4901.125,165.6978 L4901.125,163.1665 Q4902.0938,163.854 4903.0156,164.1978 Q4903.9375,164.5415 4904.8281,164.5415 Q4905.7344,164.5415 4906.2344,164.1353 Q4906.7344,163.7134 4906.7344,162.979 Q4906.7344,162.4165 4906.3906,162.0103 Q4906.0625,161.5884 4905.4375,161.3384 L4904.2344,160.8853 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="119" x="4925.25" y="164.477">urt_hrtsubscriber_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="4427.5" x2="5509.5" y1="176.3228" y2="176.3228"/><ellipse cx="4437.5" cy="187.3228" fill="none" 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="4446.5" y="190.5332">next : urt_hrtsubscriber_t*</text><ellipse cx="4437.5" cy="216.9321" fill="none" 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="4446.5" y="220.1426">deadlineOffset : urt_delay_t</text><ellipse cx="4437.5" cy="229.7368" fill="none" 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="4446.5" y="232.9473">qosDeadlineTimer : urt_osTimer_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="4427.5" x2="4823" y1="203.5298" y2="203.5298"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="291" x="4823" y="206.8379">URT_CFG_PUBSUB_QOS_DEADLINECHECKS == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="5114" x2="5509.5" y1="203.5298" y2="203.5298"/><ellipse cx="4437.5" cy="259.3462" fill="none" 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="4446.5" y="262.5566">maxJitter : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="4427.5" x2="4833" y1="245.9438" y2="245.9438"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="271" x="4833" y="249.2519">URT_CFG_PUBSUB_QOS_JITTERCHECKS == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="5104" x2="5509.5" y1="245.9438" y2="245.9438"/><ellipse cx="4437.5" cy="288.9556" fill="none" 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="4446.5" y="292.166">minLatency : urt_delay_t</text><ellipse cx="4437.5" cy="301.7603" fill="none" 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="4446.5" y="304.9707">maxLatency : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="4427.5" x2="4716.5" y1="275.5532" y2="275.5532"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="504" x="4716.5" y="278.8613">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="5220.5" x2="5509.5" y1="275.5532" y2="275.5532"/><ellipse cx="4437.5" cy="331.3696" fill="none" 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="4446.5" y="334.5801">expectedRate : urt_delay_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="4427.5" x2="4836" y1="317.9673" y2="317.9673"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="265" x="4836" y="321.2754">URT_CFG_PUBSUB_QOS_RATECHECKS == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="5101" x2="5509.5" y1="317.9673" y2="317.9673"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="4427.5" x2="5509.5" y1="341.1743" y2="341.1743"/><ellipse cx="4437.5" cy="352.1743" 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="4446.5" y="355.3848">urtHrtSubscriberInit (subscriber : urt_hrtsubscriber_t*) : void</text><ellipse cx="4437.5" cy="364.979" 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="4446.5" y="368.1894">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="4437.5" cy="377.7837" 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="4446.5" y="380.9941">urtHrtSubscriberFetchNextMessage (subscriber : urt_hrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="4437.5" cy="390.5884" 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="4446.5" y="393.7988">urtHrtSubscriberFetchLatestMessage (subscriber : urt_hrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t</text><ellipse cx="4437.5" cy="403.3931" 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="4446.5" y="406.6035">urtHrtSubscriberUnsubscribe (subscriber : urt_hrtsubscriber_t*) : urt_status_t</text><!--MD5=[e602aa6d45f270ad04f88c9ca5352b33] |
8 |
class urt_message_t--><rect fill="#FEFECE" filter="url(#f11mdjur5d2uci)" height="141.6328" id="urt_message_t" style="stroke: #A80036; stroke-width: 1.5;" width="406" x="923.5" y="667.3228"/><ellipse cx="1076.25" cy="683.3228" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1075.7344,683.8853 Q1073.875,683.1821 1073.2188,682.4165 Q1072.5781,681.6353 1072.5781,680.3228 Q1072.5781,678.6353 1073.6563,677.6665 Q1074.7344,676.6978 1076.6094,676.6978 Q1077.4688,676.6978 1078.3125,676.9009 Q1079.1719,677.0884 1080.0156,677.479 L1080.0156,679.8696 Q1079.2344,679.3071 1078.4063,679.0259 Q1077.5938,678.729 1076.7969,678.729 Q1075.9219,678.729 1075.4375,679.0884 Q1074.9688,679.4478 1074.9688,680.104 Q1074.9688,680.6196 1075.3125,680.9634 Q1075.6563,681.2915 1076.75,681.6978 L1077.8125,682.104 Q1079.2969,682.6509 1080,683.5571 Q1080.7188,684.4634 1080.7188,685.8384 Q1080.7188,687.7134 1079.6094,688.6353 Q1078.5,689.5571 1076.25,689.5571 Q1075.3281,689.5571 1074.4063,689.3384 Q1073.4844,689.1196 1072.625,688.6978 L1072.625,686.1665 Q1073.5938,686.854 1074.5156,687.1978 Q1075.4375,687.5415 1076.3281,687.5415 Q1077.2344,687.5415 1077.7344,687.1353 Q1078.2344,686.7134 1078.2344,685.979 Q1078.2344,685.4165 1077.8906,685.0103 Q1077.5625,684.5884 1076.9375,684.3384 L1075.7344,683.8853 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="92" x="1096.75" y="687.477">urt_message_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="924.5" x2="1328.5" y1="699.3228" y2="699.3228"/><ellipse cx="934.5" cy="710.3228" fill="none" 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="943.5" y="713.5332">next : urt_message_t*</text><ellipse cx="934.5" cy="723.1274" fill="none" 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="943.5" y="726.3379">payload : void*</text><ellipse cx="934.5" cy="735.9321" fill="none" 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="943.5" y="739.1426">originTime : urt_osTime_t</text><ellipse cx="934.5" cy="748.7368" fill="none" 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="943.5" y="751.9473">numHrtConsumersLeft : unsigned int</text><ellipse cx="934.5" cy="778.3462" fill="none" 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="943.5" y="781.5566">numConsumersLeft : unsigned int</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="924.5" x2="1018" y1="764.9438" y2="764.9438"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="217" x="1018" y="768.2519">URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1235" x2="1328.5" y1="764.9438" y2="764.9438"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="924.5" x2="1328.5" y1="788.1509" y2="788.1509"/><ellipse cx="934.5" cy="799.1509" 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="943.5" y="802.3613">urtMessageInit (message : urt_message_t*, payload : void*) : void</text><!--MD5=[2ac85a9c1cceb8bb0c9045edc105e6e3] |
9 |
class urt_publisher_t--><rect fill="#FEFECE" filter="url(#f11mdjur5d2uci)" height="196.0469" id="urt_publisher_t" style="stroke: #A80036; stroke-width: 1.5;" width="783" x="7" y="180.8228"/><ellipse cx="347.75" cy="196.8228" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M347.2344,197.3853 Q345.375,196.6821 344.7188,195.9165 Q344.0781,195.1353 344.0781,193.8228 Q344.0781,192.1353 345.1563,191.1665 Q346.2344,190.1978 348.1094,190.1978 Q348.9688,190.1978 349.8125,190.4009 Q350.6719,190.5884 351.5156,190.979 L351.5156,193.3696 Q350.7344,192.8071 349.9063,192.5259 Q349.0938,192.229 348.2969,192.229 Q347.4219,192.229 346.9375,192.5884 Q346.4688,192.9478 346.4688,193.604 Q346.4688,194.1196 346.8125,194.4634 Q347.1563,194.7915 348.25,195.1978 L349.3125,195.604 Q350.7969,196.1509 351.5,197.0571 Q352.2188,197.9634 352.2188,199.3384 Q352.2188,201.2134 351.1094,202.1353 Q350,203.0571 347.75,203.0571 Q346.8281,203.0571 345.9063,202.8384 Q344.9844,202.6196 344.125,202.1978 L344.125,199.6665 Q345.0938,200.354 346.0156,200.6978 Q346.9375,201.0415 347.8281,201.0415 Q348.7344,201.0415 349.2344,200.6353 Q349.7344,200.2134 349.7344,199.479 Q349.7344,198.9165 349.3906,198.5103 Q349.0625,198.0884 348.4375,197.8384 L347.2344,197.3853 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="93" x="368.25" y="200.977">urt_publisher_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="8" x2="789" y1="212.8228" y2="212.8228"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="289" x="13" y="227.0332">URT_PUBSUB_PUBLISHER_PUBLISH_TIMEOUT : bool</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="8" x2="789" y1="233.6274" y2="233.6274"/><ellipse cx="18" cy="244.6274" fill="none" 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="27" y="247.8379">topic : urt_topic_t*</text><ellipse cx="18" cy="274.2368" fill="none" 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="27" y="277.4473">publishAttempts : uint64_t</text><ellipse cx="18" cy="287.0415" fill="none" 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="27" y="290.2519">publishFails : uint64_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="8" x2="290" y1="260.8345" y2="260.8345"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="217" x="290" y="264.1426">URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="507" x2="789" y1="260.8345" y2="260.8345"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="8" x2="789" y1="296.8462" y2="296.8462"/><ellipse cx="18" cy="307.8462" 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="27" y="311.0566">urtPublisherInit (publisher : urt_publisher_t*, topic : urt_topic_t*, messages : urt_message_t*) : void</text><ellipse cx="18" cy="337.4556" 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="27" y="340.666">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="8" x2="245" y1="324.0532" y2="324.0532"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="307" x="245" y="327.3613">URT_PUBSUB_PUBLISHER_PUBLISH_TIMEOUT == false</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="552" x2="789" y1="324.0532" y2="324.0532"/><ellipse cx="18" cy="367.0649" 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="27" y="370.2754">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="8" x2="247.5" y1="353.6626" y2="353.6626"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="302" x="247.5" y="356.9707">URT_PUBSUB_PUBLISHER_PUBLISH_TIMEOUT == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="549.5" x2="789" y1="353.6626" y2="353.6626"/><!--MD5=[a1b1e66ec52c209a9fa2dab315cd7630] |
10 |
class urt_topic_t--><rect fill="#FEFECE" filter="url(#f11mdjur5d2uci)" height="260.875" id="urt_topic_t" style="stroke: #A80036; stroke-width: 1.5;" width="603" x="825" y="148.3228"/><ellipse cx="1089.25" cy="164.3228" fill="#BFAFFF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1088.7344,164.8853 Q1086.875,164.1821 1086.2188,163.4165 Q1085.5781,162.6353 1085.5781,161.3228 Q1085.5781,159.6353 1086.6563,158.6665 Q1087.7344,157.6978 1089.6094,157.6978 Q1090.4688,157.6978 1091.3125,157.9009 Q1092.1719,158.0884 1093.0156,158.479 L1093.0156,160.8696 Q1092.2344,160.3071 1091.4063,160.0259 Q1090.5938,159.729 1089.7969,159.729 Q1088.9219,159.729 1088.4375,160.0884 Q1087.9688,160.4478 1087.9688,161.104 Q1087.9688,161.6196 1088.3125,161.9634 Q1088.6563,162.2915 1089.75,162.6978 L1090.8125,163.104 Q1092.2969,163.6509 1093,164.5571 Q1093.7188,165.4634 1093.7188,166.8384 Q1093.7188,168.7134 1092.6094,169.6353 Q1091.5,170.5571 1089.25,170.5571 Q1088.3281,170.5571 1087.4063,170.3384 Q1086.4844,170.1196 1085.625,169.6978 L1085.625,167.1665 Q1086.5938,167.854 1087.5156,168.1978 Q1088.4375,168.5415 1089.3281,168.5415 Q1090.2344,168.5415 1090.7344,168.1353 Q1091.2344,167.7134 1091.2344,166.979 Q1091.2344,166.4165 1090.8906,166.0103 Q1090.5625,165.5884 1089.9375,165.3384 L1088.7344,164.8853 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="66" x="1109.75" y="168.477">urt_topic_t</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="826" x2="1427" y1="180.3228" y2="180.3228"/><ellipse cx="836" cy="191.3228" fill="none" 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="845" y="194.5332">next : urt_topic_t*</text><ellipse cx="836" cy="204.1274" fill="none" 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="845" y="207.3379">id : urt_topicid_t</text><ellipse cx="836" cy="216.9321" fill="none" 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="845" y="220.1426">lock : urt_osMutex_t</text><ellipse cx="836" cy="229.7368" fill="none" 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="845" y="232.9473">evtSource : urt_osEventSource_t</text><ellipse cx="836" cy="242.5415" fill="none" 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="845" y="245.7519">numHrtSubscribers : unsigned int</text><ellipse cx="836" cy="255.3462" fill="none" 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="845" y="258.5566">hrtReleased : urt_osCondvar_t</text><ellipse cx="836" cy="268.1509" fill="none" 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="845" y="271.3613">mandatoryMessage : urt_message_t</text><ellipse cx="836" cy="280.9556" fill="none" 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="845" y="284.166">latestMessage : urt_message_t*</text><ellipse cx="836" cy="310.5649" fill="none" 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="845" y="313.7754">hrtSubscribers : urt_hrtsubscriber_t*</text><ellipse cx="836" cy="323.3696" fill="none" 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="845" y="326.5801">qosRateTimer : urt_osTimer_t</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="826" x2="994" y1="297.1626" y2="297.1626"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="265" x="994" y="300.4707">URT_CFG_PUBSUB_QOS_RATECHECKS == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1259" x2="1427" y1="297.1626" y2="297.1626"/><ellipse cx="836" cy="352.979" fill="none" 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="845" y="356.1894">numMessagesPublished : uint64_t</text><ellipse cx="836" cy="365.7837" fill="none" 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="845" y="368.9941">numMessagesDiscarded : uint64_t</text><ellipse cx="836" cy="378.5884" fill="none" 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="845" y="381.7988">numSubscribers : unsigned int</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="826" x2="1018" y1="339.5767" y2="339.5767"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="217" x="1018" y="342.8848">URT_CFG_PUBSUB_PROFILING == true</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 1.0,2.0;" x1="1235" x2="1427" y1="339.5767" y2="339.5767"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="826" x2="1427" y1="388.3931" y2="388.3931"/><ellipse cx="836" cy="399.3931" 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="577" x="845" y="402.6035">urtTopicInit (topic : urt_topic_t*, id : urt_topicid_t, mandatoryMessage: urt_message_t*) : urt_status_t</text><!--MD5=[536025241394544a90bc53fb552f3a08] |
11 |
reverse link urt_message_t to urt_message_t--><path d="M1342.0028,711.9298 C1356.0209,718.0822 1364.5,726.8799 1364.5,738.3228 C1364.5,752.8248 1350.8815,763.0781 1329.6293,769.0828 " fill="none" id="urt_message_t<-urt_message_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="1329.6293,707.5628,1333.956,713.3316,1340.9452,711.5565,1336.6185,705.7877,1329.6293,707.5628" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="1337.7203" y="703.1449">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="20" x="1337.2886" y="766.9945">0,1</text><!--MD5=[aa8990705afdbad14c7f998fe04b6f05] |
12 |
reverse link urt_basesubscriber_t to urt_message_t--><path d="M2886.8336,553.5158 C2567.1591,587.0765 1720.724,675.9387 1329.7427,716.9856 " fill="none" id="urt_basesubscriber_t<-urt_message_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="2899.8207,552.1523,2893.4358,548.8006,2887.8863,553.4053,2894.2712,556.7569,2899.8207,552.1523" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="2883.9813" y="549.5268">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="20" x="1337.4061" y="728.5642">0,1</text><!--MD5=[0585cd4928de92ce6927d9c389eadd29] |
13 |
link urt_nrtsubscriber_t to urt_basesubscriber_t--><path d="M3746.2283,355.8554 C3683.5669,375.5229 3615.689,395.9888 3552.5,413.3228 C3414.3193,451.2285 3254.3631,487.97 3144.6129,512.0977 " fill="none" id="urt_nrtsubscriber_t->urt_basesubscriber_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="3146.0966,518.9386,3125.0621,516.3791,3143.1016,505.2627,3146.0966,518.9386" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[6d81edfa5aa102b898ad487ae19b49f9] |
14 |
link urt_srtsubscriber_t to urt_basesubscriber_t--><path d="M3012.5,375.4528 C3012.5,400.8001 3012.5,427.9869 3012.5,452.8265 " fill="none" id="urt_srtsubscriber_t->urt_basesubscriber_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="3019.5001,453.0478,3012.5,473.0477,3005.5001,453.0477,3019.5001,453.0478" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[f626d284cba98e1d5d5fe914b1fa4188] |
15 |
link urt_frtsubscriber_t to urt_basesubscriber_t--><path d="M2389.1729,391.8435 C2417.6878,399.2022 2445.9994,406.4223 2473.5,413.3228 C2611.7604,448.0156 2770.6746,485.1241 2879.9377,510.2122 " fill="none" id="urt_frtsubscriber_t->urt_basesubscriber_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="2881.8156,503.4611,2899.7455,514.7535,2878.687,517.107,2881.8156,503.4611" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[1ea71f2b33e56ab0ac5545988c1af396] |
16 |
link urt_hrtsubscriber_t to urt_basesubscriber_t--><path d="M4426.3442,410.3156 C4420.3691,411.3449 4414.4195,412.348 4408.5,413.3228 C3948.3838,489.0967 3394.9618,522.5887 3145.6847,534.6426 " fill="none" id="urt_hrtsubscriber_t->urt_basesubscriber_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="3145.7015,541.6496,3125.3912,535.6088,3145.0356,527.6655,3145.7015,541.6496" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[ea2ec5c5272e65289dabade75a749f58] |
17 |
reverse link urt_hrtsubscriber_t to urt_hrtsubscriber_t--><path d="M5522.8399,254.5753 C5537.3539,261.2813 5545.5,269.3638 5545.5,278.8228 C5545.5,290.6929 5532.6717,300.3953 5510.5292,307.9301 " fill="none" id="urt_hrtsubscriber_t<-urt_hrtsubscriber_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="5510.5292,249.7155,5514.6414,255.6391,5521.691,254.1217,5517.5788,248.198,5510.5292,249.7155" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="5518.2077" y="246.2694">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="20" x="5518.2921" y="305.3026">0,1</text><!--MD5=[54fcf25ad8c5f1d36e678e42d5bfd4cc] |
18 |
reverse link urt_publisher_t to urt_topic_t--><path d="M803.4264,278.8228 C810.5202,278.8228 817.6139,278.8228 824.7077,278.8228 " fill="none" id="urt_publisher_t<-urt_topic_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="790.2266,278.8228,796.2266,282.8228,802.2266,278.8228,796.2266,274.8228,790.2266,278.8228" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="798.2648" y="275.7382">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="808.5851" y="275.6938">1</text><!--MD5=[5025b4c4053b8e7c7ca8a657f09f21c0] |
19 |
link urt_publisher_t to urt_message_t--><path d="M553.7813,376.8335 C690.2804,462.9891 885.9234,586.4753 1009.557,664.5105 " fill="none" id="urt_publisher_t->urt_message_t" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="#A80036" points="1013.9244,667.2672,1008.4487,659.0808,1009.6962,664.5984,1004.1786,665.8459,1013.9244,667.2672" style="stroke: #A80036; stroke-width: 1.0;"/><!--MD5=[6b2afc1defaa6ed5a86f99c07f8466dd] |
20 |
reverse link urt_topic_t to urt_topic_t--><path d="M1440.1789,248.3591 C1454.5769,256.0731 1463,266.2277 1463,278.8228 C1463,294.6285 1449.7354,306.5908 1428.0445,314.7097 " fill="none" id="urt_topic_t<-urt_topic_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="1428.0445,242.9359,1431.8902,249.0359,1439.0001,247.8322,1435.1544,241.7322,1428.0445,242.9359" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="1436.1605" y="238.8537">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="20" x="1436.3199" y="312.534">0,1</text><!--MD5=[ed3fb6de0913094c41bd74c175d366df] |
21 |
reverse link urt_topic_t to urt_hrtsubscriber_t--><path d="M1340.4758,142.25 C1385.8905,119.5486 1434.7383,99.4646 1483,87.3228 C1639.6734,47.9063 4231.5104,61.5688 4391,87.3228 C4467.3838,99.6571 4547.3368,120.6113 4622.5629,144.2429 " fill="none" id="urt_topic_t<-urt_hrtsubscriber_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="1328.6966,148.2344,1335.8576,149.0829,1339.3951,142.7991,1332.2341,141.9505,1328.6966,148.2344" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="1332.1548" y="137.3255">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="20" x="4581.9853" y="133.1032">0,1</text><!--MD5=[0b5167e958c0ed93ffc0c98ce399b54d] |
22 |
reverse link urt_topic_t to urt_message_t--><path d="M1126.5,422.7376 C1126.5,504.0857 1126.5,602.2013 1126.5,667.2092 " fill="none" id="urt_topic_t<-urt_message_t" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1126.5,409.5749,1122.5,415.5749,1126.5,421.5749,1130.5,415.5749,1126.5,409.5749" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="1118.2813" y="429.2095">1</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="1118.0875" y="656.1948">1</text><!--MD5=[ee7ff9c6693c901f37603259b2a8871e] |
23 |
@startuml |
24 |
|
25 |
title **µRtWare**\nPublish-Subscribe System |
26 |
|
27 |
!include ./functions.iuml |
28 |
|
29 |
/'### ENTITIES ###############################################################'/ |
30 |
|
31 |
!startsub ENTITIES |
32 |
|
33 |
/' Message type. '/ |
34 |
$structure("urt_message_t") { |
35 |
'Pointer to the next message in a list. |
36 |
+ {field} next : urt_message_t* |
37 |
'Pointer to some arbitrary (reusable) payload object. |
38 |
+ {field} payload : void* |
39 |
'Origin time of the message. |
40 |
+ {field} originTime : urt_osTime_t |
41 |
'Counter of HRT subscribers that did not consume the message yet. |
42 |
+ {field} numHrtConsumersLeft : unsigned int |
43 |
.. URT_CFG_PUBSUB_PROFILING == true .. |
44 |
'Counter of overall subscribers that did not consume the message yet. |
45 |
+ {field} numConsumersLeft : unsigned int |
46 |
__ |
47 |
'Initializes a urt_message_t object. |
48 |
+ {method} urtMessageInit (message : urt_message_t*, payload : void*) : void |
49 |
} |
50 |
|
51 |
$group("subscriber") { |
52 |
/' Base subscriber type. '/ |
53 |
$structure("urt_basesubscriber_t") { |
54 |
'Pointer to the topic, this subscriber subscribed to. |
55 |
+ {field} topic : urt_topic_t* |
56 |
'Event listener to notify the node about new messages. |
57 |
+ {field} evtListener : urt_osEventListener_t |
58 |
'Pointer to the message consumed most recently. |
59 |
+ {field} lastMessage : urt_message_t* |
60 |
'Copy of the origin time of the message consumed most recently. |
61 |
+ {field} lastMessageTime : urt_osTime_t |
62 |
.. URT_CFG_PUBSUB_PROFILING == true .. |
63 |
'Sum of all latencies. |
64 |
+ {field} sumLatencies : uint64_t |
65 |
'Number of messages received. |
66 |
+ {field} numMessagesReceived : uint64_t |
67 |
} |
68 |
|
69 |
/' NRT subscriber type. '/ |
70 |
$structure("urt_nrtsubscriber_t") { |
71 |
.. URT_CFG_PUBSUB_PROFILING == true .. |
72 |
'Minimum latency ever detected. |
73 |
+ {field} minLatency : urt_delay_t |
74 |
'Maximum latency ever detected. |
75 |
+ {field} maxLatency : urt_delay_t |
76 |
__ |
77 |
'Initializes a urt_nrtsubscriber_t object. |
78 |
+ {method} urtNrtSubscriberInit (subscriber : urt_nrtsubscriber_t*) : void |
79 |
'Tries to subscribe to a topic and optionally contributes a list of messages to the topic. |
80 |
+ {method} urtNrtSubscriberSubscribe (subscriber : urt_nrtsubscriber_t*, topic : urt_topic_t*, messages : urt_message_t*) : urt_status_t |
81 |
'Fetches the next message in the buffer, optionally copies the payload and optionally returns the latency. |
82 |
+ {method} urtNrtSubscriberFetchNextMessage (subscriber : urt_nrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t |
83 |
'Fetches the latest message, optionally copies the payload and optionally returns the latency. |
84 |
+ {method} urtNrtSubscriberFetchLatestMessage (subscriber : urt_nrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t |
85 |
'Unsubscribes from a topic. |
86 |
+ {method} urtNrtSubscriberUnsubscribe (subscriber : urt_nrtsubscriber_t*) : urt_status_t |
87 |
} |
88 |
|
89 |
/' SRT subscriber type. '/ |
90 |
$structure("urt_srtsubscriber_t") { |
91 |
'Callback to calculate usefulness of a message |
92 |
+ {field} usefulnesscb : urt_usefulness_f* |
93 |
'Optional parameters for the usefulness callback function. |
94 |
+ {field} cbparams : void* |
95 |
.. URT_CFG_PUBSUB_PROFILING == true .. |
96 |
'Minimum latency ever detected. |
97 |
+ {field} minLatency : urt_delay_t |
98 |
'Maximum latency ever detected. |
99 |
+ {field} maxLatency : urt_delay_t |
100 |
__ |
101 |
'Initializes a urt_srtsubscriber_t object. |
102 |
+ {method} urtSrtSubscriberInit (subscriber : urt_srtsubscriber_t*) : void |
103 |
'Tries to subscribe to a topic, sets all parameters and optionally contributes a list of messages to the topic. |
104 |
+ {method} urtSrtSubscriberSubscribe (subscriber : urt_srtsubscriber_t*, topic : urt_topic_t*, messages : urt_message_t*, usefulnesscb : urt_usefulness_f*, cbparams : void*) : urt_status_t |
105 |
'Fetches the next message in the buffer, optionally copies the payload and optionally returns the latency. |
106 |
+ {method} urtSrtSubscriberFetchNextMessage (subscriber : urt_srtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t |
107 |
'Fetches the latest message, optionally copies the payload and optionally returns the latency. |
108 |
+ {method} urtSrtSubscriberFetchLatestMessage (subscriber : urt_srtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t |
109 |
'Calculates the usefulness of a message after the specified delay. |
110 |
+ {method} urtSrtSubscriberCalculateUsefulness (subscriber : urt_srtsubscriber_t*, latency : urt_delay_t) : float |
111 |
'Unsubscribes from a topic. |
112 |
+ {method} urtSrtSubscriberUnsubscribe (subscriber : urt_srtsubscriber_t*) : urt_status_t |
113 |
} |
114 |
|
115 |
/' FRT subscriber type. '/ |
116 |
$structure("urt_frtsubscriber_t") { |
117 |
.. URT_CFG_PUBSUB_QOS_DEADLINECHECKS == true .. |
118 |
'Maximum temporal offset between creation and consumption of messages. |
119 |
+ {field} deadlineOffset : urt_delay_t |
120 |
.. URT_CFG_PUBSUB_QOS_JITTERCHECKS == true .. |
121 |
'Maximum expected jitter. |
122 |
+ {field} maxJitter : urt_delay_t |
123 |
.. URT_CFG_PUBSUB_QOS_JITTERCHECKS == true || URT_CFG_PUBSUB_PROFILING == true .. |
124 |
'Minimum latency ever detected (to calculate jitter). |
125 |
+ {field} minLatency : urt_delay_t |
126 |
'Maximum latency ever detected (to calculate jitter). |
127 |
+ {field} maxLatency : urt_delay_t |
128 |
__ |
129 |
'Initializes a urt_frtsubscriber_t object. |
130 |
+ {method} urtFrtSubscriberInit (subscriber : urt_frtsubscriber_t*) : void |
131 |
'Tries to subscribe to a topic, sets all parameters and optionally contributes a list of messages to the topic. |
132 |
+ {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 |
133 |
'Fetches the next message in the buffer, optionally copies the payload and optionally returns the latency. |
134 |
+ {method} urtFrtSubscriberFetchNextMessage (subscriber : urt_frtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t |
135 |
'Fetches the latest message, optionally copies the payload and optionally returns the latency. |
136 |
+ {method} urtFrtSubscriberFetchLatestMessage (subscriber : urt_frtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t |
137 |
'Checks whether a message is valid after the specified delay. |
138 |
+ {method} urtFrtSubscriberCalculateValidity (subscriber : urt_frtsubscriber_t*, latency : urt_delay_t) : bool |
139 |
'Unsubscribes from a topic. |
140 |
+ {method} urtFrtSubscriberUnsubscribe (subscriber : urt_frtsubscriber_t*) : urt_status_t |
141 |
} |
142 |
|
143 |
/' HRT subscriber type. '/ |
144 |
$structure("urt_hrtsubscriber_t") { |
145 |
'Pointer to the next HRT subscriber in a list. |
146 |
+ {field} next : urt_hrtsubscriber_t* |
147 |
.. URT_CFG_PUBSUB_QOS_DEADLINECHECKS == true .. |
148 |
'Maximum temporal offset between creation and consumption of messages. |
149 |
+ {field} deadlineOffset : urt_delay_t |
150 |
'QoS Timer to detect missed deadlines. |
151 |
+ {field} qosDeadlineTimer : urt_osTimer_t |
152 |
.. URT_CFG_PUBSUB_QOS_JITTERCHECKS == true .. |
153 |
'Maximum expected jitter. |
154 |
+ {field} maxJitter : urt_delay_t |
155 |
.. URT_CFG_PUBSUB_QOS_JITTERCHECKS == true || URT_CFG_PUBSUB_PROFILING == true.. |
156 |
'Minimum latency ever detected (to calculate jitter). |
157 |
+ {field} minLatency : urt_delay_t |
158 |
'Maximum latency ever detected (to calculate jitter). |
159 |
+ {field} maxLatency : urt_delay_t |
160 |
.. URT_CFG_PUBSUB_QOS_RATECHECKS == true .. |
161 |
'Expected rate at which data is published. |
162 |
+ {field} expectedRate : urt_delay_t |
163 |
__ |
164 |
'Initializes a urt_hrtsubscriber_t object. |
165 |
+ {method} urtHrtSubscriberInit (subscriber : urt_hrtsubscriber_t*) : void |
166 |
'Tries to subscribe to a topic, sets all parameters and optionally contributes a list of messages to the topic. |
167 |
+ {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 |
168 |
'Fetches the next message in the buffer, optionally copies the payload and optionally returns the latency. |
169 |
+ {method} urtHrtSubscriberFetchNextMessage (subscriber : urt_hrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t |
170 |
'Fetches the latest message, optionally copies the payload and optionally returns the latency. |
171 |
+ {method} urtHrtSubscriberFetchLatestMessage (subscriber : urt_hrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t |
172 |
'Unsubscribes from a topic. |
173 |
+ {method} urtHrtSubscriberUnsubscribe (subscriber : urt_hrtsubscriber_t*) : urt_status_t |
174 |
} |
175 |
} /'subscriber'/ |
176 |
|
177 |
/' Publisher type. '/ |
178 |
$structure("urt_publisher_t") { |
179 |
'Flag, whether the publish() method supports timeout. |
180 |
URT_PUBSUB_PUBLISHER_PUBLISH_TIMEOUT : bool |
181 |
__ |
182 |
'Pointer to the topic for publishing. |
183 |
+ {field} topic : urt_topic_t* |
184 |
.. URT_CFG_PUBSUB_PROFILING == true .. |
185 |
'Counter of attempts to publish a message. |
186 |
+ {field} publishAttempts : uint64_t |
187 |
'Counter of failed attempts to publish a message. |
188 |
+ {field} publishFails : uint64_t |
189 |
__ |
190 |
'Initializes a urt_publisher_t object and contributes an optional list of messages. |
191 |
+ {method} urtPublisherInit (publisher : urt_publisher_t*, topic : urt_topic_t*, messages : urt_message_t*) : void |
192 |
.. URT_PUBSUB_PUBLISHER_PUBLISH_TIMEOUT == false .. |
193 |
'Publishes a message via the associated topic. |
194 |
+ {method} urtPublisherPublish (publisher : urt_publisher_t*, payload : void*, bytes : size_t, t : urt_osTime_t) : urt_status_t |
195 |
.. URT_PUBSUB_PUBLISHER_PUBLISH_TIMEOUT == true .. |
196 |
'Publishes a message via the associated topic with timeout. |
197 |
+ {method} urtPublisherPublish (publisher : urt_publisher_t*, payload : void*, bytes : size_t, t : urt_osTime_t, timeout : urt_delay_t) : urt_status_t |
198 |
} |
199 |
|
200 |
/' Topic type. '/ |
201 |
$structure("urt_topic_t") { |
202 |
'Pointer to the next topic in a list. |
203 |
+ {field} next : urt_topic_t* |
204 |
'Identifier of the topic. |
205 |
+ {field} id : urt_topicid_t |
206 |
'Mutex lock for exclusive access. |
207 |
+ {field} lock : urt_osMutex_t |
208 |
'Event source to inform all subscribers when a new message is published. |
209 |
+ {field} evtSource : urt_osEventSource_t |
210 |
'Number of HRT subscribers. |
211 |
+ {field} numHrtSubscribers : unsigned int |
212 |
'Condition variable to inform waiting publishers when a blocked message becomes available. |
213 |
+ {field} hrtReleased : urt_osCondvar_t |
214 |
'Mandatory message, each Topic holds. |
215 |
+ {field} mandatoryMessage : urt_message_t |
216 |
'Pointer to the latest message. |
217 |
+ {field} latestMessage : urt_message_t* |
218 |
.. URT_CFG_PUBSUB_QOS_RATECHECKS == true .. |
219 |
'List of HRT subscribers, orderd by their expected rate (most critical first). |
220 |
+ {field} hrtSubscribers : urt_hrtsubscriber_t* |
221 |
'Timer to check for missed rates. |
222 |
+ {field} qosRateTimer : urt_osTimer_t |
223 |
.. URT_CFG_PUBSUB_PROFILING == true .. |
224 |
'Number of overall published messages on this topic. |
225 |
+ {field} numMessagesPublished : uint64_t |
226 |
'Variable to count how often (non-hrt) subscribers did not fetch a message before it was reused. |
227 |
+ {field} numMessagesDiscarded : uint64_t |
228 |
'Number of overall subscribers. |
229 |
+ {field} numSubscribers : unsigned int |
230 |
__ |
231 |
'Initializes an urt_topic_t object. |
232 |
+ {method} urtTopicInit (topic : urt_topic_t*, id : urt_topicid_t, mandatoryMessage: urt_message_t*) : urt_status_t |
233 |
} |
234 |
|
235 |
!endsub |
236 |
|
237 |
/'### DEPENDENCIES & LAYOUT ##################################################'/ |
238 |
|
239 |
!startsub DEPENDENCIES |
240 |
|
241 |
urt_message_t "1" o- "0,1" urt_message_t |
242 |
|
243 |
urt_basesubscriber_t "1" o- - "0,1" urt_message_t |
244 |
|
245 |
urt_nrtsubscriber_t - -|> urt_basesubscriber_t |
246 |
|
247 |
urt_srtsubscriber_t - -|> urt_basesubscriber_t |
248 |
|
249 |
urt_frtsubscriber_t - -|> urt_basesubscriber_t |
250 |
|
251 |
urt_hrtsubscriber_t - -|> urt_basesubscriber_t |
252 |
urt_hrtsubscriber_t "1" o- "0,1" urt_hrtsubscriber_t |
253 |
|
254 |
urt_publisher_t "1" o- "1" urt_topic_t |
255 |
urt_publisher_t ..> urt_message_t |
256 |
|
257 |
urt_topic_t "1" o- "0,1" urt_topic_t |
258 |
urt_topic_t "1" o- "0,1" urt_hrtsubscriber_t |
259 |
urt_topic_t "1" *- - "1" urt_message_t |
260 |
|
261 |
!endsub |
262 |
|
263 |
/'### OUTRO ##################################################################'/ |
264 |
|
265 |
@enduml |
266 |
|
267 |
@startuml |
268 |
|
269 |
title **µRtWare**\nPublish-Subscribe System |
270 |
|
271 |
|
272 |
|
273 |
|
274 |
|
275 |
|
276 |
|
277 |
|
278 |
|
279 |
|
280 |
|
281 |
|
282 |
class urt_message_t <<S,BFAFFF>> { |
283 |
+ {field} next : urt_message_t* |
284 |
+ {field} payload : void* |
285 |
+ {field} originTime : urt_osTime_t |
286 |
+ {field} numHrtConsumersLeft : unsigned int |
287 |
.. URT_CFG_PUBSUB_PROFILING == true .. |
288 |
+ {field} numConsumersLeft : unsigned int |
289 |
__ |
290 |
+ {method} urtMessageInit (message : urt_message_t*, payload : void*) : void |
291 |
} |
292 |
|
293 |
package "subscriber" <<Rectangle>> { |
294 |
class urt_basesubscriber_t <<S,BFAFFF>> { |
295 |
+ {field} topic : urt_topic_t* |
296 |
+ {field} evtListener : urt_osEventListener_t |
297 |
+ {field} lastMessage : urt_message_t* |
298 |
+ {field} lastMessageTime : urt_osTime_t |
299 |
.. URT_CFG_PUBSUB_PROFILING == true .. |
300 |
+ {field} sumLatencies : uint64_t |
301 |
+ {field} numMessagesReceived : uint64_t |
302 |
} |
303 |
|
304 |
class urt_nrtsubscriber_t <<S,BFAFFF>> { |
305 |
.. URT_CFG_PUBSUB_PROFILING == true .. |
306 |
+ {field} minLatency : urt_delay_t |
307 |
+ {field} maxLatency : urt_delay_t |
308 |
__ |
309 |
+ {method} urtNrtSubscriberInit (subscriber : urt_nrtsubscriber_t*) : void |
310 |
+ {method} urtNrtSubscriberSubscribe (subscriber : urt_nrtsubscriber_t*, topic : urt_topic_t*, messages : urt_message_t*) : urt_status_t |
311 |
+ {method} urtNrtSubscriberFetchNextMessage (subscriber : urt_nrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t |
312 |
+ {method} urtNrtSubscriberFetchLatestMessage (subscriber : urt_nrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t |
313 |
+ {method} urtNrtSubscriberUnsubscribe (subscriber : urt_nrtsubscriber_t*) : urt_status_t |
314 |
} |
315 |
|
316 |
class urt_srtsubscriber_t <<S,BFAFFF>> { |
317 |
+ {field} usefulnesscb : urt_usefulness_f* |
318 |
+ {field} cbparams : void* |
319 |
.. URT_CFG_PUBSUB_PROFILING == true .. |
320 |
+ {field} minLatency : urt_delay_t |
321 |
+ {field} maxLatency : urt_delay_t |
322 |
__ |
323 |
+ {method} urtSrtSubscriberInit (subscriber : urt_srtsubscriber_t*) : void |
324 |
+ {method} urtSrtSubscriberSubscribe (subscriber : urt_srtsubscriber_t*, topic : urt_topic_t*, messages : urt_message_t*, usefulnesscb : urt_usefulness_f*, cbparams : void*) : urt_status_t |
325 |
+ {method} urtSrtSubscriberFetchNextMessage (subscriber : urt_srtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t |
326 |
+ {method} urtSrtSubscriberFetchLatestMessage (subscriber : urt_srtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t |
327 |
+ {method} urtSrtSubscriberCalculateUsefulness (subscriber : urt_srtsubscriber_t*, latency : urt_delay_t) : float |
328 |
+ {method} urtSrtSubscriberUnsubscribe (subscriber : urt_srtsubscriber_t*) : urt_status_t |
329 |
} |
330 |
|
331 |
class urt_frtsubscriber_t <<S,BFAFFF>> { |
332 |
.. URT_CFG_PUBSUB_QOS_DEADLINECHECKS == true .. |
333 |
+ {field} deadlineOffset : urt_delay_t |
334 |
.. URT_CFG_PUBSUB_QOS_JITTERCHECKS == true .. |
335 |
+ {field} maxJitter : urt_delay_t |
336 |
.. URT_CFG_PUBSUB_QOS_JITTERCHECKS == true || URT_CFG_PUBSUB_PROFILING == true .. |
337 |
+ {field} minLatency : urt_delay_t |
338 |
+ {field} maxLatency : urt_delay_t |
339 |
__ |
340 |
+ {method} urtFrtSubscriberInit (subscriber : urt_frtsubscriber_t*) : void |
341 |
+ {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 |
342 |
+ {method} urtFrtSubscriberFetchNextMessage (subscriber : urt_frtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t |
343 |
+ {method} urtFrtSubscriberFetchLatestMessage (subscriber : urt_frtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t |
344 |
+ {method} urtFrtSubscriberCalculateValidity (subscriber : urt_frtsubscriber_t*, latency : urt_delay_t) : bool |
345 |
+ {method} urtFrtSubscriberUnsubscribe (subscriber : urt_frtsubscriber_t*) : urt_status_t |
346 |
} |
347 |
|
348 |
class urt_hrtsubscriber_t <<S,BFAFFF>> { |
349 |
+ {field} next : urt_hrtsubscriber_t* |
350 |
.. URT_CFG_PUBSUB_QOS_DEADLINECHECKS == true .. |
351 |
+ {field} deadlineOffset : urt_delay_t |
352 |
+ {field} qosDeadlineTimer : urt_osTimer_t |
353 |
.. URT_CFG_PUBSUB_QOS_JITTERCHECKS == true .. |
354 |
+ {field} maxJitter : urt_delay_t |
355 |
.. URT_CFG_PUBSUB_QOS_JITTERCHECKS == true || URT_CFG_PUBSUB_PROFILING == true.. |
356 |
+ {field} minLatency : urt_delay_t |
357 |
+ {field} maxLatency : urt_delay_t |
358 |
.. URT_CFG_PUBSUB_QOS_RATECHECKS == true .. |
359 |
+ {field} expectedRate : urt_delay_t |
360 |
__ |
361 |
+ {method} urtHrtSubscriberInit (subscriber : urt_hrtsubscriber_t*) : void |
362 |
+ {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 |
363 |
+ {method} urtHrtSubscriberFetchNextMessage (subscriber : urt_hrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t |
364 |
+ {method} urtHrtSubscriberFetchLatestMessage (subscriber : urt_hrtsubscriber_t*, payload : void*, bytes : size_t, latency : urt_delay_t*) : urt_status_t |
365 |
+ {method} urtHrtSubscriberUnsubscribe (subscriber : urt_hrtsubscriber_t*) : urt_status_t |
366 |
} |
367 |
} |
368 |
|
369 |
class urt_publisher_t <<S,BFAFFF>> { |
370 |
URT_PUBSUB_PUBLISHER_PUBLISH_TIMEOUT : bool |
371 |
__ |
372 |
+ {field} topic : urt_topic_t* |
373 |
.. URT_CFG_PUBSUB_PROFILING == true .. |
374 |
+ {field} publishAttempts : uint64_t |
375 |
+ {field} publishFails : uint64_t |
376 |
__ |
377 |
+ {method} urtPublisherInit (publisher : urt_publisher_t*, topic : urt_topic_t*, messages : urt_message_t*) : void |
378 |
.. URT_PUBSUB_PUBLISHER_PUBLISH_TIMEOUT == false .. |
379 |
+ {method} urtPublisherPublish (publisher : urt_publisher_t*, payload : void*, bytes : size_t, t : urt_osTime_t) : urt_status_t |
380 |
.. URT_PUBSUB_PUBLISHER_PUBLISH_TIMEOUT == true .. |
381 |
+ {method} urtPublisherPublish (publisher : urt_publisher_t*, payload : void*, bytes : size_t, t : urt_osTime_t, timeout : urt_delay_t) : urt_status_t |
382 |
} |
383 |
|
384 |
class urt_topic_t <<S,BFAFFF>> { |
385 |
+ {field} next : urt_topic_t* |
386 |
+ {field} id : urt_topicid_t |
387 |
+ {field} lock : urt_osMutex_t |
388 |
+ {field} evtSource : urt_osEventSource_t |
389 |
+ {field} numHrtSubscribers : unsigned int |
390 |
+ {field} hrtReleased : urt_osCondvar_t |
391 |
+ {field} mandatoryMessage : urt_message_t |
392 |
+ {field} latestMessage : urt_message_t* |
393 |
.. URT_CFG_PUBSUB_QOS_RATECHECKS == true .. |
394 |
+ {field} hrtSubscribers : urt_hrtsubscriber_t* |
395 |
+ {field} qosRateTimer : urt_osTimer_t |
396 |
.. URT_CFG_PUBSUB_PROFILING == true .. |
397 |
+ {field} numMessagesPublished : uint64_t |
398 |
+ {field} numMessagesDiscarded : uint64_t |
399 |
+ {field} numSubscribers : unsigned int |
400 |
__ |
401 |
+ {method} urtTopicInit (topic : urt_topic_t*, id : urt_topicid_t, mandatoryMessage: urt_message_t*) : urt_status_t |
402 |
} |
403 |
|
404 |
|
405 |
|
406 |
|
407 |
urt_message_t "1" o- "0,1" urt_message_t |
408 |
|
409 |
urt_basesubscriber_t "1" o- - "0,1" urt_message_t |
410 |
|
411 |
urt_nrtsubscriber_t - -|> urt_basesubscriber_t |
412 |
|
413 |
urt_srtsubscriber_t - -|> urt_basesubscriber_t |
414 |
|
415 |
urt_frtsubscriber_t - -|> urt_basesubscriber_t |
416 |
|
417 |
urt_hrtsubscriber_t - -|> urt_basesubscriber_t |
418 |
urt_hrtsubscriber_t "1" o- "0,1" urt_hrtsubscriber_t |
419 |
|
420 |
urt_publisher_t "1" o- "1" urt_topic_t |
421 |
urt_publisher_t ..> urt_message_t |
422 |
|
423 |
urt_topic_t "1" o- "0,1" urt_topic_t |
424 |
urt_topic_t "1" o- "0,1" urt_hrtsubscriber_t |
425 |
urt_topic_t "1" *- - "1" urt_message_t |
426 |
|
427 |
|
428 |
|
429 |
@enduml |
430 |
|
431 |
PlantUML version 1.2020.15(Sun Jun 28 13:39:45 CEST 2020) |
432 |
(GPL source distribution) |
433 |
Java Runtime: OpenJDK Runtime Environment |
434 |
JVM: OpenJDK 64-Bit Server VM |
435 |
Default Encoding: UTF-8 |
436 |
Language: de |
437 |
Country: DE |
438 |
--></g></svg> |