MNET: wip devices

This commit is contained in:
swrup 2026-03-12 12:08:21 +01:00
parent 832098dd58
commit 7ed875cd5e
6 changed files with 162 additions and 79 deletions

View file

@ -64,13 +64,75 @@ let routes =
in
tos @ status_info @ management
let () =
Util.Log_reporter.setup ();
let cfg =
let port = Config.Exchange.port in
let sockaddr = Unix.(ADDR_INET (inet_addr_loopback, port)) in
Vif.config ~reporter:Util.Log_reporter.reporter sockaddr
let caqti_get_ok = function
| Error e -> Fmt.failwith "%a" Caqti_error.pp e
| Ok v -> v
let test (module Conn : Caqti_miou.CONNECTION) =
let minus_req =
let open Caqti_request.Infix in
let open Caqti_type in
(t2 int int ->! int) "SELECT ? - ?"
in
let a = 22 in
let b = 17 in
let c = Conn.find minus_req (22, 17) |> caqti_get_ok in
assert (a - b = c);
Logs.app (fun f -> f "%d - %d = %d" a b c);
()
let disconnect (module Conn : Caqti_miou.CONNECTION) = Conn.disconnect ()
module RNG = Mirage_crypto_rng.Fortuna
let () =
let ( let@ ) finally fn = Fun.protect ~finally fn in
Util.Log_reporter.setup ();
let rng =
let rng () = Mirage_crypto_rng_mkernel.initialize (module RNG) in
Mkernel.map rng Mkernel.[]
in
let storage = Mkernel.storage ~name:"storage" in
let service =
let ipv4 = Ipaddr.V4.Prefix.of_string_exn "10.0.0.2/24" in
Mnet.stack ~name:"service" ipv4
in
Mkernel.(run [ rng; storage; service ])
@@ fun rng storage (stack, tcp, udp) () ->
let@ () = fun () -> Mirage_crypto_rng_mkernel.kill rng in
let@ () = fun () -> Mnet.kill stack in
(* -- setup db connection -- *)
let hed, he = Mnet_happy_eyeballs.create tcp in
let@ () = fun () -> Mnet_happy_eyeballs.kill hed in
let dns = Mnet_dns.create (udp_db, he) in
let t = Mnet_dns.transport dns in
let@ () = fun () -> Mnet_dns.Transport.kill t in
Caqti_miou.Switch.run @@ fun sw ->
Logs.app (fun m -> m "Connecting to the database");
let db_connection =
let config = Caqti_connect_config.default in
let r = Caqti_mnet.connect ~config ~sw stack tcp dns db_uri in
caqti_get_ok r
in
let@ () = fun () -> disconnect db_connection in
Logs.app (fun m -> m "Connected");
test db_connection;
Logs.app (fun m -> m "Test OK");
(* -- *)
(* -- start webserver -- *)
let devices = [
]
in
let cfg = Vifu.Config.v Config.Exchange.port in
let db_device = Devices.db_connection sw in
let keys_device = Devices.keys storage (Vifu.Device.value db_device) in
let devices = Vifu.Devices.[ db_device; keys_device] in
Vifu.run ~cfg ~devices tcp routes ()
(*
Miou_unix.run @@ fun () ->
Caqti_miou.Switch.run @@ fun caqti_switch ->
let env : Devices.env =
@ -81,3 +143,4 @@ let () =
Logs.info (fun m ->
m ~tags:(Util.Log_reporter.detail "...") "Starting MTE server");
Vif.run ~cfg ~devices ~middlewares routes env
*)