Class: MasterServer

Inherits:
Object
  • Object
show all
Defined in:
lib/steam/servers/master_server.rb

Constant Summary collapse

GOLDSRC_MASTER_SERVER =
'hl1master.steampowered.com', 27010
SOURCE_MASTER_SERVER =
'hl2master.steampowered.com', 27011
REGION_US_EAST_COAST =
0x00
REGION_US_WEST_COAST =
0x01
REGION_SOUTH_AMERICA =
0x02
REGION_EUROPE =
0x03
REGION_ASIA =
0x04
REGION_AUSTRALIA =
0x05
REGION_MIDDLE_EAST =
0x06
REGION_AFRICA =
0x07
REGION_ALL =
0xFF

Instance Method Summary collapse

Constructor Details

#initialize(master_server_address, master_server_port) ⇒ MasterServer



24
25
26
27
# File 'lib/steam/servers/master_server.rb', line 24

def initialize(master_server_address, master_server_port)
  @socket = MasterServerSocket.new master_server_address, master_server_port
  @server_array = []
end

Instance Method Details

#servers(region_code = MasterServer::REGION_ALL, filters = '') ⇒ Object



29
30
31
32
# File 'lib/steam/servers/master_server.rb', line 29

def servers(region_code = MasterServer::REGION_ALL, filters = '')
  update_servers region_code, filters if @server_array.empty?
  @server_array
end

#update_servers(region_code, filters) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/steam/servers/master_server.rb', line 34

def update_servers(region_code, filters)
  fail_count     = 0
  finished       = false
  current_server = '0.0.0.0:0'

  begin
    @socket.send A2M_GET_SERVERS_BATCH2_Packet.new(region_code, current_server, filters)
    begin
      servers = @socket.reply.servers
      servers.each do |server|
        if server == '0.0.0.0:0'
          finished = true
        else
          current_server = server
          @server_array << server.split(':')
        end
      end
      fail_count = 0
    rescue TimeoutException
      raise $! if (fail_count += 1) == 3
    end
  end while !finished
end