1 |
(* Copyright 2003, Denis Fortin |
(* Copyright 2003, Denis Fortin |
2 |
Heavily based on file CurrentRateMeasure.py |
Heavily based on file CurrentRateMeasure.py |
3 |
from BitTorrent 3.3 by Bram Cohen |
from BitTorrent 3.3 by Bram Cohen |
4 |
*) |
*) |
5 |
(* |
(* |
29 |
mutable rate : float; |
mutable rate : float; |
30 |
} |
} |
31 |
|
|
32 |
let (>) a b = a.rate > b.rate |
let (>) a b = a.rate > b.rate |
33 |
|
|
34 |
let update r amount = |
let update r amount = |
35 |
let t = float_of_int (last_time ()) in |
let t = float_of_int (last_time ()) in |
36 |
r.rate <- (r.rate *. (r.lasttime -. r.ratesince) +. |
r.rate <- (r.rate *. (r.lasttime -. r.ratesince) +. |
37 |
amount) /. (t -. r.ratesince); |
amount) /. (t -. r.ratesince); |
38 |
r.lasttime <- t; |
r.lasttime <- t; |
39 |
if r.ratesince < (t -. 20.) then |
if r.ratesince < (t -. 20.) then |
40 |
r.ratesince <- (t -. 20.) |
r.ratesince <- (t -. 20.) |
41 |
|
|
42 |
let update_no_change r = |
let update_no_change r = |
43 |
let t = float_of_int (last_time ()) in |
let t = float_of_int (last_time ()) in |
44 |
r.ratesince <- t |
r.ratesince <- t |
45 |
|
|
46 |
let ratesince r = |
let ratesince r = |
47 |
r.ratesince |
r.ratesince |
48 |
|
|
49 |
let new_rate () = |
let new_rate () = |
50 |
let t = float_of_int (last_time()) in |
let t = float_of_int (last_time()) in |
51 |
{ |
{ |
52 |
ratesince = t -. 1.; |
ratesince = t -. 1.; |
53 |
lasttime = t; |
lasttime = t; |
54 |
rate = 0.; |
rate = 0.; |
55 |
} |
} |
56 |
|
|
57 |
let last_time t = |
let last_time t = |
58 |
t.lasttime |
t.lasttime |
59 |
|
|
60 |
let get_rate r = |
let get_rate r = |
61 |
r.rate |
r.rate |
|
|
|
62 |
|
|
63 |
let compare r1 r2 = |
let compare r1 r2 = |
64 |
compare r1.rate r2.rate |
compare r1.rate r2.rate |
65 |
|
|
66 |
let zero = { |
let zero = { |