pellest/src/pellest.ml

39 lines
1.2 KiB
OCaml

let regularly_call_fun f v =
let () = Sys.set_signal Sys.sigalrm (Sys.Signal_handle (fun _ -> f ())) in
let (_ : Unix.interval_timer_status) =
Unix.setitimer Unix.ITIMER_REAL { Unix.it_interval = v; Unix.it_value = v }
in
()
let update_offline_user_state () =
(* TODO *)
()
let update_online_user_state () =
Hashtbl.filter_map_inplace
(fun _user_id state -> Some (Shared.State.auto_update state))
User.state_ht
let () =
regularly_call_fun update_online_user_state
(float_of_int Shared.State.auto_state_update_rate);
regularly_call_fun update_offline_user_state
(float_of_int Shared.State.auto_state_update_rate)
let () =
let logger = if App.log then Dream.logger else Fun.id in
Dream.run ~port:App.port @@ logger @@ Dream.memory_sessions
@@ Dream.router
Dream.
[ get "/assets/**" Asset.get
; get "/" Home.get
; get "/island" Island.get
; get "/island/ws" (fun request ->
Dream.websocket @@ Ws.handle_client request )
; get "/login" Login.get
; post "/login" Login.post
; get "logout" Logout.get
; get "/register" Register.get
; post "/register" Register.post
]