Roc Toolkit internal modules
Roc Toolkit: real-time audio streaming
Toggle main menu visibility
Main Page
Namespaces
Namespace List
Namespace Members
All
a
b
c
d
e
f
h
i
l
m
n
o
p
r
s
t
u
v
Functions
a
b
c
d
e
f
h
i
l
n
o
p
r
s
t
u
v
Variables
Typedefs
Enumerations
a
c
d
f
h
i
l
m
p
r
s
t
v
Enumerator
a
c
d
f
h
i
l
m
p
r
s
t
u
v
Classes
Class List
Class Index
Class Hierarchy
Class Members
All
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
~
Functions
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
~
Variables
a
b
c
d
e
f
h
i
j
l
m
n
o
p
q
r
s
t
u
w
Typedefs
Enumerations
Enumerator
b
c
d
e
f
i
m
n
q
r
s
x
Files
File List
File Members
All
f
o
r
Functions
Variables
Macros
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Pages
Loading...
Searching...
No Matches
rate_limiter.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2017 Roc Streaming authors
3
*
4
* This Source Code Form is subject to the terms of the Mozilla Public
5
* License, v. 2.0. If a copy of the MPL was not distributed with this
6
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
*/
8
9
//! @file roc_core/rate_limiter.h
10
//! @brief Rate limiter.
11
12
#ifndef ROC_CORE_RATE_LIMITER_H_
13
#define ROC_CORE_RATE_LIMITER_H_
14
15
#include "
roc_core/noncopyable.h
"
16
#include "
roc_core/ticker.h
"
17
18
namespace
roc
{
19
namespace
core {
20
21
//! Rate limiter.
22
class
RateLimiter
:
public
NonCopyable
<> {
23
public
:
24
//! Initialize rate limiter.
25
//! @remarks
26
//! @p period is tick duration in nanoseconds.
27
explicit
RateLimiter
(
nanoseconds_t
period
);
28
29
//! Check whether allow() would succeed.
30
bool
would_allow
();
31
32
//! Check whether an event is allowed to occur now, and if yes, mark it as occurred.
33
bool
allow
();
34
35
private
:
36
const
Ticker::ticks_t
period_;
37
Ticker::ticks_t
pos_;
38
Ticker
ticker_;
39
};
22
class
RateLimiter
:
public
NonCopyable
<> {
…
};
40
41
}
// namespace core
42
}
// namespace roc
43
44
#endif
// ROC_CORE_RATE_LIMITER_H_
roc::core::NonCopyable
Base class for non-copyable objects.
Definition
noncopyable.h:23
roc::core::RateLimiter
Rate limiter.
Definition
rate_limiter.h:22
roc::core::RateLimiter::RateLimiter
RateLimiter(nanoseconds_t period)
Initialize rate limiter.
roc::core::RateLimiter::allow
bool allow()
Check whether an event is allowed to occur now, and if yes, mark it as occurred.
roc::core::RateLimiter::would_allow
bool would_allow()
Check whether allow() would succeed.
roc::core::SharedPtr
Shared ownership intrusive pointer.
Definition
shared_ptr.h:32
roc::core::Ticker
Ticker.
Definition
ticker.h:23
roc::core::Ticker::ticks_t
uint64_t ticks_t
Number of ticks.
Definition
ticker.h:26
roc::core::nanoseconds_t
int64_t nanoseconds_t
Nanoseconds.
Definition
time.h:58
roc
Root namespace.
noncopyable.h
Non-copyable object.
ticker.h
Ticker.
roc_core
rate_limiter.h
Generated by
1.9.8