libutil++  1.9.3
 All Classes Functions Variables
TokenBucket.h
1 /*
2 ** libutil++
3 ** $Id: TokenBucket.h 1653 2016-02-28 19:54:59Z sella $
4 ** Copyright (c) 2011-2016 Digital Genesis, LLC. All Rights Reserved.
5 ** Released under the LGPL Version 2.1 License.
6 ** http://www.digitalgenesis.com
7 */
8 
9 #ifndef __libutilxx__sella__algo__TokenBucket_H__
10 #define __libutilxx__sella__algo__TokenBucket_H__
11 
12 #include "../../common.h"
13 
14 #include <stdint.h>
15 
16 #include <memory>
17 
18 namespace sella {
19  namespace algo {
20  class TokenBucket;
21  }
22 }
23 
25  public:
26  TokenBucket(const TokenBucket & chain, double limit) throw ();
27  TokenBucket(double limit) throw ();
28 
29  bool sub(double value, bool blocking = false) throw ();
30  bool add(double value) throw ();
31 
32  private:
33  std::shared_ptr<TokenBucket> chain;
34 
35  uint64_t stamp;
36 
37  double limit;
38  double value;
39 };
40 
41 #endif
42 
43 /*
44 ** vim: noet ts=3 sw=3
45 */