module NTP::Server::Handler
Public Class Methods
gap()
click to toggle source
# File lib/ntp/server/handler.rb, line 56 def self.gap @@gap end
gap=(gap)
click to toggle source
# File lib/ntp/server/handler.rb, line 52 def self.gap= gap @@gap = gap end
origin_time()
click to toggle source
# File lib/ntp/server/handler.rb, line 48 def self.origin_time @@origin_time end
origin_time=(origin_time)
click to toggle source
# File lib/ntp/server/handler.rb, line 44 def self.origin_time= origin_time @@origin_time = origin_time end
reader()
click to toggle source
# File lib/ntp/server/handler.rb, line 36 def self.reader @@reader end
reader=(reader)
click to toggle source
# File lib/ntp/server/handler.rb, line 40 def self.reader= reader @@reader = reader end
update_gap()
click to toggle source
# File lib/ntp/server/handler.rb, line 60 def self.update_gap self.reader.sync self.gap = self.reader.read_nonblock(1024).to_f rescue IO::EAGAINWaitReadable retry end
Private Class Methods
included(klass)
click to toggle source
# File lib/ntp/server/handler.rb, line 69 def self.included klass Signal.trap("USR1") do update_gap end end
Public Instance Methods
handler()
click to toggle source
# File lib/ntp/server/handler.rb, line 32 def handler NTP::Server::Handler end
make_response(request, receive_time)
click to toggle source
# File lib/ntp/server/handler.rb, line 2 def make_response request, receive_time time = ::Time.now + self.handler.gap response = NTP::Response.new response.leap_indicator = 'no warning' response.version_number = request.version_number response.mode = 'reserved for private use' response.stratum = 'non-synchronized' response.poll_interval = 6 response.precision = 0 response.root_delay = request.timestamp.time - receive_time response.root_dispersion = NTP::Time.new(0) response.reference_clock_identifier = '127.0.0.1' response.reference_timestamp = time response.originate_timestamp = self.handler.origin_time response.receive_timestamp = receive_time + self.handler.gap response.transmit_timestamp = time # Kernel.puts response.inspect response end
receive_data(data)
click to toggle source
# File lib/ntp/server/handler.rb, line 22 def receive_data data receive_time = ::Time.now request = NTP::Request.parse( data ) response = make_response( request, receive_time ) response.send do |data| # Kernel.puts data.unpack("C*").map{|x| sprintf "%.2x", x}.join send_data( data ) end end