mirror of
https://github.com/TimeCrafters/timecrafters_configuration_tool_desktop.git
synced 2025-12-15 21:32:35 +00:00
78 lines
2.0 KiB
Ruby
78 lines
2.0 KiB
Ruby
module TAC
|
|
class TACNET
|
|
DEFAULT_HOSTNAME = "192.168.49.1"
|
|
DEFAULT_PORT = 8962
|
|
|
|
SYNC_INTERVAL = 250 # ms
|
|
HEARTBEAT_INTERVAL = 1_500 # ms
|
|
|
|
def initialize
|
|
@connection = nil
|
|
end
|
|
|
|
def connect(hostname = DEFAULT_HOSTNAME, port = DEFAULT_PORT)
|
|
return if @connection && @connection.connected?
|
|
|
|
@connection = Connection.new(hostname, port)
|
|
@connection.connect
|
|
end
|
|
|
|
def status
|
|
if connected?
|
|
:connected
|
|
elsif @connection && !@connection.client.socket_error?
|
|
:connecting
|
|
elsif @connection && @connection.client.socket_error?
|
|
:connection_error
|
|
else
|
|
:not_connected
|
|
end
|
|
end
|
|
|
|
def full_status
|
|
_status = status.to_s.split("_").map { |c| c.capitalize }.join(" ")
|
|
|
|
if connected?
|
|
net_stats = ""
|
|
net_stats += "<b>Connection Statistics:</b>\n"
|
|
net_stats += "<b>Packets Sent:</b> #{client.packets_sent}\n"
|
|
net_stats += "<b>Packets Received:</b> #{client.packets_received}\n\n"
|
|
net_stats += "<b>Data Sent:</b> #{client.data_sent} bytes\n"
|
|
net_stats += "<b>Data Received:</b> #{client.data_received} bytes\n"
|
|
|
|
"<b>Status:</b> #{_status}\n\n#{net_stats}"
|
|
elsif @connection && @connection.client && @connection.client.socket_error?
|
|
"<b>Status:</b> #{_status}\n\n#{@connection.client.last_socket_error.to_s.chars.each_slice(32).to_a.map { |c| c.join }.join("\n")}"
|
|
else
|
|
"<b>Status:</b> #{_status}"
|
|
end
|
|
end
|
|
|
|
def connected?
|
|
@connection && @connection.connected?
|
|
end
|
|
|
|
def close
|
|
if connected?
|
|
@connection.close
|
|
@connection = nil
|
|
end
|
|
end
|
|
|
|
def client
|
|
@connection.client if connected?
|
|
end
|
|
|
|
def puts(packet)
|
|
@connection.puts(packet) if connected?
|
|
end
|
|
|
|
def gets
|
|
@connection.gets if connected?
|
|
end
|
|
|
|
def self.milliseconds
|
|
Process.clock_gettime(Process::CLOCK_MONOTONIC, :millisecond)
|
|
end
|
|
end
|
|
end |