Class: Warchat::Network::BinaryReader
- Inherits:
-
Object
- Object
- Warchat::Network::BinaryReader
- Defined in:
- lib/warchat/network/binary_reader.rb
Constant Summary collapse
- TYPES =
[:hash,:array,:int_32,:string,:string,:boolean,:int_64]
Instance Method Summary collapse
- #array ⇒ Object
- #boolean ⇒ Object
- #byte ⇒ Object
- #hash ⇒ Object
-
#initialize(socket) ⇒ BinaryReader
constructor
A new instance of BinaryReader.
- #parse_next(*args) ⇒ Object
- #string ⇒ Object
- #substream(l) ⇒ Object
Constructor Details
#initialize(socket) ⇒ BinaryReader
Returns a new instance of BinaryReader.
4 5 6 |
# File 'lib/warchat/network/binary_reader.rb', line 4 def initialize socket @socket = socket end |
Instance Method Details
#array ⇒ Object
25 26 27 |
# File 'lib/warchat/network/binary_reader.rb', line 25 def array (1..(int_32)).map &method(:parse_next) end |
#boolean ⇒ Object
41 42 43 |
# File 'lib/warchat/network/binary_reader.rb', line 41 def boolean byte == "\001" end |
#byte ⇒ Object
17 18 19 |
# File 'lib/warchat/network/binary_reader.rb', line 17 def byte substream 1 end |
#hash ⇒ Object
29 30 31 32 33 |
# File 'lib/warchat/network/binary_reader.rb', line 29 def hash Hash[*(1..(int_32)).map do [string,parse_next] end.flatten(1)] end |
#parse_next(*args) ⇒ Object
9 10 11 |
# File 'lib/warchat/network/binary_reader.rb', line 9 def parse_next *args send TYPES[byte.unpack('C').first-1] end |
#string ⇒ Object
21 22 23 |
# File 'lib/warchat/network/binary_reader.rb', line 21 def string substream(int_32) end |
#substream(l) ⇒ Object
13 14 15 |
# File 'lib/warchat/network/binary_reader.rb', line 13 def substream l @socket.read l end |