Added socket error storage to client, TACNET UI now semi-functional

This commit is contained in:
2020-06-08 11:42:13 -05:00
parent f7a3e282f1
commit ef0174fb06
6 changed files with 143 additions and 43 deletions

View File

@@ -7,7 +7,7 @@ module TAC
attr_reader :uuid, :read_queue, :write_queue, :socket,
:packets_sent, :packets_received,
:data_sent, :data_received
attr_accessor :sync_interval
attr_accessor :sync_interval, :last_socket_error, :socket_error
def initialize
@uuid = SecureRandom.uuid
@read_queue = []
@@ -15,6 +15,10 @@ module TAC
@sync_interval = 100
@last_socket_error = nil
@socket_error = false
@bound = false
@packets_sent, @packets_received = 0, 0
@data_sent, @data_received = 0, 0
end
@@ -25,6 +29,7 @@ module TAC
def socket=(socket)
@socket = socket
@bound = true
listen
end
@@ -82,12 +87,16 @@ module TAC
end
end
def connected?
!closed?
def socket_error?
@socket_error
end
def bound?
@socket.bound? if @socket
def connected?
if closed? == true || closed? == nil
false
else
true
end
end
def closed?
@@ -97,7 +106,9 @@ module TAC
def write(message)
begin
@socket.puts("#{message}\r\n\n")
rescue Errno::EPIPE, IOError => error
rescue => error
@last_socket_error = error
@socket_error = true
log.e(TAG, error.message)
close
end
@@ -109,7 +120,10 @@ module TAC
begin
data = @socket.readpartial(CHUNK_SIZE)
message += data
rescue Errno::EPIPE, EOFError
rescue => error
@last_socket_error = error
@socket_error = true
message = ""
break
end until message.end_with?("\r\n\n")

View File

@@ -7,6 +7,8 @@ module TAC
@hostname = hostname
@port = port
@client = nil
@last_sync_time = 0
@sync_interval = SYNC_INTERVAL
@@ -20,7 +22,7 @@ module TAC
@packet_handler = PacketHandler.new(host_is_a_connection: true)
end
def connect(error_callback)
def connect
return if @client
@client = Client.new
@@ -39,8 +41,13 @@ module TAC
end
rescue => error
p error
error_callback.call(error)
log.e(TAG, error)
if @client
@client.close
@client.last_socket_error = error
@client.socket_error = true
end
end
end
end
@@ -68,12 +75,16 @@ module TAC
end
def connected?
!closed?
@client.connected? if @client
end
def closed?
@client.closed? if @client
end
def close
@client.close if @client
end
end
end
end

View File

@@ -35,7 +35,7 @@ module TAC
begin
log.i(TAG, "Starting server...")
@socket = TCPServer.new(@port)
rescue => error
rescue IOError => error
log.e(TAG, error)
@connection_attempts += 1
@@ -46,8 +46,8 @@ module TAC
while @socket && !@socket.closed?
begin
run_server
rescue => error
p error
rescue IOError => error
log.e(TAG, error)
@socket.close if @socket
end
end