Class: PacketGen::Types::IntString
- Inherits:
-
Object
- Object
- PacketGen::Types::IntString
- Includes:
- Fieldable
- Defined in:
- lib/packetgen/types/int_string.rb
Overview
Provides a class for creating strings preceeded by their length as a Int. By default, a null string will have one byte length (length byte set to 0).
Instance Attribute Summary collapse
-
#string ⇒ String
internal string.
Instance Method Summary collapse
-
#calc_length ⇒ Integer
Set length from internal string length.
-
#empty? ⇒ Boolean
Say if IntString is empty.
-
#from_human(str) ⇒ self
Set from a human readable string.
-
#initialize(len_type = Int8, string: '') ⇒ IntString
constructor
A new instance of IntString.
- #length ⇒ Integer
- #length=(len) ⇒ Integer
-
#read(str) ⇒ IntString
Self.
-
#sz ⇒ Integer
Give binary string length (including
length
field). -
#to_human ⇒ ::String
Get human readable string.
-
#to_s ⇒ ::String
Get binary string.
Methods included from Fieldable
Constructor Details
Instance Attribute Details
#string ⇒ String
internal string
20 21 22 |
# File 'lib/packetgen/types/int_string.rb', line 20 def string @string end |
Instance Method Details
#calc_length ⇒ Integer
Set length from internal string length
85 86 87 |
# File 'lib/packetgen/types/int_string.rb', line 85 def calc_length @length.read @string.length end |
#empty? ⇒ Boolean
Say if IntString is empty
97 98 99 |
# File 'lib/packetgen/types/int_string.rb', line 97 def empty? length.zero? end |
#from_human(str) ⇒ self
Set from a human readable string
70 71 72 73 74 |
# File 'lib/packetgen/types/int_string.rb', line 70 def from_human(str) @string.read str calc_length self end |
#length ⇒ Integer
50 51 52 |
# File 'lib/packetgen/types/int_string.rb', line 50 def length @length.to_i end |
#length=(len) ⇒ Integer
44 45 46 47 |
# File 'lib/packetgen/types/int_string.rb', line 44 def length=(len) @length.read len len end |
#read(str) ⇒ IntString
Returns self.
32 33 34 35 36 37 38 39 40 |
# File 'lib/packetgen/types/int_string.rb', line 32 def read(str) unless str[0, @length.width].size == @length.width raise ParseError, "String too short for type #{@length.class.to_s.gsub(/.*::/, '')}" end @length.read str[0, @length.width] @string.read str[@length.width, @length.to_i] self end |
#sz ⇒ Integer
Give binary string length (including length
field)
91 92 93 |
# File 'lib/packetgen/types/int_string.rb', line 91 def sz to_s.size end |
#to_human ⇒ ::String
Get human readable string
79 80 81 |
# File 'lib/packetgen/types/int_string.rb', line 79 def to_human @string end |
#to_s ⇒ ::String
Get binary string
63 64 65 |
# File 'lib/packetgen/types/int_string.rb', line 63 def to_s @length.to_s << @string.to_s end |