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.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/lib/javonet-ruby-sdk/Binaries/Jvm/JavonetJvmRuntime.jar +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Linux/ARM64/libJavonetActivationService.so +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Linux/ARM64/libJavonetCppRuntimeNative.so +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Linux/ARM64/libJavonetGoRuntimeNative.so +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Linux/ARM64/libJavonetJvmRuntimeNative.so +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Linux/ARM64/libJavonetNetcoreRuntimeNative.so +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Linux/ARM64/libJavonetPhpRuntimeNative.so +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Linux/ARM64/libJavonetPythonRuntimeNative.so +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Linux/ARM64/libJavonetRubyRuntimeNative.so +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Linux/ARM64/libUtils.so +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Linux/ARM64/version.txt +1 -1
- data/lib/javonet-ruby-sdk/Binaries/Native/Linux/X64/libJavonetActivationService.so +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Linux/X64/libJavonetCppRuntimeNative.so +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Linux/X64/libJavonetGoRuntimeNative.so +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Linux/X64/libJavonetJvmRuntimeNative.so +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Linux/X64/libJavonetNetcoreRuntimeNative.so +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Linux/X64/libJavonetNodejsRuntimeNative.so +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Linux/X64/libJavonetPerlRuntimeNative.so +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Linux/X64/libJavonetPhpRuntimeNative.so +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Linux/X64/libJavonetPython2RuntimeNative.so +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Linux/X64/libJavonetPythonRuntimeNative.so +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Linux/X64/libJavonetRubyRuntimeNative.so +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Linux/X64/libUtils.so +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Linux/X64/version.txt +1 -1
- data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/ARM64/libJavonetActivationService.dylib +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/ARM64/libJavonetCppRuntimeNative.dylib +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/ARM64/libJavonetGoRuntimeNative.dylib +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/ARM64/libJavonetJvmRuntimeNative.dylib +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/ARM64/libJavonetNetcoreRuntimeNative.dylib +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/ARM64/libJavonetPythonRuntimeNative.dylib +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/ARM64/libJavonetRubyRuntimeNative.dylib +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/ARM64/libUtils.dylib +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/ARM64/version.txt +1 -1
- data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/X64/libJavonetActivationService.dylib +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/X64/libJavonetCppRuntimeNative.dylib +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/X64/libJavonetGoRuntimeNative.dylib +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/X64/libJavonetJvmRuntimeNative.dylib +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/X64/libJavonetNetcoreRuntimeNative.dylib +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/X64/libJavonetNodejs2218RuntimeNative.dylib +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/X64/libJavonetNodejsRuntimeNative.dylib +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/X64/libJavonetPerlRuntimeNative.dylib +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/X64/libJavonetPhpRuntimeNative.dylib +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/X64/libJavonetPythonRuntimeNative.dylib +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/X64/libJavonetRubyRuntimeNative.dylib +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/X64/libUtils.dylib +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/X64/version.txt +1 -1
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/ARM64/Configs.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/ARM64/JavonetActivationService.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/ARM64/JavonetCppRuntimeNative.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/ARM64/JavonetGoRuntimeNative.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/ARM64/JavonetJvmRuntimeNative.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/ARM64/JavonetNetcoreRuntimeNative.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/ARM64/JavonetPhpRuntimeNative.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/ARM64/JavonetPythonRuntimeNative.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/ARM64/JavonetRubyRuntimeNative.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/ARM64/JavonetTcpClient.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/ARM64/JavonetTcpTlsClient.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/ARM64/Utils.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/ARM64/version.txt +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X64/Configs.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X64/JavonetActivationService.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X64/JavonetClrRuntimeNative.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X64/JavonetCppRuntimeNative.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X64/JavonetGoRuntimeNative.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X64/JavonetJvmRuntimeNative.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X64/JavonetNetcoreRuntimeNative.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X64/JavonetNodejs2218RuntimeNative.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X64/JavonetNodejsRuntimeNative.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X64/JavonetPerlRuntimeNative.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X64/JavonetPhp848RuntimeNative.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X64/JavonetPhpRuntimeNative.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X64/JavonetPython2RuntimeNative.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X64/JavonetPythonRuntimeNative.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X64/JavonetRubyRuntimeNative.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X64/JavonetTcpClient.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X64/JavonetTcpTlsClient.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X64/Utils.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X64/version.txt +1 -1
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X86/Configs.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X86/JavonetActivationService.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X86/JavonetClrRuntimeNative.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X86/JavonetCppRuntimeNative.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X86/JavonetGoRuntimeNative.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X86/JavonetJvmRuntimeNative.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X86/JavonetNetcoreRuntimeNative.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X86/JavonetPhpRuntimeNative.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X86/JavonetPython2RuntimeNative.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X86/JavonetPythonRuntimeNative.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X86/JavonetTcpClient.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X86/JavonetTcpTlsClient.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X86/Utils.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X86/version.txt +1 -1
- data/lib/javonet-ruby-sdk/Binaries/Netcore/Javonet.Netcore.Core.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Netcore/Javonet.Netcore.Plugins.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Netcore/Javonet.Netcore.Utils.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/dist/sdk/InvocationContext.cjs +1 -11
- 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
- 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
- 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
- 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
- data/lib/javonet-ruby-sdk/Binaries/Perl/Linux/X64/deps/lib/perl5/x86_64-linux-gnu-thread-multi/auto/Moose/Moose.so +0 -0
- 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
- 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
- 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
- data/lib/javonet-ruby-sdk/Binaries/Perl/Linux/X64/deps/lib/perl5/x86_64-linux-gnu-thread-multi/auto/Want/Want.so +0 -0
- 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
- data/lib/javonet-ruby-sdk/Binaries/Perl/Linux/X64/deps/lib/perl5/x86_64-linux-gnu-thread-multi/perllocal.pod +93 -93
- data/lib/javonet-ruby-sdk/Binaries/Perl/Linux/X64/lib/Javonet/Core/Exception/SdkExceptionHelper.pm +3 -3
- data/lib/javonet-ruby-sdk/Binaries/Perl/Linux/X64/lib/Javonet/Core/Protocol/CommandDeserializer.pm +239 -183
- data/lib/javonet-ruby-sdk/Binaries/Perl/Linux/X64/lib/Javonet/Core/Protocol/CommandSerializer.pm +62 -51
- data/lib/javonet-ruby-sdk/Binaries/Perl/Windows/X64/deps/lib/perl5/MSWin32-x64-multi-thread/auto/Data/UUID/UUID.xs.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Perl/Windows/X64/deps/lib/perl5/MSWin32-x64-multi-thread/auto/PPI/XS/XS.xs.dll +0 -0
- 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
- data/lib/javonet-ruby-sdk/Binaries/Perl/Windows/X64/deps/lib/perl5/MSWin32-x64-multi-thread/auto/Want/Want.xs.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Perl/Windows/X64/deps/lib/perl5/MSWin32-x64-multi-thread/auto/autobox/autobox.xs.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Perl/Windows/X64/deps/lib/perl5/MSWin32-x64-multi-thread/perllocal.pod +25 -25
- data/lib/javonet-ruby-sdk/Binaries/Perl/Windows/X64/lib/Javonet/Core/Exception/SdkExceptionHelper.pm +3 -3
- data/lib/javonet-ruby-sdk/Binaries/Perl/Windows/X64/lib/Javonet/Core/Protocol/CommandDeserializer.pm +239 -183
- data/lib/javonet-ruby-sdk/Binaries/Perl/Windows/X64/lib/Javonet/Core/Protocol/CommandSerializer.pm +62 -51
- data/lib/javonet-ruby-sdk/Binaries/Php/javonet/core/webSocketClient/WebSocketClient.php +77 -35
- data/lib/javonet-ruby-sdk/Binaries/Python2/javonet/core/handler/ArrayGetItemHandler.py +3 -6
- data/lib/javonet-ruby-sdk/Binaries/Python2/javonet/core/handler/ArraySetItemHandler.py +24 -3
- data/lib/javonet-ruby-sdk/Binaries/Python2/javonet/core/protocol/CommandDeserializer.py +134 -196
- data/lib/javonet-ruby-sdk/Binaries/Python2/javonet/core/protocol/CommandSerializer.py +29 -29
- data/lib/javonet-ruby-sdk/Binaries/version.txt +1 -1
- data/lib/javonet-ruby-sdk/sdk/invocation_context.rb +12 -16
- 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
|
-
|
|
16
|
+
Static class for deserializing commands from byte arrays.
|
|
25
17
|
"""
|
|
26
18
|
|
|
27
19
|
@staticmethod
|
|
28
20
|
def deserialize(buffer):
|
|
29
21
|
"""
|
|
30
|
-
|
|
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
|
-
|
|
108
|
-
|
|
109
|
-
payload.append(CommandDeserializer._read_object(state))
|
|
24
|
+
Args:
|
|
25
|
+
buffer: The byte array containing the serialized command.
|
|
110
26
|
|
|
111
|
-
|
|
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
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
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
|
|
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.
|
|
55
|
+
for item in command.get_payload():
|
|
45
56
|
if isinstance(item, Command):
|
|
46
|
-
|
|
47
|
-
CommandSerializer.
|
|
57
|
+
ms.write(bytearray(TypeSerializer.serialize_command(item)))
|
|
58
|
+
CommandSerializer.serialize_recursively(item, ms)
|
|
48
59
|
elif TypesHandler.is_primitive_or_none(item):
|
|
49
|
-
|
|
60
|
+
ms.write(bytearray(TypeSerializer.serialize_primitive(item)))
|
|
50
61
|
else:
|
|
51
62
|
cached_reference = ReferencesCache().cache_reference(item)
|
|
52
|
-
ref_command = Command(RuntimeName.
|
|
53
|
-
|
|
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.
|
|
1
|
+
2.6.12
|
|
@@ -38,22 +38,14 @@ class InvocationContext < AbstractInvocationContext
|
|
|
38
38
|
end
|
|
39
39
|
end
|
|
40
40
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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 []=(
|
|
51
|
-
|
|
52
|
-
|
|
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
|
-
|
|
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.
|
|
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-
|
|
11
|
+
date: 2025-12-16 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: ffi
|