Class: Q3Servers::ServerConnection

Inherits:
Object
  • Object
show all
Defined in:
lib/q3_servers/server_connection.rb

Constant Summary collapse

MAX_LENGTH =
65_536

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(ip, port, timeout = 1) ⇒ ServerConnection

Returns a new instance of ServerConnection.



10
11
12
13
14
15
# File 'lib/q3_servers/server_connection.rb', line 10

def initialize(ip, port, timeout = 1)
  @ip = ip
  @port = port
  @timeout = timeout
  @url_maps = 'https://www.urbanterror.info/files/static/images/levels/wide/'
end

Instance Attribute Details

#ipObject

Returns the value of attribute ip.



6
7
8
# File 'lib/q3_servers/server_connection.rb', line 6

def ip
  @ip
end

#portObject

Returns the value of attribute port.



6
7
8
# File 'lib/q3_servers/server_connection.rb', line 6

def port
  @port
end

#socketObject

Returns the value of attribute socket.



6
7
8
# File 'lib/q3_servers/server_connection.rb', line 6

def socket
  @socket
end

#timeoutObject

Returns the value of attribute timeout.



6
7
8
# File 'lib/q3_servers/server_connection.rb', line 6

def timeout
  @timeout
end

#url_mapsObject

Returns the value of attribute url_maps.



6
7
8
# File 'lib/q3_servers/server_connection.rb', line 6

def url_maps
  @url_maps
end

Instance Method Details

#connectObject



30
31
32
33
34
35
# File 'lib/q3_servers/server_connection.rb', line 30

def connect
  @socket&.close
  @socket = UDPSocket.new
  @socket.connect(ip, port)
  @socket
end

#read_info_serverObject

INFO 1/2



43
44
45
46
# File 'lib/q3_servers/server_connection.rb', line 43

def read_info_server
  sv_info = read_data
  sv_info ? parse_sv_info(sv_info) : {} # parse step 1 info
end

#read_status_serverObject

INFO 2/2



61
62
63
64
# File 'lib/q3_servers/server_connection.rb', line 61

def read_status_server
  sv_status = read_data
  sv_status ? parse_sv_status(sv_status) : {} # parse step 2
end

#request_and_get_server_statusObject

INFO 2/2



49
50
51
52
53
54
# File 'lib/q3_servers/server_connection.rb', line 49

def request_and_get_server_status
  # sv_status = send_and_read(prepend_oob_data + 'getstatus')
  # sv_status ? parse_sv_status(sv_status) : {} # parse step 2
  request_status_server
  read_status_server
end

#request_info_serverObject



37
38
39
40
# File 'lib/q3_servers/server_connection.rb', line 37

def request_info_server
  connect
  send_data("#{prepend_oob_data}getinfo xxx") # request step 1
end

#request_status_serverObject



56
57
58
# File 'lib/q3_servers/server_connection.rb', line 56

def request_status_server
  send_data("#{prepend_oob_data}getstatus") # request step 2
end

#server_info_connectObject



25
26
27
28
# File 'lib/q3_servers/server_connection.rb', line 25

def server_info_connect
  request_info_server
  read_info_server
end

#to_sObject



17
18
19
# File 'lib/q3_servers/server_connection.rb', line 17

def to_s
  "#{ip}:#{port}"
end

#unique_indexObject



21
22
23
# File 'lib/q3_servers/server_connection.rb', line 21

def unique_index
  Digest::MD5.hexdigest("#{ip}:#{port}")
end