Class: CommandDeserializer

Inherits:
Object
  • Object
show all
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

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

#deserializeObject



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_endObject



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_boolObject



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_byteObject



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_charObject



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_commandObject



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_doubleObject



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_floatObject



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_intObject



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_longlongObject



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_stringObject



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_uintObject



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_ullongObject



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