javonet-ruby-sdk 2.6.11 → 2.6.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -1
  3. data/lib/javonet-ruby-sdk/Binaries/Jvm/JavonetJvmRuntime.jar +0 -0
  4. data/lib/javonet-ruby-sdk/Binaries/Native/Linux/ARM64/libJavonetActivationService.so +0 -0
  5. data/lib/javonet-ruby-sdk/Binaries/Native/Linux/ARM64/libJavonetCppRuntimeNative.so +0 -0
  6. data/lib/javonet-ruby-sdk/Binaries/Native/Linux/ARM64/libJavonetGoRuntimeNative.so +0 -0
  7. data/lib/javonet-ruby-sdk/Binaries/Native/Linux/ARM64/libJavonetJvmRuntimeNative.so +0 -0
  8. data/lib/javonet-ruby-sdk/Binaries/Native/Linux/ARM64/libJavonetNetcoreRuntimeNative.so +0 -0
  9. data/lib/javonet-ruby-sdk/Binaries/Native/Linux/ARM64/libJavonetPhpRuntimeNative.so +0 -0
  10. data/lib/javonet-ruby-sdk/Binaries/Native/Linux/ARM64/libJavonetPythonRuntimeNative.so +0 -0
  11. data/lib/javonet-ruby-sdk/Binaries/Native/Linux/ARM64/libJavonetRubyRuntimeNative.so +0 -0
  12. data/lib/javonet-ruby-sdk/Binaries/Native/Linux/ARM64/libUtils.so +0 -0
  13. data/lib/javonet-ruby-sdk/Binaries/Native/Linux/ARM64/version.txt +1 -1
  14. data/lib/javonet-ruby-sdk/Binaries/Native/Linux/X64/libJavonetActivationService.so +0 -0
  15. data/lib/javonet-ruby-sdk/Binaries/Native/Linux/X64/libJavonetCppRuntimeNative.so +0 -0
  16. data/lib/javonet-ruby-sdk/Binaries/Native/Linux/X64/libJavonetGoRuntimeNative.so +0 -0
  17. data/lib/javonet-ruby-sdk/Binaries/Native/Linux/X64/libJavonetJvmRuntimeNative.so +0 -0
  18. data/lib/javonet-ruby-sdk/Binaries/Native/Linux/X64/libJavonetNetcoreRuntimeNative.so +0 -0
  19. data/lib/javonet-ruby-sdk/Binaries/Native/Linux/X64/libJavonetNodejsRuntimeNative.so +0 -0
  20. data/lib/javonet-ruby-sdk/Binaries/Native/Linux/X64/libJavonetPerlRuntimeNative.so +0 -0
  21. data/lib/javonet-ruby-sdk/Binaries/Native/Linux/X64/libJavonetPhpRuntimeNative.so +0 -0
  22. data/lib/javonet-ruby-sdk/Binaries/Native/Linux/X64/libJavonetPython2RuntimeNative.so +0 -0
  23. data/lib/javonet-ruby-sdk/Binaries/Native/Linux/X64/libJavonetPythonRuntimeNative.so +0 -0
  24. data/lib/javonet-ruby-sdk/Binaries/Native/Linux/X64/libJavonetRubyRuntimeNative.so +0 -0
  25. data/lib/javonet-ruby-sdk/Binaries/Native/Linux/X64/libUtils.so +0 -0
  26. data/lib/javonet-ruby-sdk/Binaries/Native/Linux/X64/version.txt +1 -1
  27. data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/ARM64/libJavonetActivationService.dylib +0 -0
  28. data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/ARM64/libJavonetCppRuntimeNative.dylib +0 -0
  29. data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/ARM64/libJavonetGoRuntimeNative.dylib +0 -0
  30. data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/ARM64/libJavonetJvmRuntimeNative.dylib +0 -0
  31. data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/ARM64/libJavonetNetcoreRuntimeNative.dylib +0 -0
  32. data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/ARM64/libJavonetPythonRuntimeNative.dylib +0 -0
  33. data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/ARM64/libJavonetRubyRuntimeNative.dylib +0 -0
  34. data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/ARM64/libUtils.dylib +0 -0
  35. data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/ARM64/version.txt +1 -1
  36. data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/X64/libJavonetActivationService.dylib +0 -0
  37. data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/X64/libJavonetCppRuntimeNative.dylib +0 -0
  38. data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/X64/libJavonetGoRuntimeNative.dylib +0 -0
  39. data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/X64/libJavonetJvmRuntimeNative.dylib +0 -0
  40. data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/X64/libJavonetNetcoreRuntimeNative.dylib +0 -0
  41. data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/X64/libJavonetNodejs2218RuntimeNative.dylib +0 -0
  42. data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/X64/libJavonetNodejsRuntimeNative.dylib +0 -0
  43. data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/X64/libJavonetPerlRuntimeNative.dylib +0 -0
  44. data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/X64/libJavonetPhpRuntimeNative.dylib +0 -0
  45. data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/X64/libJavonetPythonRuntimeNative.dylib +0 -0
  46. data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/X64/libJavonetRubyRuntimeNative.dylib +0 -0
  47. data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/X64/libUtils.dylib +0 -0
  48. data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/X64/version.txt +1 -1
  49. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/ARM64/Configs.dll +0 -0
  50. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/ARM64/JavonetActivationService.dll +0 -0
  51. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/ARM64/JavonetCppRuntimeNative.dll +0 -0
  52. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/ARM64/JavonetGoRuntimeNative.dll +0 -0
  53. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/ARM64/JavonetJvmRuntimeNative.dll +0 -0
  54. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/ARM64/JavonetNetcoreRuntimeNative.dll +0 -0
  55. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/ARM64/JavonetPhpRuntimeNative.dll +0 -0
  56. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/ARM64/JavonetPythonRuntimeNative.dll +0 -0
  57. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/ARM64/JavonetRubyRuntimeNative.dll +0 -0
  58. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/ARM64/JavonetTcpClient.dll +0 -0
  59. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/ARM64/JavonetTcpTlsClient.dll +0 -0
  60. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/ARM64/Utils.dll +0 -0
  61. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/ARM64/version.txt +0 -0
  62. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X64/Configs.dll +0 -0
  63. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X64/JavonetActivationService.dll +0 -0
  64. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X64/JavonetClrRuntimeNative.dll +0 -0
  65. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X64/JavonetCppRuntimeNative.dll +0 -0
  66. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X64/JavonetGoRuntimeNative.dll +0 -0
  67. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X64/JavonetJvmRuntimeNative.dll +0 -0
  68. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X64/JavonetNetcoreRuntimeNative.dll +0 -0
  69. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X64/JavonetNodejs2218RuntimeNative.dll +0 -0
  70. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X64/JavonetNodejsRuntimeNative.dll +0 -0
  71. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X64/JavonetPerlRuntimeNative.dll +0 -0
  72. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X64/JavonetPhp848RuntimeNative.dll +0 -0
  73. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X64/JavonetPhpRuntimeNative.dll +0 -0
  74. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X64/JavonetPython2RuntimeNative.dll +0 -0
  75. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X64/JavonetPythonRuntimeNative.dll +0 -0
  76. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X64/JavonetRubyRuntimeNative.dll +0 -0
  77. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X64/JavonetTcpClient.dll +0 -0
  78. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X64/JavonetTcpTlsClient.dll +0 -0
  79. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X64/Utils.dll +0 -0
  80. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X64/version.txt +1 -1
  81. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X86/Configs.dll +0 -0
  82. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X86/JavonetActivationService.dll +0 -0
  83. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X86/JavonetClrRuntimeNative.dll +0 -0
  84. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X86/JavonetCppRuntimeNative.dll +0 -0
  85. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X86/JavonetGoRuntimeNative.dll +0 -0
  86. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X86/JavonetJvmRuntimeNative.dll +0 -0
  87. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X86/JavonetNetcoreRuntimeNative.dll +0 -0
  88. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X86/JavonetPhpRuntimeNative.dll +0 -0
  89. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X86/JavonetPython2RuntimeNative.dll +0 -0
  90. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X86/JavonetPythonRuntimeNative.dll +0 -0
  91. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X86/JavonetTcpClient.dll +0 -0
  92. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X86/JavonetTcpTlsClient.dll +0 -0
  93. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X86/Utils.dll +0 -0
  94. data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X86/version.txt +1 -1
  95. data/lib/javonet-ruby-sdk/Binaries/Netcore/Javonet.Netcore.Core.dll +0 -0
  96. data/lib/javonet-ruby-sdk/Binaries/Netcore/Javonet.Netcore.Plugins.dll +0 -0
  97. data/lib/javonet-ruby-sdk/Binaries/Netcore/Javonet.Netcore.Utils.dll +0 -0
  98. data/lib/javonet-ruby-sdk/Binaries/Nodejs/dist/sdk/InvocationContext.cjs +1 -11
  99. data/lib/javonet-ruby-sdk/Binaries/Perl/Linux/X64/deps/lib/perl5/x86_64-linux-gnu-thread-multi/auto/Class/Load/XS/XS.so +0 -0
  100. data/lib/javonet-ruby-sdk/Binaries/Perl/Linux/X64/deps/lib/perl5/x86_64-linux-gnu-thread-multi/auto/Data/UUID/UUID.so +0 -0
  101. data/lib/javonet-ruby-sdk/Binaries/Perl/Linux/X64/deps/lib/perl5/x86_64-linux-gnu-thread-multi/auto/FFI/Platypus/Platypus.so +0 -0
  102. data/lib/javonet-ruby-sdk/Binaries/Perl/Linux/X64/deps/lib/perl5/x86_64-linux-gnu-thread-multi/auto/List/Util/Util.so +0 -0
  103. data/lib/javonet-ruby-sdk/Binaries/Perl/Linux/X64/deps/lib/perl5/x86_64-linux-gnu-thread-multi/auto/Moose/Moose.so +0 -0
  104. data/lib/javonet-ruby-sdk/Binaries/Perl/Linux/X64/deps/lib/perl5/x86_64-linux-gnu-thread-multi/auto/PPI/XS/XS.so +0 -0
  105. data/lib/javonet-ruby-sdk/Binaries/Perl/Linux/X64/deps/lib/perl5/x86_64-linux-gnu-thread-multi/auto/Package/Stash/XS/XS.so +0 -0
  106. data/lib/javonet-ruby-sdk/Binaries/Perl/Linux/X64/deps/lib/perl5/x86_64-linux-gnu-thread-multi/auto/Params/Util/Util.so +0 -0
  107. data/lib/javonet-ruby-sdk/Binaries/Perl/Linux/X64/deps/lib/perl5/x86_64-linux-gnu-thread-multi/auto/Want/Want.so +0 -0
  108. data/lib/javonet-ruby-sdk/Binaries/Perl/Linux/X64/deps/lib/perl5/x86_64-linux-gnu-thread-multi/auto/share/dist/FFI-Platypus/lib/libplfill.so +0 -0
  109. data/lib/javonet-ruby-sdk/Binaries/Perl/Linux/X64/deps/lib/perl5/x86_64-linux-gnu-thread-multi/perllocal.pod +93 -93
  110. data/lib/javonet-ruby-sdk/Binaries/Perl/Linux/X64/lib/Javonet/Core/Exception/SdkExceptionHelper.pm +3 -3
  111. data/lib/javonet-ruby-sdk/Binaries/Perl/Linux/X64/lib/Javonet/Core/Protocol/CommandDeserializer.pm +239 -183
  112. data/lib/javonet-ruby-sdk/Binaries/Perl/Linux/X64/lib/Javonet/Core/Protocol/CommandSerializer.pm +62 -51
  113. data/lib/javonet-ruby-sdk/Binaries/Perl/Windows/X64/deps/lib/perl5/MSWin32-x64-multi-thread/auto/Data/UUID/UUID.xs.dll +0 -0
  114. data/lib/javonet-ruby-sdk/Binaries/Perl/Windows/X64/deps/lib/perl5/MSWin32-x64-multi-thread/auto/PPI/XS/XS.xs.dll +0 -0
  115. data/lib/javonet-ruby-sdk/Binaries/Perl/Windows/X64/deps/lib/perl5/MSWin32-x64-multi-thread/auto/Scalar/Util/Numeric/Numeric.xs.dll +0 -0
  116. data/lib/javonet-ruby-sdk/Binaries/Perl/Windows/X64/deps/lib/perl5/MSWin32-x64-multi-thread/auto/Want/Want.xs.dll +0 -0
  117. data/lib/javonet-ruby-sdk/Binaries/Perl/Windows/X64/deps/lib/perl5/MSWin32-x64-multi-thread/auto/autobox/autobox.xs.dll +0 -0
  118. data/lib/javonet-ruby-sdk/Binaries/Perl/Windows/X64/deps/lib/perl5/MSWin32-x64-multi-thread/perllocal.pod +25 -25
  119. data/lib/javonet-ruby-sdk/Binaries/Perl/Windows/X64/lib/Javonet/Core/Exception/SdkExceptionHelper.pm +3 -3
  120. data/lib/javonet-ruby-sdk/Binaries/Perl/Windows/X64/lib/Javonet/Core/Protocol/CommandDeserializer.pm +239 -183
  121. data/lib/javonet-ruby-sdk/Binaries/Perl/Windows/X64/lib/Javonet/Core/Protocol/CommandSerializer.pm +62 -51
  122. data/lib/javonet-ruby-sdk/Binaries/Php/javonet/core/webSocketClient/WebSocketClient.php +77 -35
  123. data/lib/javonet-ruby-sdk/Binaries/Python2/javonet/core/handler/ArrayGetItemHandler.py +3 -6
  124. data/lib/javonet-ruby-sdk/Binaries/Python2/javonet/core/handler/ArraySetItemHandler.py +24 -3
  125. data/lib/javonet-ruby-sdk/Binaries/Python2/javonet/core/protocol/CommandDeserializer.py +134 -196
  126. data/lib/javonet-ruby-sdk/Binaries/Python2/javonet/core/protocol/CommandSerializer.py +29 -29
  127. data/lib/javonet-ruby-sdk/Binaries/version.txt +1 -1
  128. data/lib/javonet-ruby-sdk/sdk/invocation_context.rb +12 -16
  129. metadata +2 -2
