retry rcon connection indefinitely

This commit is contained in:
xenia 2021-10-03 21:55:25 -04:00
parent bcdab23a72
commit 140e8897b1
2 changed files with 8 additions and 4 deletions

View File

@ -1,7 +1,7 @@
[Unit]
Description=factorio-matrix bridge
Requires=factorio.service
After=factorio.service
#Requires=factorio.service
#After=factorio.service
[Service]
ExecStart=/opt/factorio-bridge/factorio_bridge.exe -config /opt/factorio-bridge/bridge.conf

View File

@ -168,9 +168,13 @@ let matrix_message_stream ~homeserver ~token ~(state : string option)
let rcon_writer ~(host : string) ~(port : int) ~(password : string) : string Pipe.Writer.t =
let reader_func pipe_reader =
let%bind (socket, reader, writer) =
Tcp.connect (Tcp.Where_to_connect.of_host_and_port {host; port;})
let rec retry_conn () =
try_with (fun () -> Tcp.connect (Tcp.Where_to_connect.of_host_and_port {host; port;}))
>>= function
| Ok x -> return x
| Error _ -> let%bind () = Clock.after (Time.Span.of_sec 10.) in retry_conn ()
in
let%bind (socket, reader, writer) = retry_conn () in
ignore socket;
let send_packet (id : int) (typ : int) (body : string) =
let body = String.concat [body; "\x00\x00"] in