Class: OldGameSpyQuery::ServerData

Inherits:
Object
  • Object
show all
Defined in:
lib/old_gamespy_query/server_data.rb

Instance Method Summary collapse

Constructor Details

#initialize(address = "hostname:port") ⇒ ServerData

Returns a new instance of ServerData.



3
4
5
# File 'lib/old_gamespy_query/server_data.rb', line 3

def initialize(address = "hostname:port")
  @address = address
end

Instance Method Details

#dataObject



33
34
35
# File 'lib/old_gamespy_query/server_data.rb', line 33

def data
  @gamespy_query
end

#get_server_data(request = "status") ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/old_gamespy_query/server_data.rb', line 7

def get_server_data(request = "status")
  case request
  when 'status'
  when 'players'
  when 'rules'
  when 'info'
  else
    raise "#{self.class}: can't parse \\#{request}\\"
  end

  addr = @address.split(':')
  @socket = UDPSocket.new
  @socket.connect("#{addr[0]}", addr[1].to_i)
  begin
    timeout(5) {
      @socket.send("\\#{request}\\", 0)
      @data = @socket.recvfrom(4096)
    }
  rescue Timeout::Error
    raise Timeout::Error, "#{self.class}: The Server At '#{@address}' Did Not Respond In Time (Within 5 Seconds)"
  end

  @data[0].sub!("\\final\\", '')
  @gamespy_query = OldGameSpyQuery::Parser.new(@data, request).data
end