Skip to content

Commit 2093247

Browse files
committed
Merge branch 'master' into deploy
2 parents 9cf4bca + 9b16abe commit 2093247

File tree

2 files changed

+71
-37
lines changed

2 files changed

+71
-37
lines changed
Lines changed: 55 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,25 @@
11
open TreeAggregation
22
open TreeAggregationNames
33

4-
module TreeAggregationArrangement = struct
4+
module type TreeAggregationParams = sig
5+
val debug : bool
6+
val send_aggregate_timeout : float
7+
val broadcast_timeout : float
8+
end
9+
10+
module DebugParams = struct
11+
let debug = true
12+
let send_aggregate_timeout = 3.0
13+
let broadcast_timeout = 5.0
14+
end
15+
16+
module ProductionParams = struct
17+
let debug = false
18+
let send_aggregate_timeout = 2.0
19+
let broadcast_timeout = 3.0
20+
end
21+
22+
module TreeAggregationArrangement (P : TreeAggregationParams) = struct
523
type name = Names.name
624
type state = coq_Data
725
type input = coq_Input
@@ -18,66 +36,72 @@ module TreeAggregationArrangement = struct
1836

1937
let deserializeName : string -> name option = Serialization.deserializeName
2038

21-
let init : name -> state = fun n ->
22-
Obj.magic (coq_TreeAggregation_MultiParams.init_handlers (Obj.magic n))
39+
let init : name -> state =
40+
fun n ->
41+
Obj.magic (coq_TreeAggregation_MultiParams.init_handlers (Obj.magic n))
2342

2443
let handleIO : name -> input -> state -> res =
2544
fun n i s ->
26-
Obj.magic (coq_TreeAggregation_MultiParams.input_handlers (Obj.magic n) (Obj.magic i) (Obj.magic s))
45+
Obj.magic (coq_TreeAggregation_MultiParams.input_handlers (Obj.magic n) (Obj.magic i) (Obj.magic s))
2746

2847
let handleNet : name -> name -> msg -> state -> res =
2948
fun dst src m s ->
30-
Obj.magic (coq_TreeAggregation_MultiParams.net_handlers (Obj.magic dst) (Obj.magic src) (Obj.magic m) (Obj.magic s))
49+
Obj.magic (coq_TreeAggregation_MultiParams.net_handlers (Obj.magic dst) (Obj.magic src) (Obj.magic m) (Obj.magic s))
3150

32-
let setTimeout : name -> state -> float = fun _ _ -> 1.0
51+
let deserializeMsg : string -> msg = Serialization.deserializeMsg
3352

34-
let deserializeMsg = Serialization.deserializeMsg
53+
let serializeMsg : msg -> string = Serialization.serializeMsg
3554

36-
let serializeMsg = Serialization.serializeMsg
55+
let deserializeInput : string -> client_id -> input option = Serialization.deserializeInput
3756

38-
let deserializeInput = Serialization.deserializeInput
57+
let serializeOutput : output -> client_id * string = Serialization.serializeOutput
3958

40-
let serializeOutput = Serialization.serializeOutput
59+
let failMsg : msg option = Some Fail
4160

42-
let failMsg = Some Fail
61+
let newMsg : msg option = Some New
4362

44-
let newMsg = Some New
63+
let debug : bool = P.debug
4564

46-
let debug : bool = true
65+
let timestamp () =
66+
let open Unix in
67+
let tm = localtime (time ()) in
68+
Printf.sprintf "%i/%i/%i %.2i:%.2i:%.2i"
69+
tm.tm_mday (tm.tm_mon+1) (tm.tm_year+1900) tm.tm_hour tm.tm_min tm.tm_sec
4770

48-
let debugInput : state -> input -> unit = fun _ inp ->
49-
Printf.printf "got input %s" (Serialization.debugSerializeInput inp);
50-
print_newline ()
71+
let debugInput : state -> input -> unit =
72+
fun _ inp ->
73+
Printf.printf "%s: got input %s" (timestamp ()) (Serialization.debugSerializeInput inp);
74+
print_newline ()
5175

