Module: Gts::Server

Defined in:
lib/gts/server.rb

Overview

TCP server

Defined Under Namespace

Classes: CantDetermineIMEI, DontKnowHowToHandleThisDevice, GtsError

Constant Summary collapse

@@tracker_requests_count =
0
@@started_at =
nil

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.list_known_devicesObject



74
75
76
# File 'lib/gts/server.rb', line 74

def self.list_known_devices
  @@imei_handlers.map{ |k,v| "#{k}: #{v}" }.join "\n"
end

.loggerObject



20
21
22
# File 'lib/gts/server.rb', line 20

def self.logger
  Gts.logger
end

.start!(opts = {}) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/gts/server.rb', line 47

def self.start!(opts={})
  @@address = opts[:address]
  @@port = opts[:port]
  @@output_file = opts[:output_file]
  @@started_at ||= Time.now
  EventMachine::run {
    EventMachine::start_server @@address, @@port, self
    puts "Server started. Press Ctrl+C to stop."
    puts "Hunting for data..."
  }
  self
end

.stop!Object



60
61
62
63
# File 'lib/gts/server.rb', line 60

def self.stop!
  EventMachine::stop
  puts "Bye!"
end

.uptimeObject



65
66
67
68
69
70
71
72
# File 'lib/gts/server.rb', line 65

def self.uptime
  sum =  Time.now - @@started_at
  days = (sum / (3600 * 24)).to_i
  hours = (sum / 3600 - (days * (3600 * 24))).to_i
  minutes = (sum / 60 - hours * 60).to_i
  seconds = (sum % 60).to_i
  "#{days}d #{hours}h #{minutes}m #{seconds}s"
end

Instance Method Details

#initializeObject



28
29
30
31
32
33
# File 'lib/gts/server.rb', line 28

def initialize
  @@imei_handlers ||= DEFAULT_IMEI_HANDLERS
  @@imei_handlers_source ||= DEFAULT_IMEI_HANDLER_SOURCE
  @@device_handlers = Gts.registered_handlers
  load_imei_handlers!
end

#loggerObject



16
17
18
# File 'lib/gts/server.rb', line 16

def logger
  Gts.logger
end

#post_initObject



35
36
37
# File 'lib/gts/server.rb', line 35

def post_init
  logger.info "New connection from #{client_ip_address}"
end

#receive_data(data) ⇒ Object



39
40
41
42
43
44
45
# File 'lib/gts/server.rb', line 39

def receive_data data
  if data =~ /^%/
    handle_command(data.gsub(/^%\s*?/, ''))
  else
    handle_tracker_data(data)
  end
end