@@ -7,213 +7,151 @@ from javonet.core.protocol.TypeDeserializer import TypeDeserializer
7
7
  from javonet.utils.Command import Command
8
8
  from javonet.utils.CommandType import CommandType
9
9
  from javonet.utils.RuntimeName import RuntimeName
10
- from javonet.utils.StringEncodingMode import StringEncodingMode
11
10
  from javonet.utils.Type import Type
12
-
13
-
14
- class _DeserializerState(object):
15
- """Internal state holder for deserialization."""
16
- def __init__(self, buffer):
17
- self.buffer = buffer
18
- self.buffer_len = len(buffer)
19
- self.position = 0
11
+ from javonet.utils.StringEncodingMode import StringEncodingMode
20
12
 
21
13
 
22
14
  class CommandDeserializer(object):
23
15
  """
24
- Class responsible for command deserialization.
16
+ Static class for deserializing commands from byte arrays.
25
17
  """
26
18
 
27
19
  @staticmethod
28
20
  def deserialize(buffer):
29
21
  """
30
- Deserializes a command from a buffer.
31
-
32
- :param buffer: Buffer with data to deserialize
33
- :return: Deserialized command
34
- """
35
- if len(buffer) < 11:
36
- raise ValueError("Buffer too small to contain a command header.")
37
-
38
- state = _DeserializerState(buffer)
39
- command = Command(RuntimeName(buffer[0]), CommandType(buffer[10]), [])
40
- state.position = 11
41
-
42
- while not CommandDeserializer._is_at_end(state):
43
- command = command.add_arg_to_payload(CommandDeserializer._read_object(state))
44
-
45
- return command
46
-
47
- @staticmethod
48
- def _is_at_end(state):
49
- """
50
- Checks if the end of buffer has been reached.
51
-
52
- :param state: Deserializer state
53
- :return: True if end of buffer is reached, False otherwise
54
- """
55
- return state.position >= state.buffer_len
56
-
57
- @staticmethod
58
- def _check_buffer(state, required_size):
59
- """Checks if there are enough bytes left in the buffer."""
60
- if state.position + required_size > state.buffer_len:
61
- raise IndexError("Not enough data in buffer to read next value.")
62
-
63
- @staticmethod
64
- def _read_object(state):
65
- """
66
- Reads an object from the buffer based on its type.
67
-
68
- :param state: Deserializer state
69
- :return: Read object
70
- """
71
- type_num = state.buffer[state.position]
72
- type_value = Type(type_num)
73
- switch = {
74
- Type.Command: CommandDeserializer._read_command,
75
- Type.JavonetString: CommandDeserializer._read_string,
76
- Type.JavonetInteger: CommandDeserializer._read_int,
77
- Type.JavonetBoolean: CommandDeserializer._read_bool,
78
- Type.JavonetFloat: CommandDeserializer._read_float,
79
- Type.JavonetByte: CommandDeserializer._read_byte,
80
- Type.JavonetChar: CommandDeserializer._read_char,
81
- Type.JavonetLongLong: CommandDeserializer._read_longlong,
82
- Type.JavonetDouble: CommandDeserializer._read_double,
83
- Type.JavonetUnsignedLongLong: CommandDeserializer._read_ullong,
84
- Type.JavonetUnsignedInteger: CommandDeserializer._read_uint,
85
- Type.JavonetNoneType: CommandDeserializer._read_none
86
- }
87
- func = switch.get(type_value)
88
- if func is None:
89
- raise ValueError("Type not supported: " + str(type_num))
90
- return func(state)
91
-
92
- @staticmethod
93
- def _read_command(state):
94
- """
95
- Reads a command from the buffer.
96
-
97
- :param state: Deserializer state
98
- :return: Read command
99
- """
100
- CommandDeserializer._check_buffer(state, 7)
101
- p = state.position
102
- number_of_elements_in_payload = TypeDeserializer.deserialize_int(state.buffer[p + 1: p + 5])
103
- runtime = state.buffer[p + 5]
104
- command_type = state.buffer[p + 6]
105
- state.position += 7
22
+ Deserialize a command from a byte array.
106
23
 
