Class: RCONSocket

Inherits:
Object
  • Object
show all
Includes:
SteamSocket
Defined in:
lib/steam/sockets/rcon_socket.rb

Instance Method Summary collapse

Methods included from SteamSocket

#finalize, #receive_packet, timeout=

Constructor Details

#initialize(ip_address, port_number) ⇒ RCONSocket

Returns a new instance of RCONSocket.



16
17
18
19
# File 'lib/steam/sockets/rcon_socket.rb', line 16

def initialize(ip_address, port_number)
  super ip_address, port_number
  @channel = SocketChannel.open
end

Instance Method Details

#replyObject

Raises:



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/steam/sockets/rcon_socket.rb', line 28

def reply
  raise RCONBanException if receive_packet(1440) == 0

  packet_data = @buffer.get
  @buffer.rewind
  packet_size = @buffer.long + 4

  if packet_size > 1440
    remaining_bytes = packet_size - @buffer.size
    begin
      if remaining_bytes < 1440
        receive_packet remaining_bytes
      else
        receive_packet 1440
      end
      packet_data << @buffer.get
      remaining_bytes -= @buffer.size
    end while remaining_bytes > 0
  end

  RCONPacketFactory.packet_from_data(packet_data)
end

#send(data_packet) ⇒ Object



21
22
23
24
25
26
# File 'lib/steam/sockets/rcon_socket.rb', line 21

def send(data_packet)
  @channel.connect @remote_socket unless @channel.connected?

  @buffer = StringIO.new data_packet.bytes
  @channel.write @buffer
end