diff options
Diffstat (limited to 'sources')
| -rw-r--r-- | sources/thibaut/simul.ml | 39 |
1 files changed, 20 insertions, 19 deletions
diff --git a/sources/thibaut/simul.ml b/sources/thibaut/simul.ml index 560e6e6..a542b4f 100644 --- a/sources/thibaut/simul.ml +++ b/sources/thibaut/simul.ml @@ -75,7 +75,7 @@ let server_init_seed peer round duration = let data = { phase = SEEDING; duration = duration; - seed = Random.int (1 lsl 31); + seed = Random.int (1 lsl 29); hmap = HashMap.empty; included = 0; replies = [] @@ -190,7 +190,7 @@ let seed = ref 0 let arg_list = [ "--peers", Arg.Set_int npeers, " <n> number of peers"; "--degree", Arg.Set_int degree, " <n> maximum number of neighbours"; - "--days", Arg.Set_int degree, " <n> numbers of days"; + "--days", Arg.Set_int days, " <n> numbers of days"; "--tpm", Arg.Set_int tpm, " <n> number of ticks per minute"; "--accuracy", Arg.Set_int accuracy, " <n> number of ticks between rounds"; "--duration", Arg.Set_int duration, " <n> number of ticks during seeding"; @@ -198,34 +198,35 @@ let arg_list = [ ] let _ = - Arg.parse (Arg.align arg_list) (fun s -> ()) ""; + Arg.parse (Arg.align arg_list) (fun s -> ()) "Pacemaker simulator"; Random.init !seed let peers = Array.init !npeers (fun i -> { id = i; - con_state = ON; + con_state = OFF; neighbours = Array.make !degree None; rounds_data = RoundMap.empty; messages = Queue.create(); history = RoundMap.empty }) -let nticks = !days*24*60*(!tpm) +let nticks = (!days)*24*60*(!tpm) let round = ref 0 -let _ = for i = 0 to (nticks-1) do - if i mod !accuracy = 0 then begin - incr round; - server_init_seed peers.(0) !round !duration - end - else if i mod !accuracy = !duration then - server_init_pulse peers.(0) !round; - - do_server peers.(0); - for i = 1 to (!npeers-1) do - let peer = peers.(i) in - if peer.con_state = ON then - do_peer peer +let _ = + for i = 0 to (nticks-1) do + if i mod !accuracy = 0 then begin + incr round; + server_init_seed peers.(0) !round !duration + end + else if i mod !accuracy = !duration then + server_init_pulse peers.(0) !round; + + do_server peers.(0); + for i = 1 to (!npeers-1) do + let peer = peers.(i) in + if peer.con_state = ON then + do_peer peer + done done -done |
