<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta name="generator" content="Doxygen 1.8.15"/> <meta name="viewport" content="width=device-width, initial-scale=1"/> <title>libfilezilla: rate_limiter Class Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <link href="search/search.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="search/searchdata.js"></script> <script type="text/javascript" src="search/search.js"></script> <link href="doxygen.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td id="projectlogo"><img alt="Logo" src="libfilezilla.png"/></td> <td id="projectalign" style="padding-left: 0.5em;"> <div id="projectname">libfilezilla </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.15 --> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ var searchBox = new SearchBox("searchBox", "search",false,'Search'); /* @license-end */ </script> <script type="text/javascript" src="menudata.js"></script> <script type="text/javascript" src="menu.js"></script> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ $(function() { initMenu('',true,false,'search.php','Search'); $(document).ready(function() { init_search(); }); }); /* @license-end */</script> <div id="main-nav"></div> <!-- window showing the filter options --> <div id="MSearchSelectWindow" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> </div> <!-- iframe showing the search results (closed by default) --> <div id="MSearchResultsWindow"> <iframe src="javascript:void(0)" frameborder="0" name="MSearchResults" id="MSearchResults"> </iframe> </div> <div id="nav-path" class="navpath"> <ul> <li class="navelem"><a class="el" href="namespacefz.html">fz</a></li><li class="navelem"><a class="el" href="classfz_1_1rate__limiter.html">rate_limiter</a></li> </ul> </div> </div><!-- top --> <div class="header"> <div class="summary"> <a href="#nested-classes">Classes</a> | <a href="#pub-methods">Public Member Functions</a> | <a href="#friends">Friends</a> | <a href="classfz_1_1rate__limiter-members.html">List of all members</a> </div> <div class="headertitle"> <div class="title">rate_limiter Class Reference<span class="mlabels"><span class="mlabel">final</span></span></div> </div> </div><!--header--> <div class="contents"> <p>A limiter for the attached buckets. <a href="classfz_1_1rate__limiter.html#details">More...</a></p> <p><code>#include <<a class="el" href="rate__limiter_8hpp_source.html">rate_limiter.hpp</a>></code></p> <div class="dynheader"> Inheritance diagram for rate_limiter:</div> <div class="dyncontent"> <div class="center"><img src="classfz_1_1rate__limiter__inherit__graph.png" border="0" usemap="#rate__limiter_inherit__map" alt="Inheritance graph"/></div> <map name="rate__limiter_inherit__map" id="rate__limiter_inherit__map"> <area shape="rect" title="A limiter for the attached buckets." alt="" coords="8,80,101,107"/> <area shape="rect" href="classfz_1_1bucket__base.html" title="Base class for buckets." alt="" coords="5,5,104,32"/> </map> <center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div> <div class="dynheader"> Collaboration diagram for rate_limiter:</div> <div class="dyncontent"> <div class="center"><img src="classfz_1_1rate__limiter__coll__graph.png" border="0" usemap="#rate__limiter_coll__map" alt="Collaboration graph"/></div> <map name="rate__limiter_coll__map" id="rate__limiter_coll__map"> <area shape="rect" title="A limiter for the attached buckets." alt="" coords="20,336,113,363"/> <area shape="rect" href="classfz_1_1bucket__base.html" title="Base class for buckets." alt="" coords="17,260,116,287"/> <area shape="rect" href="classfz_1_1mutex.html" title="Lean replacement for std::(recursive_)mutex." alt="" coords="5,171,64,197"/> <area shape="rect" href="classfz_1_1rate__limit__manager.html" title="Context for rate_limiters." alt="" coords="89,171,231,197"/> <area shape="rect" href="classfz_1_1event__handler.html" title="Simple handler for asynchronous event processing." alt="" coords="105,95,215,121"/> <area shape="rect" href="classfz_1_1event__loop.html" title="A threaded event loop that supports sending events and timers." alt="" coords="115,5,205,32"/> </map> <center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a> Public Member Functions</h2></td></tr> <tr class="memitem:aa306d6d6dea355c8e67c6aa53419e5d7"><td class="memItemLeft" align="right" valign="top"><a id="aa306d6d6dea355c8e67c6aa53419e5d7"></a>  </td><td class="memItemRight" valign="bottom"><b>rate_limiter</b> (<a class="el" href="classfz_1_1rate__limit__manager.html">rate_limit_manager</a> *mgr)</td></tr> <tr class="separator:aa306d6d6dea355c8e67c6aa53419e5d7"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a423b44c1262b682741c824ac2f69c3ae"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classfz_1_1rate__limiter.html#a423b44c1262b682741c824ac2f69c3ae">add</a> (<a class="el" href="classfz_1_1bucket__base.html">bucket_base</a> *<a class="el" href="classfz_1_1bucket.html">bucket</a>)</td></tr> <tr class="memdesc:a423b44c1262b682741c824ac2f69c3ae"><td class="mdescLeft"> </td><td class="mdescRight">Adds a bucket to the limiter. <a href="#a423b44c1262b682741c824ac2f69c3ae">More...</a><br /></td></tr> <tr class="separator:a423b44c1262b682741c824ac2f69c3ae"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a645d60ffbde823b162f29ae21ab77585"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classfz_1_1rate__limiter.html#a645d60ffbde823b162f29ae21ab77585">set_limits</a> (rate::type download_limit, rate::type upload_limit)</td></tr> <tr class="memdesc:a645d60ffbde823b162f29ae21ab77585"><td class="mdescLeft"> </td><td class="mdescRight">Sets the number of octets all buckets combined may consume each second. <a href="#a645d60ffbde823b162f29ae21ab77585">More...</a><br /></td></tr> <tr class="separator:a645d60ffbde823b162f29ae21ab77585"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ad0f216b4914907245fc0e6b0f5501263"><td class="memItemLeft" align="right" valign="top"><a id="ad0f216b4914907245fc0e6b0f5501263"></a> rate::type </td><td class="memItemRight" valign="bottom"><a class="el" href="classfz_1_1rate__limiter.html#ad0f216b4914907245fc0e6b0f5501263">limit</a> (direction::type const d)</td></tr> <tr class="memdesc:ad0f216b4914907245fc0e6b0f5501263"><td class="mdescLeft"> </td><td class="mdescRight">Returns current limit. <br /></td></tr> <tr class="separator:ad0f216b4914907245fc0e6b0f5501263"><td class="memSeparator" colspan="2"> </td></tr> <tr class="inherit_header pub_methods_classfz_1_1bucket__base"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classfz_1_1bucket__base')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="classfz_1_1bucket__base.html">bucket_base</a></td></tr> <tr class="memitem:a40c4a9c1e85b29e57d593ad95dcd409e inherit pub_methods_classfz_1_1bucket__base"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classfz_1_1bucket__base.html#a40c4a9c1e85b29e57d593ad95dcd409e">remove_bucket</a> ()</td></tr> <tr class="separator:a40c4a9c1e85b29e57d593ad95dcd409e inherit pub_methods_classfz_1_1bucket__base"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a> Friends</h2></td></tr> <tr class="memitem:a0a157bf0278c446da4ee57b5b7ded23a"><td class="memItemLeft" align="right" valign="top"><a id="a0a157bf0278c446da4ee57b5b7ded23a"></a> class </td><td class="memItemRight" valign="bottom"><b>bucket_base</b></td></tr> <tr class="separator:a0a157bf0278c446da4ee57b5b7ded23a"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a171879891cbaa5d85565ad6877961be3"><td class="memItemLeft" align="right" valign="top"><a id="a171879891cbaa5d85565ad6877961be3"></a> class </td><td class="memItemRight" valign="bottom"><b>rate_limit_manager</b></td></tr> <tr class="separator:a171879891cbaa5d85565ad6877961be3"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a> Additional Inherited Members</h2></td></tr> <tr class="inherit_header pro_attribs_classfz_1_1bucket__base"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classfz_1_1bucket__base')"><img src="closed.png" alt="-"/> Protected Attributes inherited from <a class="el" href="classfz_1_1bucket__base.html">bucket_base</a></td></tr> <tr class="memitem:a60468050f37574359dddbe5dff73ef2a inherit pro_attribs_classfz_1_1bucket__base"><td class="memItemLeft" align="right" valign="top"><a id="a60468050f37574359dddbe5dff73ef2a"></a> <a class="el" href="classfz_1_1mutex.html">mutex</a> </td><td class="memItemRight" valign="bottom"><b>mtx_</b> {false}</td></tr> <tr class="separator:a60468050f37574359dddbe5dff73ef2a inherit pro_attribs_classfz_1_1bucket__base"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ae006cf32fb5a7d186177e06af6a09992 inherit pro_attribs_classfz_1_1bucket__base"><td class="memItemLeft" align="right" valign="top"><a id="ae006cf32fb5a7d186177e06af6a09992"></a> <a class="el" href="classfz_1_1rate__limit__manager.html">rate_limit_manager</a> * </td><td class="memItemRight" valign="bottom"><b>mgr_</b> {}</td></tr> <tr class="separator:ae006cf32fb5a7d186177e06af6a09992 inherit pro_attribs_classfz_1_1bucket__base"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a5792e5755d0d2b4e437d43f46822e508 inherit pro_attribs_classfz_1_1bucket__base"><td class="memItemLeft" align="right" valign="top"><a id="a5792e5755d0d2b4e437d43f46822e508"></a> void * </td><td class="memItemRight" valign="bottom"><b>parent_</b> {}</td></tr> <tr class="separator:a5792e5755d0d2b4e437d43f46822e508 inherit pro_attribs_classfz_1_1bucket__base"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:af2940af5cca1728fffc5eb232188eda2 inherit pro_attribs_classfz_1_1bucket__base"><td class="memItemLeft" align="right" valign="top"><a id="af2940af5cca1728fffc5eb232188eda2"></a> size_t </td><td class="memItemRight" valign="bottom"><b>idx_</b> {static_cast<size_t>(-1)}</td></tr> <tr class="separator:af2940af5cca1728fffc5eb232188eda2 inherit pro_attribs_classfz_1_1bucket__base"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <div class="textblock"><p>A limiter for the attached buckets. </p> <p>Distributes tokens fairly between buckets, with overflow distributed so that the total limit is not exceeded.</p> <p>Limiters can either be added to <a class="el" href="classfz_1_1rate__limit__manager.html" title="Context for rate_limiters.">rate_limit_manager</a>, or as sub-limiter to another limiter. For leaf buckets, the actual rate limit is the lowest limit imposed by any of its parents. </p> </div><h2 class="groupheader">Member Function Documentation</h2> <a id="a423b44c1262b682741c824ac2f69c3ae"></a> <h2 class="memtitle"><span class="permalink"><a href="#a423b44c1262b682741c824ac2f69c3ae">◆ </a></span>add()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void add </td> <td>(</td> <td class="paramtype"><a class="el" href="classfz_1_1bucket__base.html">bucket_base</a> * </td> <td class="paramname"><em>bucket</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Adds a bucket to the limiter. </p> <p>Child buckets get removed automatically when they are destroyed, or manually when the child's <code>remove_bucket</code> is called. </p> </div> </div> <a id="a645d60ffbde823b162f29ae21ab77585"></a> <h2 class="memtitle"><span class="permalink"><a href="#a645d60ffbde823b162f29ae21ab77585">◆ </a></span>set_limits()</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void set_limits </td> <td>(</td> <td class="paramtype">rate::type </td> <td class="paramname"><em>download_limit</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">rate::type </td> <td class="paramname"><em>upload_limit</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Sets the number of octets all buckets combined may consume each second. </p> <p>Pass <code>rate::unlimited</code> if there should be no limit.</p> <p>The default limit is <code>rate::unlimited</code>. </p> </div> </div> <hr/>The documentation for this class was generated from the following file:<ul> <li><a class="el" href="rate__limiter_8hpp_source.html">rate_limiter.hpp</a></li> </ul> </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> Generated by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.15 </small></address> </body> </html>