107
- payload = []
108
- for _ in xrange(number_of_elements_in_payload):
109
- payload.append(CommandDeserializer._read_object(state))
24
+ Args:
25
+ buffer: The byte array containing the serialized command.
110
26
 
111
- return Command(RuntimeName(runtime), CommandType(command_type), payload)
112
-
113
- @staticmethod
114
- def _read_string(state):
115
- """
116
- Reads a string from the buffer.
117
-
118
- :param state: Deserializer state
119
- :return: Read string
27
+ Returns:
28
+ Command: The deserialized command.
120
29
  """
121
- CommandDeserializer._check_buffer(state, 6)
122
- p = state.position
123
- string_encoding_mode = StringEncodingMode(state.buffer[p + 1])
124
- size = TypeDeserializer.deserialize_int(state.buffer[p + 2:p + 6])
125
- state.position += 6
126
- CommandDeserializer._check_buffer(state, size)
127
- p = state.position
128
- state.position += size
129
- return TypeDeserializer.deserialize_string(string_encoding_mode, state.buffer[p:p + size])
130
-
131
- @staticmethod
132
- def _read_int(state):
133
- size = 4
134
- CommandDeserializer._check_buffer(state, size + 2)
135
- state.position += 2
136
- p = state.position
137
- state.position += size
138
- return TypeDeserializer.deserialize_int(state.buffer[p:p + size])
139
-
140
- @staticmethod
141
- def _read_bool(state):
142
- size = 1
143
- CommandDeserializer._check_buffer(state, size + 2)
144
- state.position += 2
145
- p = state.position
146
- state.position += size
147
- return TypeDeserializer.deserialize_bool(state.buffer[p:p + size])
148
-
149
- @staticmethod
150
- def _read_float(state):
151
- size = 4
152
- CommandDeserializer._check_buffer(state, size + 2)
153
- state.position += 2
154
- p = state.position
155
- state.position += size
156
- return TypeDeserializer.deserialize_float(state.buffer[p:p + size])
157
-
158
- @staticmethod
159
- def _read_byte(state):
160
- size = 1
161
- CommandDeserializer._check_buffer(state, size + 2)
162
- state.position += 2
163
- p = state.position
164
- state.position += size
165
- return TypeDeserializer.deserialize_byte(state.buffer[p:p + size])
166
-
167
- @staticmethod
168
- def _read_char(state):
169
- size = 1
170
- CommandDeserializer._check_buffer(state, size + 2)
171
- state.position += 2
172
- p = state.position
173
- state.position += size
174
- return TypeDeserializer.deserialize_char(state.buffer[p:p + size])
175
-
176
- @staticmethod
177
- def _read_longlong(state):
178
- size = 8
179
- CommandDeserializer._check_buffer(state, size + 2)
180
- state.position += 2
181
- p = state.position
182
- state.position += size
183
- return TypeDeserializer.deserialize_longlong(state.buffer[p:p + size])
184
-
185
- @staticmethod
186
- def _read_double(state):
187
- size = 8
188
- CommandDeserializer._check_buffer(state, size + 2)
189
- state.position += 2
190
- p = state.position
191
- state.position += size
192
- return TypeDeserializer.deserialize_double(state.buffer[p:p + size])
193
-
194
- @staticmethod
195
- def _read_ullong(state):
196
- size = 8
197
- CommandDeserializer._check_buffer(state, size + 2)
198
- state.position += 2
199
- p = state.position
200
- state.position += size
201
- return TypeDeserializer.deserialize_ullong(state.buffer[p:p + size])
202
-
203
- @staticmethod
204
- def _read_uint(state):
205
- size = 4
206
- CommandDeserializer._check_buffer(state, size + 2)
207
- state.position += 2
208
- p = state.position
209
- state.position += size
210
- return TypeDeserializer.deserialize_uint(state.buffer[p:p + size])
30
+ buffer_len = len(buffer)
31
+ command = Command(RuntimeName(buffer[0]), CommandType(buffer[10]), [])
32
+ position = 11
33
+
34
+ # Use a list to hold position (mutable reference for nested functions)
35
+ pos_ref = [position]
36
+
37
+ def is_at_end():
38
+ return pos_ref[0] == buffer_len
39
+
40
+ def read_object(type_num):
41
+ type_value = Type(type_num)
42
+ switch = {
43
+ Type.Command: read_command,
44
+ Type.JavonetString: read_string,
45
+ Type.JavonetInteger: read_int,
46
+ Type.JavonetBoolean: read_bool,
47
+ Type.JavonetFloat: read_float,
48
+ Type.JavonetByte: read_byte,
49
+ Type.JavonetChar: read_char,
50
+ Type.JavonetLongLong: read_longlong,
51
+ Type.JavonetDouble: read_double,
52
+ Type.JavonetUnsignedLongLong: read_ullong,
53
+ Type.JavonetUnsignedInteger: read_uint,
54
+ Type.JavonetNoneType: read_none
55
+ }
56
+ func = switch.get(type_value)
57
+ if func is None:
58
+ raise Exception("Type not supported")
59
+ return func()
60
+
61
+ def read_command():
62
+ p = pos_ref[0]
63
+ number_of_elements_in_payload = TypeDeserializer.deserialize_int(buffer[p + 1: p + 5])
64
+ runtime = buffer[p + 5]
65
+ command_type = buffer[p + 6]
66
+ pos_ref[0] += 7
67
+
68
+ payload = [
69
+ read_object(buffer[pos_ref[0]])
70
+ for _ in range(number_of_elements_in_payload)
71
+ ]
72
+ return Command(RuntimeName(runtime), CommandType(command_type), payload)
73
+
74
+ def read_string():
75
+ p = pos_ref[0]
76
+ string_encoding_mode = StringEncodingMode(buffer[p + 1])
77
+ size = TypeDeserializer.deserialize_int(buffer[p + 2:p + 6])
78
+ pos_ref[0] += 6
79
+ p = pos_ref[0]
80
+ pos_ref[0] += size
81
+ return TypeDeserializer.deserialize_string(string_encoding_mode, buffer[p:p + size])
82
+
83
+ def read_int():
84
+ size = 4
85
+ pos_ref[0] += 2
86
+ p = pos_ref[0]
87
+ pos_ref[0] += size
88
+ return TypeDeserializer.deserialize_int(buffer[p:p + size])
89
+
90
+ def read_bool():
91
+ size = 1
92
+ pos_ref[0] += 2
93
+ p = pos_ref[0]
94
+ pos_ref[0] += size
95
+ return TypeDeserializer.deserialize_bool(buffer[p:p + size])
96
+
97
+ def read_float():
98
+ size = 4
99
+ pos_ref[0] += 2
100
+ p = pos_ref[0]
101
+ pos_ref[0] += size
102
+ return TypeDeserializer.deserialize_float(buffer[p:p + size])
103
+
104
+ def read_byte():
105
+ size = 1
106
+ pos_ref[0] += 2
107
+ p = pos_ref[0]
108
+ pos_ref[0] += size
109
+ return TypeDeserializer.deserialize_byte(buffer[p:p + size])
110
+
111
+ def read_char():
112
+ size = 1
113
+ pos_ref[0] += 2
114
+ p = pos_ref[0]
115
+ pos_ref[0] += size
116
+ return TypeDeserializer.deserialize_char(buffer[p:p + size])
117
+
118
+ def read_longlong():
119
+ size = 8
120
+ pos_ref[0] += 2
121
+ p = pos_ref[0]
122
+ pos_ref[0] += size
123
+ return TypeDeserializer.deserialize_longlong(buffer[p:p + size])
124
+
125
+ def read_double():
126
+ size = 8
127
+ pos_ref[0] += 2
128
+ p = pos_ref[0]
129
+ pos_ref[0] += size
130
+ return TypeDeserializer.deserialize_double(buffer[p:p + size])
131
+
132
+ def read_ullong():
133
+ size = 8
134
+ pos_ref[0] += 2
135
+ p = pos_ref[0]
136
+ pos_ref[0] += size
137
+ return TypeDeserializer.deserialize_ullong(buffer[p:p + size])
138
+
139
+ def read_uint():
140
+ size = 4
141
+ pos_ref[0] += 2
142
+ p = pos_ref[0]
143
+ pos_ref[0] += size
144
+ return TypeDeserializer.deserialize_uint(buffer[p:p + size])
145
+
146
+ def read_none():
147
+ size = 1
148
+ pos_ref[0] += 2
149
+ p = pos_ref[0]
150
+ pos_ref[0] += size
151
+ return TypeDeserializer.deserialize_none(buffer[p:p + size])
152
+
153
+ # Main deserialization loop
154
+ while not is_at_end():
155
+ command = command.add_arg_to_payload(read_object(buffer[pos_ref[0]]))
211
156
 
