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
- #decode ⇒ Object
-
#initialize(buffer, byte_array_len) ⇒ CommandDeserializer
constructor
A new instance of CommandDeserializer.
- #is_at_end ⇒ Object
- #read_bool ⇒ 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_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.
- #read_string ⇒ Object
Constructor Details
#initialize(buffer, byte_array_len) ⇒ CommandDeserializer
Returns a new instance of CommandDeserializer.
9 10 11 12 13 14 |
# File 'lib/javonet-ruby-sdk/core/protocol/command_deserializer.rb', line 9 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
#decode ⇒ Object
20 21 22 23 24 25 |
# File 'lib/javonet-ruby-sdk/core/protocol/command_deserializer.rb', line 20 def decode until is_at_end @command = @command.add_arg_to_payload(read_object(@buffer[@position])) end return @command end |
#is_at_end ⇒ Object
16 17 18 |
# File 'lib/javonet-ruby-sdk/core/protocol/command_deserializer.rb', line 16 def is_at_end return @position == @byte_array_len end |
#read_bool ⇒ Object
95 96 97 98 99 100 101 102 103 |
# File 'lib/javonet-ruby-sdk/core/protocol/command_deserializer.rb', line 95 def read_bool p = @position size = @buffer[p + 1] @position += 2 p = @position decoded_bool = TypeDeserializer.deserialize_bool(@buffer[p..p + size]) @position += size return decoded_bool end |
#read_command ⇒ Object
54 55 56 57 58 59 60 61 62 63 |
# File 'lib/javonet-ruby-sdk/core/protocol/command_deserializer.rb', line 54 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, []) return read_command_recursively(number_of_elements_in_payload, return_command) end |
#read_command_recursively(number_of_elements_in_payload_left, cmd) ⇒ Object
65 66 67 68 69 70 71 72 73 74 |
# File 'lib/javonet-ruby-sdk/core/protocol/command_deserializer.rb', line 65 def read_command_recursively(number_of_elements_in_payload_left, cmd) if number_of_elements_in_payload_left == 0 return cmd else p = @position new_command = cmd.add_arg_to_payload(self.read_object(@buffer[p])) return read_command_recursively(number_of_elements_in_payload_left - 1, new_command) end end |
#read_double ⇒ Object
117 118 119 120 121 122 123 124 125 |
# File 'lib/javonet-ruby-sdk/core/protocol/command_deserializer.rb', line 117 def read_double p = @position size = @buffer[p + 1] @position += 2 p = @position decoded_double = TypeDeserializer.deserialize_double(@buffer[p..p + size -1]) @position += size return decoded_double end |
#read_float ⇒ Object
106 107 108 109 110 111 112 113 114 |
# File 'lib/javonet-ruby-sdk/core/protocol/command_deserializer.rb', line 106 def read_float p = @position size = @buffer[p + 1] @position += 2 p = @position decoded_float = TypeDeserializer.deserialize_float(@buffer[p..p + size - 1]) @position += size return decoded_float end |
#read_int ⇒ Object
76 77 78 79 80 81 |
# File 'lib/javonet-ruby-sdk/core/protocol/command_deserializer.rb', line 76 def read_int @position += 2 p = @position @position += 4 return TypeDeserializer.deserialize_int(@buffer[p..p + 4 - 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
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/javonet-ruby-sdk/core/protocol/command_deserializer.rb', line 34 def read_object(type_num) type_value = type_num if type_value == Type::COMMAND return self.read_command elsif type_value == Type::JAVONET_INTEGER return self.read_int elsif type_value == Type::JAVONET_STRING return self.read_string elsif type_value == Type::JAVONET_BOOLEAN return self.read_bool elsif type_value == Type::JAVONET_FLOAT return self.read_float elsif type_value == Type::JAVONET_DOUBLE return self.read_double else Exception("Type not supported") end end |
#read_string ⇒ Object
84 85 86 87 88 89 90 91 92 93 |
# File 'lib/javonet-ruby-sdk/core/protocol/command_deserializer.rb', line 84 def read_string p = @position string_encoding_mode = @buffer[p+1] size = TypeDeserializer.deserialize_int(@buffer[p+2..p + 5]) @position += 6 p = @position decoded_string = TypeDeserializer.deserialize_string(string_encoding_mode, @buffer[p..p + size-1]) @position += size return decoded_string end |