Class: CommandDeserializer
- Inherits:
-
Object
- Object
- CommandDeserializer
- Defined in:
- lib/javonet-ruby-sdk/core/protocol/command_deserializer.rb,
lib/javonet-ruby-sdk/Binaries/Ruby/Linux/X64/core/protocol/command_deserializer.rb,
lib/javonet-ruby-sdk/Binaries/Ruby/MacOs/X64/core/protocol/command_deserializer.rb,
lib/javonet-ruby-sdk/Binaries/Ruby/Windows/X64/core/protocol/command_deserializer.rb
Instance Method Summary collapse
- #deserialize ⇒ Object
-
#initialize(buffer, byte_array_len) ⇒ CommandDeserializer
constructor
A new instance of CommandDeserializer.
- #is_at_end ⇒ Object
- #read_bool ⇒ Object
- #read_byte ⇒ Object
- #read_char ⇒ Object
- #read_command ⇒ Object
- #read_command_recursively(number_of_elements_in_payload_left, cmd) ⇒ Object
- #read_double ⇒ Object
- #read_float ⇒ Object
- #read_int ⇒ Object
- #read_longlong ⇒ Object
-
#read_object(type_num) ⇒ Object
def copy_from(self, bytes_to_copy, elements_to_skip): size = len(bytes_to_copy) - elements_to_skip new_byte_array = bytes_to_copy return new_byte_array.
- #read_string ⇒ Object
- #read_uint ⇒ Object
- #read_ullong ⇒ Object
Constructor Details
#initialize(buffer, byte_array_len) ⇒ CommandDeserializer
Returns a new instance of CommandDeserializer.
8 9 10 11 12 13 |
# File 'lib/javonet-ruby-sdk/core/protocol/command_deserializer.rb', line 8 def initialize(buffer, byte_array_len) @buffer = buffer @byte_array_len = byte_array_len @command = Command.new(buffer[0], buffer[10], []) @position = 11 end |
Instance Method Details
#deserialize ⇒ Object
19 20 21 22 23 24 |
# File 'lib/javonet-ruby-sdk/core/protocol/command_deserializer.rb', line 19 def deserialize until is_at_end @command = @command.add_arg_to_payload(read_object(@buffer[@position])) end @command end |
#is_at_end ⇒ Object
15 16 17 |
# File 'lib/javonet-ruby-sdk/core/protocol/command_deserializer.rb', line 15 def is_at_end @position == @byte_array_len end |
#read_bool ⇒ Object
98 99 100 101 102 103 104 |
# File 'lib/javonet-ruby-sdk/core/protocol/command_deserializer.rb', line 98 def read_bool size = 1 @position += 2 p = @position @position += size TypeDeserializer.deserialize_bool(@buffer[p..p + size]) end |
#read_byte ⇒ Object
114 115 116 117 118 119 120 |
# File 'lib/javonet-ruby-sdk/core/protocol/command_deserializer.rb', line 114 def read_byte size = 1 @position += 2 p = @position @position += size TypeDeserializer.deserialize_byte(@buffer[p..p + size]) end |
#read_char ⇒ Object
122 123 124 125 126 127 128 |
# File 'lib/javonet-ruby-sdk/core/protocol/command_deserializer.rb', line 122 def read_char size = 1 @position += 2 p = @position @position += size TypeDeserializer.deserialize_char(@buffer[p..p + size]) end |
#read_command ⇒ Object
60 61 62 63 64 65 66 67 68 |
# File 'lib/javonet-ruby-sdk/core/protocol/command_deserializer.rb', line 60 def read_command p = @position number_of_elements_in_payload = TypeDeserializer.deserialize_int(@buffer[p + 1..p + 4]) runtime = @buffer[p + 5] command_type = @buffer[p + 6] @position += 7 return_command = Command.new(runtime, command_type, []) read_command_recursively(number_of_elements_in_payload, return_command) end |
#read_command_recursively(number_of_elements_in_payload_left, cmd) ⇒ Object
70 71 72 73 74 75 76 77 78 |
# File 'lib/javonet-ruby-sdk/core/protocol/command_deserializer.rb', line 70 def read_command_recursively(number_of_elements_in_payload_left, cmd) if number_of_elements_in_payload_left == 0 cmd else p = @position cmd = cmd.add_arg_to_payload(self.read_object(@buffer[p])) read_command_recursively(number_of_elements_in_payload_left - 1, cmd) end end |
#read_double ⇒ Object
138 139 140 141 142 143 144 |
# File 'lib/javonet-ruby-sdk/core/protocol/command_deserializer.rb', line 138 def read_double size = 8 @position += 2 p = @position @position += size TypeDeserializer.deserialize_double(@buffer[p..p + size - 1]) end |
#read_float ⇒ Object
106 107 108 109 110 111 112 |
# File 'lib/javonet-ruby-sdk/core/protocol/command_deserializer.rb', line 106 def read_float size = 4 @position += 2 p = @position @position += size TypeDeserializer.deserialize_float(@buffer[p..p + size - 1]) end |
#read_int ⇒ Object
90 91 92 93 94 95 96 |
# File 'lib/javonet-ruby-sdk/core/protocol/command_deserializer.rb', line 90 def read_int size = 4 @position += 2 p = @position @position += size TypeDeserializer.deserialize_int(@buffer[p..p + size - 1]) end |
#read_longlong ⇒ Object
130 131 132 133 134 135 136 |
# File 'lib/javonet-ruby-sdk/core/protocol/command_deserializer.rb', line 130 def read_longlong size = 8 @position += 2 p = @position @position += size TypeDeserializer.deserialize_longlong(@buffer[p..p + size - 1]) end |
#read_object(type_num) ⇒ Object
def copy_from(self, bytes_to_copy, elements_to_skip):
size = len(bytes_to_copy) - elements_to_skip
new_byte_array = bytes_to_copy[size]
return new_byte_array
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/javonet-ruby-sdk/core/protocol/command_deserializer.rb', line 31 def read_object(type_num) case type_num when Type::COMMAND return self.read_command when Type::JAVONET_STRING return self.read_string when Type::JAVONET_INTEGER return self.read_int when Type::JAVONET_BOOLEAN return self.read_bool when Type::JAVONET_FLOAT return self.read_float when Type::JAVONET_BYTE return self.read_byte when Type::JAVONET_CHAR return self.read_char when Type::JAVONET_LONG_LONG return self.read_longlong when Type::JAVONET_DOUBLE return self.read_double when Type::JAVONET_UNSIGNED_LONG_LONG return self.read_ullong when Type::JAVONET_UNSIGNED_INTEGER return self.read_uint else raise Exception.new("Type #{type_num} not supported in command deserializer") end end |
#read_string ⇒ Object
80 81 82 83 84 85 86 87 88 |
# File 'lib/javonet-ruby-sdk/core/protocol/command_deserializer.rb', line 80 def read_string p = @position string_encoding_mode = @buffer[p + 1] size = TypeDeserializer.deserialize_int(@buffer[p + 2..p + 5]) @position += 6 p = @position @position += size TypeDeserializer.deserialize_string(string_encoding_mode, @buffer[p..p + size - 1]) end |
#read_uint ⇒ Object
154 155 156 157 158 159 160 |
# File 'lib/javonet-ruby-sdk/core/protocol/command_deserializer.rb', line 154 def read_uint size = 4 @position += 2 p = @position @position += size TypeDeserializer.deserialize_uint(@buffer[p..p + size - 1]) end |
#read_ullong ⇒ Object
146 147 148 149 150 151 152 |
# File 'lib/javonet-ruby-sdk/core/protocol/command_deserializer.rb', line 146 def read_ullong size = 8 @position += 2 p = @position @position += size TypeDeserializer.deserialize_ullong(@buffer[p..p + size - 1]) end |