Class: S2M_HEARTBEAT2_Packet

Inherits:
Object
  • Object
show all
Includes:
SteamPacket
Defined in:
lib/steam/packets/s2m_heartbeat2_packet.rb

Overview

This class represents a S2M_HEARTBEAT2 packet sent by game servers to master servers

It is used to signal the game server’s availability and status to the master servers.

See Also:

Author:

  • Sebastian Staudt

Constant Summary collapse

DEFAULT_DATA =

Default data to send with a S2M_HEARTBEAT2 packet

{
  :appid     => 320,
  :bots      => 0,
  :challenge => nil,
  :dedicated => 0,
  :gamedir   => 'hl2mp',
  :gameport  => 27015,
  :gametype  => 'ctf',
  :lan       => 1,
  :map       => 'null',
  :max       => 24,
  :os        => 'l',
  :password  => 0,
  :players   => 0,
  :product   => 'hl2dm',
  :protocol  => 7,
  :region    => 255,
  :secure    => 0,
  :specport  => 0,
  :type      => 'd',
  :version   => '1.0.0.0'
}

Constants included from SteamPacket

SteamPacket::A2M_GET_SERVERS_BATCH2_HEADER, SteamPacket::A2S_INFO_HEADER, SteamPacket::A2S_PLAYER_HEADER, SteamPacket::A2S_RULES_HEADER, SteamPacket::A2S_SERVERQUERY_GETCHALLENGE_HEADER, SteamPacket::C2M_CHECKMD5_HEADER, SteamPacket::M2A_SERVER_BATCH_HEADER, SteamPacket::M2C_ISVALIDMD5_HEADER, SteamPacket::M2S_REQUESTRESTART_HEADER, SteamPacket::RCON_GOLDSRC_CHALLENGE_HEADER, SteamPacket::RCON_GOLDSRC_NO_CHALLENGE_HEADER, SteamPacket::RCON_GOLDSRC_RESPONSE_HEADER, SteamPacket::S2A_INFO2_HEADER, SteamPacket::S2A_INFO_DETAILED_HEADER, SteamPacket::S2A_LOGSTRING_HEADER, SteamPacket::S2A_PLAYER_HEADER, SteamPacket::S2A_RULES_HEADER, SteamPacket::S2C_CHALLENGE_HEADER, SteamPacket::S2C_CONNREJECT_HEADER, SteamPacket::S2M_HEARTBEAT2_HEADER

Instance Method Summary collapse

Constructor Details

#initialize(data = {}) ⇒ S2M_HEARTBEAT2_Packet

Creates a new S2M_HEARTBEAT2 packet object based on the given data

Parameters:

  • data (Hash<Symbol, Object>) (defaults to: {})

    The data to send with the heartbeat. The data contents are merge with the values from DEFAULT_DATA.

Raises:



50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/steam/packets/s2m_heartbeat2_packet.rb', line 50

def initialize(data = {})
  data = DEFAULT_DATA.merge data

  if data[:challenge].nil?
    raise SteamCondenserException.new 'You have to provide a challenge number when sending a heartbeat to a master server.'
  end

  bytes = 0x0A.chr
  data.each { |k, v| bytes += "\\#{k}\\#{v}" }
  bytes += 0x0A.chr

  super S2M_HEARTBEAT2_HEADER, bytes
end

Instance Method Details

#to_sString

Returns the raw data representing this packet

Returns:

  • (String)

    A string containing the raw data of this request packet



67
68
69
# File 'lib/steam/packets/s2m_heartbeat2_packet.rb', line 67

def to_s
  [@header_data, @content_data.string].pack('ca*')
end