52-
let debugRecv : state -> (name * msg) -> unit = fun _ (nm, msg) ->
53-
Printf.printf "receiving message %s from %s" (Serialization.debugSerializeMsg msg) (serializeName nm);
54-
print_newline ()
76+
let debugRecv : state -> (name * msg) -> unit =
77+
fun _ (nm, msg) ->
78+
Printf.printf "%s: receiving message %s from %s" (timestamp ()) (Serialization.debugSerializeMsg msg) (serializeName nm);
79+
print_newline ()
5580

56-
let debugSend : state -> (name * msg) -> unit = fun _ (nm, msg) ->
57-
Printf.printf "sending message %s to %s" (Serialization.debugSerializeMsg msg) (serializeName nm);
58-
print_newline ()
81+
let debugSend : state -> (name * msg) -> unit =
82+
fun _ (nm, msg) ->
83+
Printf.printf "%s: sending message %s to %s" (timestamp ()) (Serialization.debugSerializeMsg msg) (serializeName nm);
84+
print_newline ()
5985

86+
(* obsolete *)
6087
let debugTimeout : state -> unit = fun _ -> ()
6188

62-
let createClientId () = Uuidm.to_string (Uuidm.create `V4)
89+
let createClientId () : client_id = Uuidm.to_string (Uuidm.create `V4)
6390

64-
let serializeClientId (c : client_id) = c
91+
let serializeClientId (c : client_id) : string = c
6592

6693
let deliverSendAggregateHandler : task_handler =
6794
fun n s ->
6895
Obj.magic (coq_TreeAggregation_MultiParams.input_handlers (Obj.magic n) (Obj.magic SendAggregate) (Obj.magic s))
6996

70-
let setSendAggregateTimeout : timeout_setter =
71-
fun n s ->
72-
3.0
97+
let setSendAggregateTimeout : timeout_setter = fun n s -> P.send_aggregate_timeout
7398

7499
let deliverBroadcastHandler : task_handler =
75100
fun n s ->
76101
Obj.magic (coq_TreeAggregation_MultiParams.input_handlers (Obj.magic n) (Obj.magic Broadcast) (Obj.magic s))
77102

78-
let setBroadcastTimeout : timeout_setter =
79-
fun n s ->
80-
5.0
103+
let setBroadcastTimeout : timeout_setter = fun n s -> P.broadcast_timeout
81104

82-
let timeoutTasks = [(deliverSendAggregateHandler, setSendAggregateTimeout); (deliverBroadcastHandler, setBroadcastTimeout)]
105+
let timeoutTasks : (task_handler * timeout_setter) list =
106+
[(deliverSendAggregateHandler, setSendAggregateTimeout); (deliverBroadcastHandler, setBroadcastTimeout)]
83107
end
Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
open Printf
22
open Opts
33

4-
module TreeAggregationShim = OrderedShim.Shim(TreeAggregationArrangement.TreeAggregationArrangement)
4+
module TreeAggregationShimDebug = OrderedShim.Shim(TreeAggregationArrangement.TreeAggregationArrangement(TreeAggregationArrangement.DebugParams))
5+
6+
module TreeAggregationShimProduction = OrderedShim.Shim(TreeAggregationArrangement.TreeAggregationArrangement(TreeAggregationArrangement.ProductionParams))
7+
58

69
let _ =
710
let _ = parse Sys.argv in
@@ -15,8 +18,15 @@ let _ =
1518
exit 2
1619
in
1720

18-
let open TreeAggregationShim in
19-
main { cluster = !cluster
20-
; me = !me
21-
; port = !port
22-
}
21+
if !debug then
22+
let open TreeAggregationShimDebug in
23+
main { cluster = !cluster
24+
; me = !me
25+
; port = !port
26+
}
27+
else
28+
let open TreeAggregationShimProduction in
29+
main { cluster = !cluster
30+
; me = !me
31+
; port = !port
32+
}

0 commit comments

Comments
 (0)