diff options
author | Christophe Romain <christophe.romain@process-one.net> | 2016-04-29 10:57:34 +0200 |
---|---|---|
committer | Christophe Romain <christophe.romain@process-one.net> | 2016-04-29 10:57:34 +0200 |
commit | 6a10916ddab5b289bc1f83b835818bb907bcda3c (patch) | |
tree | ba1402e5863f3fbecfa8bd294a72d31bd906b921 /src | |
parent | Add pubsub subscribe/unsubscribe hook (diff) |
Let shaper cope with low resolution system clock
We no longer rely on getting unique values from clock source, so we need
to handle cope with systems which does not have a microsecond resolution
on system clock (such as MS Windows)
Diffstat (limited to 'src')
-rw-r--r-- | src/shaper.erl | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/shaper.erl b/src/shaper.erl index a136c2130..eb82b8faa 100644 --- a/src/shaper.erl +++ b/src/shaper.erl @@ -124,9 +124,13 @@ update(#maxrate{} = State, Size) -> true -> 0 end, NextNow = p1_time_compat:system_time(micro_seconds) + Pause * 1000, + Div = case NextNow - State#maxrate.lasttime of + 0 -> 1; + V -> V + end, {State#maxrate{lastrate = (State#maxrate.lastrate + - 1000000 * Size / (NextNow - State#maxrate.lasttime)) + 1000000 * Size / Div) / 2, lasttime = NextNow}, Pause}. |