swift
tokenbucket.h
1 // SPDX-FileCopyrightText: Copyright (C) 2014 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
4 #ifndef SWIFT_MISC_TOKENBUCKET_H
5 #define SWIFT_MISC_TOKENBUCKET_H
6 
7 #include <QDateTime>
8 
9 #include "misc/swiftmiscexport.h"
10 
11 namespace swift::misc
12 {
21  {
22  public:
24  CTokenBucket(int capacity, qint64 intervalMs, int numTokensToRefill);
25 
28  bool tryConsume(int numTokens = 1, qint64 msSinceEpoch = -1);
29 
31  void setNumberOfTokensToRefill(int numTokens);
32 
34  void setCapacity(int capacity);
35 
37  void setCapacityAndTokensToRefill(int numTokens);
38 
40  void setInterval(qint64 intervalMs) { m_intervalMs = intervalMs; }
41 
43  int getTokensPerSecond() const;
44 
45  private:
51  int getTokens(qint64 msSinceEpoch);
52 
53  int m_capacity = 10;
54  int m_availableTokens = 10;
55  int m_numTokensToRefill = 1;
56  qint64 m_intervalMs = 5000;
57  qint64 m_lastReplenishmentTime = QDateTime::currentMSecsSinceEpoch();
58  };
59 } // namespace swift::misc
60 
61 #endif // SWIFT_MISC_TOKENBUCKET_H
Token bucket algorithm.
Definition: tokenbucket.h:21
void setInterval(qint64 intervalMs)
Set the interval.
Definition: tokenbucket.h:40
Free functions in swift::misc.
#define SWIFT_MISC_EXPORT
Export a class or function from the library.