212
- @staticmethod
213
- def _read_none(state):
214
- size = 1
215
- CommandDeserializer._check_buffer(state, size + 2)
216
- state.position += 2
217
- p = state.position
218
- state.position += size
219
- return TypeDeserializer.deserialize_none(state.buffer[p:p + size])
157
+ return command
@@ -3,13 +3,16 @@
3
3
  The CommandSerializer module implements command serialization.
4
4
  """
5
5
 
6
+ import io
7
+
6
8
  from javonet.core.protocol.TypeSerializer import TypeSerializer
9
+ from javonet.core.referenceCache.ReferencesCache import ReferencesCache
7
10
  from javonet.utils.Command import Command
8
11
  from javonet.utils.CommandType import CommandType
9
12
  from javonet.utils.RuntimeName import RuntimeName
10
- from javonet.utils.connectionData.IConnectionData import IConnectionData
11
13
  from javonet.utils.TypesHandler import TypesHandler
12
- from javonet.core.referenceCache.ReferencesCache import ReferencesCache
14
+ from javonet.utils.connectionData.IConnectionData import IConnectionData
15
+
13
16
 
14
17
  class CommandSerializer(object):
15
18
  """
@@ -24,42 +27,39 @@ class CommandSerializer(object):
24
27
  :param root_command: Command to serialize
