+++ /dev/null
-module Cache = Khatus_cache
-module Msg = Khatus_msg
-module Time = Khatus_time
-
-type t =
- { node : string
- ; modul : string
- ; time : Time.t
- ; cache : Cache.t
- }
-
-let init ~node ~modul =
- { node
- ; modul
- ; time = Time.init
- ; cache = Cache.create ()
- }
-
-(* TODO: Should probably wrap state update in result. *)
-let update ({node; modul = _; time; cache} as t) ~msg =
- Msg.handle_data msg ~otherwise:t ~f:(fun ~node:src_node ~modul ~key ~value ->
- let time =
- match (modul, key) with
- | ("khatus_sensor_datetime", ["epoch"]) when src_node = node ->
- Time.of_string value (* Raises if value is not a number *)
- | (_, _) ->
- time
- in
- Cache.update cache ~node:src_node ~modul ~key ~value ~time;
- {t with time}
- )