From 308575dc63eca8b2e02caf72c22ffcdd30b14744 Mon Sep 17 00:00:00 2001 From: cyberarm Date: Mon, 30 Jan 2023 16:16:02 -0600 Subject: [PATCH] Refactor TACNET Client a bit --- lib/tacnet.rb | 16 +++++----- lib/tacnet/client.rb | 71 ++++++++++++++++++++++---------------------- 2 files changed, 43 insertions(+), 44 deletions(-) diff --git a/lib/tacnet.rb b/lib/tacnet.rb index c14d210..1cf4817 100644 --- a/lib/tacnet.rb +++ b/lib/tacnet.rb @@ -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 "Status: #{_status}\n\n#{net_stats}" elsif @connection&.client && @connection.client.socket_error? - "Status: #{_status}\n\n#{@connection.client.last_socket_error.to_s}" + "Status: #{_status}\n\n#{@connection.client.last_socket_error}" else "Status: #{_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 \ No newline at end of file +end diff --git a/lib/tacnet/client.rb b/lib/tacnet/client.rb index 9457f44..02cb4aa 100644 --- a/lib/tacnet/client.rb +++ b/lib/tacnet/client.rb @@ -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 \ No newline at end of file +end