2023-01-07 23:15:03 +01:00
|
|
|
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
|
2023-01-08 04:10:15 +01:00
|
|
|
(Shared.Time.s_to_float Shared.State.auto_update_rate);
|
2023-01-07 23:15:03 +01:00
|
|
|
regularly_call_fun update_offline_user_state
|
2023-01-08 04:10:15 +01:00
|
|
|
(Shared.Time.s_to_float Shared.State.auto_update_rate)
|
2023-01-07 23:15:03 +01:00
|
|
|
|
2022-12-04 22:42:55 +01:00
|
|
|
let () =
|
|
|
|
|
let logger = if App.log then Dream.logger else Fun.id in
|
2022-12-06 01:00:39 +01:00
|
|
|
Dream.run ~port:App.port @@ logger @@ Dream.memory_sessions
|
2022-12-04 22:42:55 +01:00
|
|
|
@@ Dream.router
|
|
|
|
|
Dream.
|
2022-12-06 00:12:14 +01:00
|
|
|
[ get "/assets/**" Asset.get
|
|
|
|
|
; get "/" Home.get
|
2022-12-06 02:31:33 +01:00
|
|
|
; get "/island" Island.get
|
2022-12-11 18:58:56 +01:00
|
|
|
; get "/island/ws" (fun request ->
|
|
|
|
|
Dream.websocket @@ Ws.handle_client request )
|
2022-12-06 00:12:14 +01:00
|
|
|
; get "/login" Login.get
|
|
|
|
|
; post "/login" Login.post
|
2022-12-06 01:00:39 +01:00
|
|
|
; get "logout" Logout.get
|
2022-12-06 00:12:14 +01:00
|
|
|
; get "/register" Register.get
|
|
|
|
|
; post "/register" Register.post
|
2022-12-04 22:42:55 +01:00
|
|
|
]
|