X-Git-Url: https://git.xandkar.net/?a=blobdiff_plain;ds=inline;f=v3%2Fsrc%2Fexe%2Fkhatus_cache_dumper.ml;fp=v3%2Fsrc%2Fexe%2Fkhatus_cache_dumper.ml;h=1ae1e84d832133ebda0cbfb6fecf7252e9d663c3;hb=53d24ad688ea39892dbf3c748c1e40514eeb2763;hp=0000000000000000000000000000000000000000;hpb=0c4f892ec9d0cd7dc87c83c01b52259d0aed1ae3;p=khatus.git diff --git a/v3/src/exe/khatus_cache_dumper.ml b/v3/src/exe/khatus_cache_dumper.ml new file mode 100644 index 0000000..1ae1e84 --- /dev/null +++ b/v3/src/exe/khatus_cache_dumper.ml @@ -0,0 +1,24 @@ +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