aboutsummaryrefslogblamecommitdiffstats
path: root/lib/system.ml
blob: 18486820f135fda57f67ec195fb3a79ce2fb455a (plain) (tree)
1
2
3
4
5
6
7
                     
 



                                                                             
    







                                                                                                   
                 
open Utilities.Result

let assemble config =
  let* storage =
    Configuration.find_section "storage" config
    |> Option.to_result ~none:(Configuration.Error.missing_section "storage")
  in
  let* _, transport = Configuration.require_section ~name:"transport" ~valid_tags:["tcp"] config in
  let* transport = Transport.TCP.parse transport in
  let* kernel = RNT.initialize storage in
  let module L = Listener.Make (Transport.TCP) in
  Ok (fun () -> L.run kernel (Transport.TCP.create transport))

let run_from_config path =
  let* config = Configuration.load ~expected_keys:["storage"; "transport"] path in
  assemble config