25
28
  :param connection_data: Connection data
26
29
  :param runtime_version: Runtime version
27
- :return: Serialized command
30
+ :return: Serialized command as bytearray
28
31
  """
29
- buffer = [] # Reset buffer for each serialization
30
- CommandSerializer._insert_into_buffer(buffer, [root_command.runtime_name.value, runtime_version])
31
- CommandSerializer._insert_into_buffer(buffer, connection_data.serialize_connection_data())
32
- CommandSerializer._insert_into_buffer(buffer, [RuntimeName.python27.value, root_command.command_type.value])
33
- CommandSerializer._serialize_recursively(buffer, root_command)
34
- return buffer
32
+ ms = io.BytesIO()
33
+
34
+ ms.write(bytearray([root_command.runtime_name.value, runtime_version]))
35
+
36
+ if connection_data is not None:
37
+ ms.write(bytearray(connection_data.serialize_connection_data()))
38
+ else:
39
+ ms.write(bytearray([0, 0, 0, 0, 0, 0, 0]))
40
+
41
+ ms.write(bytearray([RuntimeName.python27.value, root_command.command_type.value]))
42
+
43
+ CommandSerializer.serialize_recursively(root_command, ms)
44
+
45
+ return list(bytearray(ms.getvalue()))
35
46
 
36
47
  @staticmethod
37
- def _serialize_recursively(buffer, command):
48
+ def serialize_recursively(command, ms):
38
49
  """
