--- /dev/null
+open Khatus
+
+let main ~stream ~interval ~dir =
+ let dumped = Time.init in
+ ignore (Msg_stream.fold stream ~init:dumped ~f:(
+ fun dumped ~state:(State.({node; modul; time = now; cache;})) ~msg:_ ->
+ let elapsed = Time.diff dumped now in
+ if (Time.Span.is_gt_or_eq elapsed interval)
+ then begin
+ Cache.dump_to_dir cache ~time:now ~node ~modul ~dir;
+ now
+ end else
+ dumped
+ ))
+
+let () =
+ let modul = __MODULE__ in
+ let node = Sys.argv.(1) in
+ let dump_interval = Sys.argv.(2) |> Time.Span.of_string in
+ let dump_directory = Sys.argv.(3) in
+ main
+ ~stream: (Msg_stream.init ~node ~modul)
+ ~interval: dump_interval
+ ~dir: dump_directory