steam-condenser 0.13.1 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/exceptions/packet_format_exception.rb +12 -5
- data/lib/exceptions/rcon_ban_exception.rb +11 -3
- data/lib/exceptions/rcon_no_auth_exception.rb +10 -3
- data/lib/exceptions/steam_condenser_exception.rb +8 -5
- data/lib/exceptions/timeout_exception.rb +13 -3
- data/lib/exceptions/web_api_exception.rb +31 -23
- data/lib/steam-condenser.rb +9 -3
- data/lib/steam-condenser/community.rb +8 -1
- data/lib/steam-condenser/servers.rb +7 -1
- data/lib/steam-condenser/version.rb +2 -1
- data/lib/steam/community/cacheable.rb +4 -4
- data/lib/steam/community/game_inventory.rb +119 -0
- data/lib/steam/community/game_item.rb +38 -0
- data/lib/steam/community/game_stats.rb +10 -4
- data/lib/steam/community/portal2/portal2_inventory.rb +21 -0
- data/lib/steam/community/portal2/portal2_item.rb +35 -0
- data/lib/steam/community/portal2/portal2_stats.rb +28 -0
- data/lib/steam/community/tf2/tf2_inventory.rb +7 -37
- data/lib/steam/community/tf2/tf2_item.rb +8 -79
- data/lib/steam/community/tf2/tf2_stats.rb +10 -13
- data/lib/steam/community/web_api.rb +1 -0
- data/lib/steam/packets/a2m_get_servers_batch2_packet.rb +37 -4
- data/lib/steam/packets/a2s_info_packet.rb +10 -5
- data/lib/steam/packets/a2s_player_packet.rb +16 -6
- data/lib/steam/packets/a2s_rules_packet.rb +16 -4
- data/lib/steam/packets/a2s_serverquery_getchallenge_packet.rb +11 -5
- data/lib/steam/packets/c2m_checkmd5_packet.rb +10 -4
- data/lib/steam/packets/m2a_server_batch_packet.rb +19 -3
- data/lib/steam/packets/m2c_isvalidmd5_packet.rb +14 -5
- data/lib/steam/packets/m2s_requestrestart_packet.rb +14 -4
- data/lib/steam/packets/rcon/rcon_auth_request.rb +15 -3
- data/lib/steam/packets/rcon/rcon_auth_response.rb +17 -3
- data/lib/steam/packets/rcon/rcon_exec_request.rb +15 -3
- data/lib/steam/packets/rcon/rcon_exec_response.rb +20 -3
- data/lib/steam/packets/rcon/rcon_goldsrc_request.rb +18 -3
- data/lib/steam/packets/rcon/rcon_goldsrc_response.rb +17 -3
- data/lib/steam/packets/rcon/rcon_packet.rb +31 -3
- data/lib/steam/packets/rcon/rcon_packet_factory.rb +15 -5
- data/lib/steam/packets/rcon/rcon_terminator.rb +14 -5
- data/lib/steam/packets/request_with_challenge.rb +10 -5
- data/lib/steam/packets/s2a_info2_packet.rb +14 -5
- data/lib/steam/packets/s2a_info_base_packet.rb +16 -6
- data/lib/steam/packets/s2a_info_detailed_packet.rb +15 -8
- data/lib/steam/packets/s2a_logstring_packet.rb +11 -5
- data/lib/steam/packets/s2a_player_packet.rb +14 -6
- data/lib/steam/packets/s2a_rules_packet.rb +15 -5
- data/lib/steam/packets/s2c_challenge_packet.rb +17 -6
- data/lib/steam/packets/s2m_heartbeat2_packet.rb +18 -4
- data/lib/steam/packets/steam_packet.rb +14 -5
- data/lib/steam/packets/steam_packet_factory.rb +25 -2
- data/lib/steam/servers/game_server.rb +154 -25
- data/lib/steam/servers/goldsrc_server.rb +35 -3
- data/lib/steam/servers/master_server.rb +77 -23
- data/lib/steam/servers/server.rb +42 -3
- data/lib/steam/servers/source_server.rb +35 -11
- data/lib/stringio_additions.rb +48 -3
- data/test/query_tests.rb +4 -4
- metadata +11 -6
@@ -1,12 +1,18 @@
|
|
1
|
-
# This code is free software; you can redistribute it and/or modify it under
|
2
|
-
# terms of the new BSD License.
|
1
|
+
# This code is free software; you can redistribute it and/or modify it under
|
2
|
+
# the terms of the new BSD License.
|
3
3
|
#
|
4
|
-
# Copyright (c) 2008-
|
4
|
+
# Copyright (c) 2008-2011, Sebastian Staudt
|
5
5
|
|
6
6
|
require 'steam/packets/steam_packet'
|
7
7
|
|
8
|
-
#
|
9
|
-
#
|
8
|
+
# This packet class represents a A2S_SERVERQUERY_GETCHALLENGE request send to
|
9
|
+
# a game server
|
10
|
+
#
|
11
|
+
# It is used to retrieve a challenge number from the game server, which helps
|
12
|
+
# to identify the requesting client.
|
13
|
+
#
|
14
|
+
# @author Sebastian Staudt
|
15
|
+
# @see GameServer#update_challenge_number
|
10
16
|
class A2S_SERVERQUERY_GETCHALLENGE_Packet
|
11
17
|
|
12
18
|
include SteamPacket
|
@@ -5,18 +5,24 @@
|
|
5
5
|
|
6
6
|
require 'steam/packets/steam_packet'
|
7
7
|
|
8
|
-
#
|
9
|
-
#
|
8
|
+
# This packet class represents a C2M_CHECKMD5 request sent to a master server
|
9
|
+
#
|
10
|
+
# It is used to initialize (challenge) master server communication.
|
11
|
+
#
|
12
|
+
# @author Sebastian Staudt
|
13
|
+
# @see MasterServer#challenge
|
10
14
|
class C2M_CHECKMD5_Packet
|
11
15
|
|
12
16
|
include SteamPacket
|
13
17
|
|
14
|
-
# Creates a new
|
18
|
+
# Creates a new C2M_CHECKMD5 request object
|
15
19
|
def initialize
|
16
20
|
super C2M_CHECKMD5_HEADER
|
17
21
|
end
|
18
22
|
|
19
|
-
# Returns
|
23
|
+
# Returns the raw data representing this packet
|
24
|
+
#
|
25
|
+
# @return string A string containing the raw data of this request packet
|
20
26
|
def to_s
|
21
27
|
[@header_data, 0xFF].pack('c2')
|
22
28
|
end
|
@@ -1,16 +1,32 @@
|
|
1
|
-
# This code is free software; you can redistribute it and/or modify it under
|
2
|
-
# terms of the new BSD License.
|
1
|
+
# This code is free software; you can redistribute it and/or modify it under
|
2
|
+
# the terms of the new BSD License.
|
3
3
|
#
|
4
|
-
# Copyright (c) 2008-
|
4
|
+
# Copyright (c) 2008-2011, Sebastian Staudt
|
5
5
|
|
6
6
|
require 'steam/packets/steam_packet'
|
7
7
|
|
8
|
+
# This packet class represents a M2A_SERVER_BATCH response replied by a master
|
9
|
+
# server
|
10
|
+
#
|
11
|
+
# It contains a list of IP addresses and ports of game servers matching the
|
12
|
+
# requested criteria.
|
13
|
+
#
|
14
|
+
# @author Sebastian Staudt
|
15
|
+
# @see MasterServer#servers
|
8
16
|
class M2A_SERVER_BATCH_Packet
|
9
17
|
|
10
18
|
include SteamPacket
|
11
19
|
|
20
|
+
# Returns the list of servers returned from the server in this packet
|
21
|
+
#
|
22
|
+
# @return [Array<String>] An array of server addresses (i.e. IP addresses +
|
23
|
+
# port numbers)
|
12
24
|
attr_reader :servers
|
13
25
|
|
26
|
+
# Creates a new M2A_SERVER_BATCH response object based on the given data
|
27
|
+
#
|
28
|
+
# @param [String] data The raw packet data replied from the server
|
29
|
+
# @raises PacketFormatException if the packet data is not well formatted
|
14
30
|
def initialize(data)
|
15
31
|
super M2A_SERVER_BATCH_HEADER, data
|
16
32
|
|
@@ -1,20 +1,29 @@
|
|
1
|
-
# This code is free software; you can redistribute it and/or modify it under
|
2
|
-
# terms of the new BSD License.
|
1
|
+
# This code is free software; you can redistribute it and/or modify it under
|
2
|
+
# the terms of the new BSD License.
|
3
3
|
#
|
4
4
|
# Copyright (c) 2011, Sebastian Staudt
|
5
5
|
|
6
6
|
require 'steam/packets/steam_packet'
|
7
7
|
|
8
|
-
#
|
9
|
-
#
|
8
|
+
# This packet class represents a M2S_ISVALIDMD5 response replied by a master
|
9
|
+
# server
|
10
|
+
#
|
11
|
+
# It is used to provide a challenge number to a game server
|
12
|
+
#
|
13
|
+
# @author Sebastian Staudt
|
14
|
+
# @see MasterServer#challenge
|
10
15
|
class M2C_ISVALIDMD5_Packet
|
11
16
|
|
12
17
|
include SteamPacket
|
13
18
|
|
14
19
|
# Returns the challenge number to use for master server communication
|
20
|
+
#
|
21
|
+
# @return [Fixnum] The challenge number
|
15
22
|
attr_reader :challenge
|
16
23
|
|
17
|
-
# Creates a new response
|
24
|
+
# Creates a new M2S_ISVALIDMD5 response object based on the given data
|
25
|
+
#
|
26
|
+
# @param [String] data The raw packet data replied from the server
|
18
27
|
def initialize(data)
|
19
28
|
super M2C_ISVALIDMD5_HEADER, data
|
20
29
|
|
@@ -5,18 +5,28 @@
|
|
5
5
|
|
6
6
|
require 'steam/packets/steam_packet'
|
7
7
|
|
8
|
-
#
|
9
|
-
#
|
8
|
+
# This packet class represent a M2S_REQUESTRESTART response replied from a
|
9
|
+
# master server
|
10
|
+
#
|
11
|
+
# It is used to request a game server restart, e.g. when the server is
|
12
|
+
# outdated.
|
13
|
+
#
|
14
|
+
# @author Sebastian Staudt
|
15
|
+
# @see MasterServer#sendHeartbeat
|
10
16
|
class M2S_REQUESTRESTART_Packet
|
11
17
|
|
12
18
|
include SteamPacket
|
13
19
|
|
14
20
|
# Returns the challenge number used for master server communication
|
21
|
+
#
|
22
|
+
# @return [Fixnum] The challenge number
|
15
23
|
attr_reader :challenge
|
16
24
|
|
17
|
-
# Creates a new
|
25
|
+
# Creates a new M2S_REQUESTRESTART response object based on the given data
|
26
|
+
#
|
27
|
+
# @param [String] data The raw packet data replied from the server
|
18
28
|
def initialize(data)
|
19
|
-
super
|
29
|
+
super M2S_REQUESTRESTART_HEADER, data
|
20
30
|
|
21
31
|
@challenge = @content_data.long
|
22
32
|
end
|
@@ -1,14 +1,26 @@
|
|
1
|
-
# This code is free software; you can redistribute it and/or modify it under
|
2
|
-
# terms of the new BSD License.
|
1
|
+
# This code is free software; you can redistribute it and/or modify it under
|
2
|
+
# the terms of the new BSD License.
|
3
3
|
#
|
4
|
-
# Copyright (c) 2008-
|
4
|
+
# Copyright (c) 2008-2011, Sebastian Staudt
|
5
5
|
|
6
6
|
require 'steam/packets/rcon/rcon_packet'
|
7
7
|
|
8
|
+
# This packet class represents a SERVERDATA_AUTH request sent to a Source
|
9
|
+
# server
|
10
|
+
#
|
11
|
+
# It is used to authenticate the client for RCON communication.
|
12
|
+
#
|
13
|
+
# @author Sebastian Staudt
|
14
|
+
# @see SourceServer#rcon_auth
|
8
15
|
class RCONAuthRequest
|
9
16
|
|
10
17
|
include RCONPacket
|
11
18
|
|
19
|
+
# Creates a RCON authentication request for the given request ID and RCON
|
20
|
+
# password
|
21
|
+
#
|
22
|
+
# @param [Fixnum] request_id The request ID of the RCON connection
|
23
|
+
# @param [String] rcon_password The RCON password of the server
|
12
24
|
def initialize(request_id, rcon_password)
|
13
25
|
super request_id, SERVERDATA_AUTH, rcon_password
|
14
26
|
end
|
@@ -1,14 +1,28 @@
|
|
1
|
-
# This code is free software; you can redistribute it and/or modify it under
|
2
|
-
# terms of the new BSD License.
|
1
|
+
# This code is free software; you can redistribute it and/or modify it under
|
2
|
+
# the terms of the new BSD License.
|
3
3
|
#
|
4
|
-
# Copyright (c) 2008-
|
4
|
+
# Copyright (c) 2008-2011, Sebastian Staudt
|
5
5
|
|
6
6
|
require 'steam/packets/rcon/rcon_packet'
|
7
7
|
|
8
|
+
# This packet class represents a SERVERDATA_AUTH_RESPONSE packet sent by a
|
9
|
+
# Source server
|
10
|
+
#
|
11
|
+
# It is used to indicate the success or failure of an authentication attempt
|
12
|
+
# of a client for RCON communication.
|
13
|
+
#
|
14
|
+
# @author Sebastian Staudt
|
15
|
+
# @see SourceServer#rcon_auth
|
8
16
|
class RCONAuthResponse
|
9
17
|
|
10
18
|
include RCONPacket
|
11
19
|
|
20
|
+
# Creates a RCON authentication response for the given request ID
|
21
|
+
#
|
22
|
+
# The request ID of the packet will match the client's request if
|
23
|
+
# authentication was successful
|
24
|
+
#
|
25
|
+
# @param [Fixnum] request_id The request ID of the RCON connection
|
12
26
|
def initialize(request_id)
|
13
27
|
super request_id, SERVERDATA_AUTH_RESPONSE, ''
|
14
28
|
end
|
@@ -1,14 +1,26 @@
|
|
1
|
-
# This code is free software; you can redistribute it and/or modify it under
|
2
|
-
# terms of the new BSD License.
|
1
|
+
# This code is free software; you can redistribute it and/or modify it under
|
2
|
+
# the terms of the new BSD License.
|
3
3
|
#
|
4
|
-
# Copyright (c) 2008-
|
4
|
+
# Copyright (c) 2008-2011, Sebastian Staudt
|
5
5
|
|
6
6
|
require 'steam/packets/rcon/rcon_packet'
|
7
7
|
|
8
|
+
# This packet class represents a SERVERDATA_EXECCOMMAND packet sent to a
|
9
|
+
# Source server
|
10
|
+
#
|
11
|
+
# It is used to request a command execution on the server.
|
12
|
+
#
|
13
|
+
# @author Sebastian Staudt
|
14
|
+
# @see SourceServer#rcon_exec
|
8
15
|
class RCONExecRequest
|
9
16
|
|
10
17
|
include RCONPacket
|
11
18
|
|
19
|
+
# Creates a RCON command execution request for the given request ID and
|
20
|
+
# command
|
21
|
+
#
|
22
|
+
# @param [Fixnum] request_id The request ID of the RCON connection
|
23
|
+
# @param [String] rcon_command The command to execute on the server
|
12
24
|
def initialize(request_id, rcon_command)
|
13
25
|
super request_id, SERVERDATA_EXECCOMMAND, rcon_command
|
14
26
|
end
|
@@ -1,18 +1,35 @@
|
|
1
|
-
# This code is free software; you can redistribute it and/or modify it under
|
2
|
-
# terms of the new BSD License.
|
1
|
+
# This code is free software; you can redistribute it and/or modify it under
|
2
|
+
# the terms of the new BSD License.
|
3
3
|
#
|
4
|
-
# Copyright (c) 2008-
|
4
|
+
# Copyright (c) 2008-2011, Sebastian Staudt
|
5
5
|
|
6
6
|
require 'steam/packets/rcon/rcon_packet'
|
7
7
|
|
8
|
+
# This packet class represents a SERVERDATA_RESPONSE_VALUE packet sent by a
|
9
|
+
# Source server
|
10
|
+
#
|
11
|
+
# It is used to transport the output of a command from the server to the client
|
12
|
+
# which requested the command execution.
|
13
|
+
#
|
14
|
+
# @author Sebastian Staudt
|
15
|
+
# @see SourceServer#rcon_exec
|
8
16
|
class RCONExecResponse
|
9
17
|
|
10
18
|
include RCONPacket
|
11
19
|
|
20
|
+
# Creates a RCON command response for the given request ID and command
|
21
|
+
# output
|
22
|
+
#
|
23
|
+
# @param [Fixnum] request_id The request ID of the RCON connection
|
24
|
+
# @param [String] command_response The output of the command executed on the
|
25
|
+
# server
|
12
26
|
def initialize(request_id, command_response)
|
13
27
|
super request_id, SERVERDATA_RESPONSE_VALUE, command_response
|
14
28
|
end
|
15
29
|
|
30
|
+
# Returns the output of the command execution
|
31
|
+
#
|
32
|
+
# @return [String] The output of the command
|
16
33
|
def response
|
17
34
|
@content_data.string[0..-3]
|
18
35
|
end
|
@@ -1,18 +1,33 @@
|
|
1
|
-
# This code is free software; you can redistribute it and/or modify it under
|
2
|
-
# terms of the new BSD License.
|
1
|
+
# This code is free software; you can redistribute it and/or modify it under
|
2
|
+
# the terms of the new BSD License.
|
3
3
|
#
|
4
|
-
# Copyright (c) 2008-
|
4
|
+
# Copyright (c) 2008-2011, Sebastian Staudt
|
5
5
|
|
6
6
|
require 'steam/packets/steam_packet'
|
7
7
|
|
8
|
+
# This packet class represents a RCON request packet sent to a GoldSrc server
|
9
|
+
#
|
10
|
+
# It is used to request a command execution on the server.
|
11
|
+
#
|
12
|
+
# @author Sebastian Staudt
|
13
|
+
# @see GoldSrcServer#rcon_exec
|
8
14
|
class RCONGoldSrcRequest
|
9
15
|
|
10
16
|
include SteamPacket
|
11
17
|
|
18
|
+
# Creates a request for the given request string
|
19
|
+
#
|
20
|
+
# The request string has the form `rcon {challenge number} {RCON password}
|
21
|
+
# {command}`.
|
22
|
+
#
|
23
|
+
# @param [String] request The request string to send to the server
|
12
24
|
def initialize(request)
|
13
25
|
super 0x00, request
|
14
26
|
end
|
15
27
|
|
28
|
+
# Returns the raw data representing this packet
|
29
|
+
#
|
30
|
+
# @return [String] A string containing the raw data of this request packet
|
16
31
|
def to_s
|
17
32
|
[0xFFFFFFFF, @content_data.string].pack('Va*')
|
18
33
|
end
|
@@ -1,18 +1,32 @@
|
|
1
|
-
# This code is free software; you can redistribute it and/or modify it under
|
2
|
-
# terms of the new BSD License.
|
1
|
+
# This code is free software; you can redistribute it and/or modify it under
|
2
|
+
# the terms of the new BSD License.
|
3
3
|
#
|
4
|
-
# Copyright (c) 2008-
|
4
|
+
# Copyright (c) 2008-2011, Sebastian Staudt
|
5
5
|
|
6
6
|
require 'steam/packets/steam_packet'
|
7
7
|
|
8
|
+
# This packet class represents a RCON response packet sent by a GoldSrc server
|
9
|
+
#
|
10
|
+
# It is used to transport the output of a command from the server to the client
|
11
|
+
# which requested the command execution.
|
12
|
+
#
|
13
|
+
# @author Sebastian Staudt
|
14
|
+
# @see GoldSrcServer#rcon_exec
|
8
15
|
class RCONGoldSrcResponse
|
9
16
|
|
10
17
|
include SteamPacket
|
11
18
|
|
19
|
+
# Creates a RCON command response for the given command output
|
20
|
+
#
|
21
|
+
# @param [String] command_response The output of the command executed on the
|
22
|
+
# server
|
12
23
|
def initialize(command_response)
|
13
24
|
super RCON_GOLDSRC_RESPONSE_HEADER, command_response
|
14
25
|
end
|
15
26
|
|
27
|
+
# Returns the output of the command execution
|
28
|
+
#
|
29
|
+
# @return [String] The output of the command
|
16
30
|
def response
|
17
31
|
@content_data.string[0..-3]
|
18
32
|
end
|
@@ -1,27 +1,55 @@
|
|
1
|
-
# This code is free software; you can redistribute it and/or modify it under
|
2
|
-
# terms of the new BSD License.
|
1
|
+
# This code is free software; you can redistribute it and/or modify it under
|
2
|
+
# the terms of the new BSD License.
|
3
3
|
#
|
4
|
-
# Copyright (c) 2008-
|
4
|
+
# Copyright (c) 2008-2011, Sebastian Staudt
|
5
5
|
|
6
6
|
require 'steam/packets/steam_packet'
|
7
7
|
|
8
|
+
# This module is included by all classes representing a packet used by Source's
|
9
|
+
# RCON protocol
|
10
|
+
#
|
11
|
+
# It provides a basic implementation for initializing and serializing such a
|
12
|
+
# packet.
|
13
|
+
#
|
14
|
+
# @author Sebastian Staudt
|
15
|
+
# @see RCONPacketFactory
|
8
16
|
module RCONPacket
|
9
17
|
|
10
18
|
include SteamPacket
|
11
19
|
|
20
|
+
# Header for authentication requests
|
12
21
|
SERVERDATA_AUTH = 3
|
22
|
+
|
23
|
+
# Header for replies to authentication attempts
|
13
24
|
SERVERDATA_AUTH_RESPONSE = 2
|
25
|
+
|
26
|
+
# Header for command execution requests
|
14
27
|
SERVERDATA_EXECCOMMAND = 2
|
28
|
+
|
29
|
+
# Header for packets with the output of a command execution
|
15
30
|
SERVERDATA_RESPONSE_VALUE = 0
|
16
31
|
|
32
|
+
# Returns the request ID used to identify the RCON communication
|
33
|
+
#
|
34
|
+
# @return [Fixnum] The request ID used to identify the RCON communication
|
17
35
|
attr_reader :request_id
|
18
36
|
|
37
|
+
# Creates a new RCON packet object with the given request ID, type and
|
38
|
+
# content data
|
39
|
+
#
|
40
|
+
# @param [Fixnum] request_id The request ID for the current RCON
|
41
|
+
# communication
|
42
|
+
# @param [Fixnum] rcon_header The header for the packet type
|
43
|
+
# @param [String] rcon_data The raw packet data
|
19
44
|
def initialize(request_id, rcon_header, rcon_data)
|
20
45
|
super rcon_header, "#{rcon_data}\0\0"
|
21
46
|
|
22
47
|
@request_id = request_id
|
23
48
|
end
|
24
49
|
|
50
|
+
# Returns the raw data representing this packet
|
51
|
+
#
|
52
|
+
# @return [String] A string containing the raw data of this RCON packet
|
25
53
|
def to_s
|
26
54
|
[@content_data.length + 8, @request_id, @header_data, @content_data.string].pack('V3a*')
|
27
55
|
end
|
@@ -1,7 +1,7 @@
|
|
1
|
-
# This code is free software; you can redistribute it and/or modify it under
|
2
|
-
# terms of the new BSD License.
|
1
|
+
# This code is free software; you can redistribute it and/or modify it under
|
2
|
+
# the terms of the new BSD License.
|
3
3
|
#
|
4
|
-
# Copyright (c) 2008-
|
4
|
+
# Copyright (c) 2008-2011, Sebastian Staudt
|
5
5
|
|
6
6
|
require 'stringio_additions'
|
7
7
|
require 'exceptions/packet_format_exception'
|
@@ -9,10 +9,20 @@ require 'steam/packets/steam_packet_factory'
|
|
9
9
|
require 'steam/packets/rcon/rcon_auth_response'
|
10
10
|
require 'steam/packets/rcon/rcon_exec_response'
|
11
11
|
|
12
|
+
# This module provides functionality to handle raw packet data for Source RCON
|
13
|
+
#
|
14
|
+
# It's is used to transform data bytes into packet objects for RCON
|
15
|
+
# communication with Source servers.
|
16
|
+
#
|
17
|
+
# @author Sebastian Staudt
|
18
|
+
# @see RCONPacket
|
12
19
|
module RCONPacketFactory
|
13
20
|
|
14
|
-
|
15
|
-
|
21
|
+
# Creates a new packet object based on the header byte of the given raw data
|
22
|
+
#
|
23
|
+
# @param [String] raw_data The raw data of the packet
|
24
|
+
# @raise [PacketFormatException] if the packet header is not recognized
|
25
|
+
# @return [RCONPacket] The packet object generated from the packet data
|
16
26
|
def self.packet_from_data(raw_data)
|
17
27
|
byte_buffer = StringIO.new raw_data
|
18
28
|
|