39
50
  Serializes a command recursively.
40
51
 
41
- :param buffer: Buffer to serialize into
42
52
  :param command: Command to serialize
53
+ :param ms: BytesIO buffer to write to
43
54
  """
44
- for item in command.payload:
55
+ for item in command.get_payload():
45
56
  if isinstance(item, Command):
46
- CommandSerializer._insert_into_buffer(buffer, TypeSerializer.serialize_command(item))
47
- CommandSerializer._serialize_recursively(buffer, item)
57
+ ms.write(bytearray(TypeSerializer.serialize_command(item)))
58
+ CommandSerializer.serialize_recursively(item, ms)
48
59
  elif TypesHandler.is_primitive_or_none(item):
49
- CommandSerializer._insert_into_buffer(buffer, TypeSerializer.serialize_primitive(item))
60
+ ms.write(bytearray(TypeSerializer.serialize_primitive(item)))
50
61
  else:
51
62
  cached_reference = ReferencesCache().cache_reference(item)
52
- ref_command = Command(RuntimeName.python, CommandType.Reference, cached_reference)
53
- CommandSerializer._serialize_recursively(buffer, ref_command)
54
-
55
- return
56
-
57
- @staticmethod
58
- def _insert_into_buffer(buffer, arguments):
59
- """
60
- Inserts arguments into the buffer.
61
-
62
- :param buffer: Buffer to insert into
63
- :type arguments: list
64
- """
65
- buffer.extend(arguments)
63
+ ref_command = Command(RuntimeName.python27, CommandType.Reference, cached_reference)
64
+ ms.write(bytearray(TypeSerializer.serialize_command(ref_command)))
65
+ CommandSerializer.serialize_recursively(ref_command, ms)
@@ -1 +1 @@
1
- 2.6.11
1
+ 2.6.12
@@ -38,22 +38,14 @@ class InvocationContext < AbstractInvocationContext
38
38
  end
39
39
  end
40
40
 
41
- def [](i)
42
- if not [CommandType::REFERENCE, CommandType::ARRAY_GET_ITEM].include? @current_command.command_type
43
- raise "Object is not iterable"
44
- else
45
- invocation_context_iterator = InvocationContextIterator.new(self)
46
- invocation_context_iterator[i]
47
- end
41
+
42
+ def[](*i)
43
+ get_index(*i).execute
48
44
  end
49
45
 
50
- def []=(i, value)
51
- if not [CommandType::REFERENCE, CommandType::ARRAY_SET_ITEM, CommandType::ARRAY_GET_ITEM].include? @current_command.command_type
52
- raise "Object is not iterable"
53
- else
54
- invocation_context_iterator = InvocationContextIterator.new(self)
55
- invocation_context_iterator[i] = value
56
- end
46
+ def []=(*indexes_and_value)
47
+ value = indexes_and_value.pop
48
+ set_index(indexes_and_value, value).execute
57
49
  end
58
50
 
59
51
  # Executes the current command.
@@ -269,8 +261,12 @@ class InvocationContext < AbstractInvocationContext
269
261
  def retrieve_array
270
262
  local_command = Command.new(@runtime_name, CommandType::RETRIEVE_ARRAY, [])
271
263
  local_inv_ctx = InvocationContext.new(@runtime_name, @connection_type, @tcp_ip_address, build_command(local_command))
272
- local_inv_ctx.execute
273
- local_inv_ctx.response_command.payload
264
+ array_inv_ctx = local_inv_ctx.execute
265
+ response_array = []
266
+ if array_inv_ctx.current_command.payload.length > 0
267
+ response_array = array_inv_ctx.current_command.payload
268
+ end
269
+ response_array
274
270
  end
275
271
 
276
272
  # Retrieves the value of the current command from the target runtime.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: javonet-ruby-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.6.11
4
+ version: 2.6.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - SdNCenter Sp. z o. o.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-12-06 00:00:00.000000000 Z
11
+ date: 2025-12-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi