Refactor TACNET Client a bit

This commit is contained in:
2023-01-30 16:16:02 -06:00
parent 94cd822b0c
commit 308575dc63
2 changed files with 43 additions and 44 deletions

View File

@@ -1,6 +1,6 @@
module TAC
class TACNET
DEFAULT_HOSTNAME = "192.168.49.1"
DEFAULT_HOSTNAME = "192.168.49.1".freeze
DEFAULT_PORT = 8962
SYNC_INTERVAL = 250 # ms
@@ -30,7 +30,7 @@ module TAC
end
def full_status
_status = status.to_s.split("_").map { |c| c.capitalize }.join(" ")
_status = status.to_s.split("_").map(&:capitalize).join(" ")
if connected?
net_stats = ""
@@ -42,7 +42,7 @@ module TAC
"<b>Status:</b> #{_status}\n\n#{net_stats}"
elsif @connection&.client && @connection.client.socket_error?
"<b>Status:</b> #{_status}\n\n#{@connection.client.last_socket_error.to_s}"
"<b>Status:</b> #{_status}\n\n#{@connection.client.last_socket_error}"
else
"<b>Status:</b> #{_status}"
end
@@ -53,10 +53,10 @@ module TAC
end
def close
if connected?
@connection.close
@connection = nil
end
return unless connected?
@connection.close
@connection = nil
end
def client
@@ -75,4 +75,4 @@ module TAC
Process.clock_gettime(Process::CLOCK_MONOTONIC, :millisecond)
end
end
end
end

View File

@@ -8,7 +8,9 @@ module TAC
attr_reader :uuid, :read_queue, :write_queue, :socket,
:packets_sent, :packets_received,
:data_sent, :data_received
attr_accessor :sync_interval, :last_socket_error, :socket_error
def initialize
@uuid = SecureRandom.uuid
@read_queue = []
@@ -20,8 +22,11 @@ module TAC
@socket_error = false
@bound = false
@packets_sent, @packets_received = 0, 0
@data_sent, @data_received = 0, 0
@packets_sent = 0
@packets_received = 0
@data_sent = 0
@data_received = 0
end
def uuid=(id)
@@ -39,17 +44,15 @@ module TAC
Thread.new do
while connected?
# Read from socket
while message_in = read
if message_in.empty?
break
else
log.i(TAG, "Read: " + message_in)
while (message_in = read)
break if message_in.empty?
@read_queue << message_in
log.i(TAG, "Read: #{message_in}")
@packets_received += 1
@data_received += message_in.length
end
@read_queue << message_in
@packets_received += 1
@data_received += message_in.length
end
sleep @sync_interval / 1000.0
@@ -59,12 +62,12 @@ module TAC
Thread.new do
while connected?
# Write to socket
while message_out = @write_queue.shift
while (message_out = @write_queue.shift)
write(message_out)
@packets_sent += 1
@data_sent += message_out.to_s.length
log.i(TAG, "Write: " + message_out.to_s)
log.i(TAG, "Write: #{message_out}")
end
sleep @sync_interval / 1000.0
@@ -82,7 +85,7 @@ module TAC
while message
puts(message)
log.i(TAG, "Writing to Queue: " + message)
log.i(TAG, "Writing to Queue: #{message}")
message = gets
end
@@ -101,34 +104,29 @@ module TAC
end
def closed?
@socket.closed? if @socket
@socket&.closed?
end
def write(message)
begin
@socket.puts("#{message}#{PACKET_TAIL}")
rescue => error
@last_socket_error = error
@socket_error = true
@socket.puts("#{message}#{PACKET_TAIL}") if connected?
rescue => error
@last_socket_error = error
@socket_error = true
log.e(TAG, error.message)
log.e(TAG, error.message)
close
end
close
end
def read
begin
@socket.gets&.strip
@socket&.gets&.strip if connected?
rescue => error
@last_socket_error = error
@socket_error = true
rescue => error
@last_socket_error = error
@socket_error = true
log.e(TAG, error.message)
log.e(TAG, error.message)
""
end
close
end
def puts(message)
@@ -140,11 +138,11 @@ module TAC
end
def encode(message)
return message
message
end
def decode(blob)
return blob
blob
end
def flush
@@ -153,8 +151,9 @@ module TAC
def close(reason = nil)
write(reason) if reason
@socket.close if @socket
@socket&.close
end
end
end
end
end