class ADSB::Database

Attributes

icon_url[RW]

Public Class Methods

new(name = "ADSB") click to toggle source
# File lib/adsb2kml/database.rb, line 8
def initialize name = "ADSB"
        @name = name
        @airplanes = {}
        @icon_url = "/plane_icon.png"
end

Public Instance Methods

expire_after(time = 120) click to toggle source
# File lib/adsb2kml/database.rb, line 56
def expire_after time = 120
        @time_expire = time
        spawn_thread :watch_expire
end
to_cons() click to toggle source
# File lib/adsb2kml/database.rb, line 44
def to_cons
        to_return = sprintf $STRING_FORMAT, "Address", "Latitude", "Longitude", "Altitude", "Speed", "Last Heard", "Time Diff", "Track"

        @airplanes.each do |address, air|
                to_return += air.to_cons
        end
        
        return to_return

end
to_kml() click to toggle source
# File lib/adsb2kml/database.rb, line 30
def to_kml
        kml = KMLFile.new
        folder = KML::Folder.new( :name => @name )
        
        @airplanes.each do |address, airplane|
                folder.features << airplane.icon(@icon_url)
                folder.features << airplane.placemark
        end

        kml.objects << folder

        return kml
end
update(airplane) click to toggle source
# File lib/adsb2kml/database.rb, line 15
def update airplane
        if ( @airplanes.has_key? airplane.address ) then
                @airplanes[airplane.address].merge_with airplane
        else
                @airplanes[airplane.address] = airplane
        end
end
update_t(airplane) click to toggle source
# File lib/adsb2kml/database.rb, line 23
def update_t airplane
        Thread.new do
                update airplane
        end
end

Private Instance Methods

spawn_thread(sym) click to toggle source
# File lib/adsb2kml/database.rb, line 62
def spawn_thread sym
        Thread.new do
                loop do
                        send sym
                end
        end
end
watch_expire() click to toggle source
# File lib/adsb2kml/database.rb, line 70
def watch_expire
        expired = []
        @airplanes.each do |addr, air|
                if air.time_diff >= @time_expire then
                        expired.push addr
                end
        end

        expired.each do |exp|
                @airplanes.delete exp
        end

        sleep 10
end