radiobert: optimize sbs2json
This commit is contained in:
parent
056cedc107
commit
a85dc629d5
|
@ -5,6 +5,7 @@ require 'webrick'
|
|||
require 'json'
|
||||
|
||||
TIMEOUT = 60
|
||||
last_purge = Time.now.to_i
|
||||
data = {}
|
||||
|
||||
Thread.new do
|
||||
|
@ -21,17 +22,18 @@ sock = TCPSocket.new "radiobert.serv.zentralwerk.org", 30003
|
|||
while line = sock.gets
|
||||
begin
|
||||
fields = line.chomp.split(/,/)
|
||||
msg_type = fields[1].to_i
|
||||
msg_type = fields[1]
|
||||
hex = fields[4].downcase
|
||||
values = {
|
||||
:hex => fields[4].downcase,
|
||||
:hex => hex,
|
||||
:last => Time.now.to_i
|
||||
}
|
||||
|
||||
case msg_type
|
||||
when 1
|
||||
when "1"
|
||||
values[:flight] = fields[10]
|
||||
|
||||
when 3
|
||||
when "3"
|
||||
unless fields[14].empty? or fields[15].empty?
|
||||
values[:lat] = fields[14].to_f
|
||||
values[:lon] = fields[15].to_f
|
||||
|
@ -40,7 +42,7 @@ while line = sock.gets
|
|||
values[:altitude] = fields[11].to_i
|
||||
end
|
||||
|
||||
when 4
|
||||
when "4"
|
||||
unless fields[12].empty?
|
||||
values[:speed] = fields[12].to_i
|
||||
end
|
||||
|
@ -49,16 +51,20 @@ while line = sock.gets
|
|||
end
|
||||
end
|
||||
|
||||
old_value = data[values[:hex]]
|
||||
old_value = data[hex]
|
||||
if old_value
|
||||
old_value.merge! values
|
||||
else
|
||||
data[values[:hex]] = values
|
||||
data[hex] = values
|
||||
end
|
||||
|
||||
data.delete_if { |hex, values|
|
||||
Time.now.to_i >= values[:last] + TIMEOUT
|
||||
}
|
||||
now = Time.now.to_i
|
||||
if now >= last_purge + TIMEOUT / 10
|
||||
data.delete_if { |hex, values|
|
||||
now >= values[:last] + TIMEOUT
|
||||
}
|
||||
last_purge = now
|
||||
end
|
||||
|
||||
rescue
|
||||
STDERR.puts $!
|
||||
|
|
Loading…
Reference in New Issue