class Zrcon

Constants

ConnectError
VERSION

Attributes

host[RW]
password[RW]
port[RW]

Public Class Methods

new(host: ENV['RCON_HOST'], port: ENV['RCON_PORT'], password: ENV['RCON_PASSWORD']) click to toggle source
# File lib/zrcon.rb, line 11
def initialize(host: ENV['RCON_HOST'], port: ENV['RCON_PORT'], password: ENV['RCON_PASSWORD'])
  @host = host.to_s
  @port = port.to_i
  @password = password.to_s
end

Public Instance Methods

auth() click to toggle source
# File lib/zrcon.rb, line 17
def auth
  request = Packet.auth password
  send request
  response = receive

  response.type == 2 && request.id == response.id
end
command(cmd) click to toggle source
# File lib/zrcon.rb, line 25
def command(cmd)
  request = Packet.command cmd
  send request
  response = receive
  response.data
end
conn() click to toggle source
# File lib/zrcon.rb, line 32
def conn
  @conn ||= TCPSocket.new host, port
rescue SocketError
  raise ConnectError, "bad hostname perhaps? (#{host})"
rescue Errno::ETIMEDOUT
  raise ConnectError, "timed out connecting to #{host}:#{port}"
rescue Errno::ECONNREFUSED
  raise ConnectError, "connection refused"
end
next_id() click to toggle source
# File lib/zrcon.rb, line 42
def next_id
  @id ||= 0
  @id += 1
end
read_int() click to toggle source
# File lib/zrcon.rb, line 56
def read_int
  conn.read(4).to_s.unpack("l<").first
end
receive() click to toggle source
# File lib/zrcon.rb, line 51
def receive
  length = read_int
  Packet.decode conn.read(length)
end
send(packet) click to toggle source
# File lib/zrcon.rb, line 47
def send(packet)
  conn.write packet.encode
end