34 lines
624 B
Go
34 lines
624 B
Go
package beamng
|
|
|
|
import (
|
|
"log/slog"
|
|
"net"
|
|
"time"
|
|
)
|
|
|
|
func IsRunning() bool {
|
|
// TODO: The address should be loaded from some type of configuration
|
|
addr, err := net.ResolveUDPAddr("udp", "127.0.0.1:4444")
|
|
if err != nil {
|
|
return false
|
|
}
|
|
|
|
conn, err := net.ListenUDP("udp", addr)
|
|
defer conn.Close()
|
|
if err != nil {
|
|
slog.Debug("failed to listen to udp socket: " + err.Error())
|
|
return false
|
|
}
|
|
|
|
buf := make([]byte, 512)
|
|
conn.SetReadDeadline(time.Now().Add(50 * time.Millisecond))
|
|
|
|
n, _, err := conn.ReadFromUDP(buf)
|
|
if err != nil {
|
|
return false
|
|
}
|
|
|
|
// Think of a better number or something
|
|
return n >= 80
|
|
}
|