Chromium Code Reviews| Index: webrtc/base/rate_limiter.h |
| diff --git a/webrtc/base/rate_limiter.h b/webrtc/base/rate_limiter.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..a76888559525b1e7719329e4571f5fb5ebe7f9ca |
| --- /dev/null |
| +++ b/webrtc/base/rate_limiter.h |
| @@ -0,0 +1,52 @@ |
| +/* |
| + * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. |
| + * |
| + * Use of this source code is governed by a BSD-style license |
| + * that can be found in the LICENSE file in the root of the source |
| + * tree. An additional intellectual property rights grant can be found |
| + * in the file PATENTS. All contributing project authors may |
| + * be found in the AUTHORS file in the root of the source tree. |
| + */ |
| + |
| +#ifndef WEBRTC_BASE_RATE_LIMITER_H_ |
| +#define WEBRTC_BASE_RATE_LIMITER_H_ |
| + |
| +#include <limits> |
| + |
| +#include "webrtc/base/constructormagic.h" |
| +#include "webrtc/base/criticalsection.h" |
| +#include "webrtc/base/rate_statistics.h" |
| + |
| +namespace webrtc { |
| + |
| +class Clock; |
| + |
| +class RateLimiter { |
|
tommi
2016/07/07 12:48:46
documentation?
sprang_webrtc
2016/07/07 13:46:51
Done.
|
| + public: |
| + RateLimiter(Clock* clock, int64_t max_retransmission_window_ms); |
| + virtual ~RateLimiter(); |
|
tommi
2016/07/07 12:48:46
why virtual?
sprang_webrtc
2016/07/07 13:46:51
I had the methods be virtual before, in order to b
tommi
2016/07/08 08:52:20
great. I think that's an improvement and the fact
|
| + |
| + // Try to use rate to send bytes. Returns true on success and if so updates |
| + // current rate. |
| + bool TryUseRate(size_t packet_size_bytes); |
| + |
| + // Set the maximum bitrate, in bps, that this limiter allows to send. |
| + void SetMaxRate(uint32_t max_rate_bps); |
| + |
| + // Set the window size over which to measure the current bitrate. |
| + // For retransmissions, this is typically the RTT. |
| + void SetWindowSize(int64_t window_size_ms); |
| + |
| + private: |
| + Clock* const clock_; |
| + rtc::CriticalSection lock_; |
| + RateStatistics current_rate_ GUARDED_BY(lock_); |
| + int64_t window_size_ms_ GUARDED_BY(lock_); |
| + uint32_t max_rate_bps_ GUARDED_BY(lock_); |
| + |
| + RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(RateLimiter); |
| +}; |
| + |
| +} // namespace webrtc |
| + |
| +#endif // WEBRTC_BASE_RATE_LIMITER_H_ |