javonet-ruby-sdk 2.6.7 → 2.6.8
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/Clr/JavonetClrRuntime.dll +0 -0
- 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/libJavonetJvmRuntimeNative.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/libJavonetJvmRuntimeNative.so +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Linux/X64/libJavonetNodejs2218RuntimeNative.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/libJavonetJvmRuntimeNative.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/libJavonetJvmRuntimeNative.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/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/core/handler/Handler.cjs +2 -7
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/dist/core/handler/LoadLibraryHandler.cjs +15 -9
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/dist/core/handler/PassDelegateHandler.cjs +2 -2
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/dist/core/interpreter/Interpreter.cjs +11 -33
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/dist/core/protocol/CommandSerializer.cjs +3 -8
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/dist/core/receiver/Receiver.cjs +6 -6
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/dist/sdk/Activator.cjs +44 -0
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/dist/sdk/ActivatorDetails.cjs +13 -3
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/dist/sdk/ConfigRuntimeFactory.cjs +9 -0
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/dist/sdk/InvocationContext.cjs +49 -56
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/dist/sdk/Javonet.cjs +3 -0
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/dist/sdk/RuntimeContext.cjs +8 -8
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/dist/sdk/configuration/ConfigSourceResolver.cjs +43 -21
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/dist/sdk/tools/ComplexTypeResolver.cjs +84 -34
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/dist/types/core/handler/Handler.d.ts +2 -1
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/dist/types/core/handler/PassDelegateHandler.d.ts +2 -2
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/dist/types/core/interpreter/Interpreter.d.ts +2 -2
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/dist/types/core/protocol/CommandSerializer.d.ts +3 -3
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/dist/types/core/receiver/Receiver.d.ts +4 -4
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/dist/types/sdk/Activator.d.ts +12 -0
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/dist/types/sdk/ActivatorDetails.d.ts +5 -3
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/dist/types/sdk/ConfigRuntimeFactory.d.ts +7 -0
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/dist/types/sdk/InvocationContext.d.ts +11 -10
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/dist/types/sdk/Javonet.d.ts +2 -1
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/dist/types/sdk/RuntimeContext.d.ts +4 -3
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/dist/types/sdk/configuration/ConfigSourceResolver.d.ts +21 -4
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/dist/types/sdk/tools/ComplexTypeResolver.d.ts +21 -5
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/dist/types/utils/Primitives.d.ts +5 -0
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/dist/utils/Primitives.cjs +201 -0
- 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 +96 -96
- data/lib/javonet-ruby-sdk/Binaries/Perl/Linux/X64/lib/Javonet/Core/Handler/CommandHandler/LoadLibraryHandler.pm +108 -11
- 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 +22 -22
- data/lib/javonet-ruby-sdk/Binaries/Perl/Windows/X64/lib/Javonet/Core/Handler/CommandHandler/LoadLibraryHandler.pm +108 -11
- data/lib/javonet-ruby-sdk/Binaries/Php/javonet/core/handler/LoadLibraryHandler.php +56 -21
- data/lib/javonet-ruby-sdk/Binaries/Php/javonet/core/interpreter/Interpreter.php +2 -2
- data/lib/javonet-ruby-sdk/Binaries/Php/javonet/core/protocol/CommandDeserializer.php +219 -106
- data/lib/javonet-ruby-sdk/Binaries/Php/javonet/core/protocol/CommandSerializer.php +55 -13
- data/lib/javonet-ruby-sdk/Binaries/Php/javonet/utils/Command.php +27 -9
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/__pycache__/__init__.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/delegateCache/__pycache__/DelegatesCache.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/delegateCache/__pycache__/__init__.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/GetTypeHandler.py +2 -2
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/LoadLibraryHandler.py +54 -14
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/AbstractCommandHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/AbstractHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/AddEventListenerHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/ArrayGetItemHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/ArrayGetRankHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/ArrayGetSizeHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/ArrayHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/ArrayReferenceHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/ArraySetItemHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/AsOutHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/AsRefHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/CastingHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/ConvertTypeHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/CreateClassInstanceHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/CreateNullHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/DestructReferenceHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/EnableNamespaceHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/EnableTypeHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/ExceptionHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/GenerateLibHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/GetAsyncOperationResultHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/GetEnumItemHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/GetEnumNameHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/GetEnumValueHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/GetGlobalFieldHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/GetInstanceFieldHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/GetInstanceMethodAsDelegateHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/GetKwargHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/GetModuleHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/GetRefValueHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/GetResultTypeHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/GetStaticFieldHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/GetStaticMethodAsDelegateHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/GetTypeHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/Handler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/HandlerDictionary.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/HeartBeatHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/InvokeDelegateHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/InvokeGenericMethodHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/InvokeGenericStaticMethodHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/InvokeGlobalFunctionHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/InvokeInstanceMethodHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/InvokeStaticMethodHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/LoadLibraryHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/OptimizeHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/PassDelegateHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/PluginWrapperHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/ResolveInstanceHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/RetrieveArrayHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/SetInstanceFieldHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/SetStaticFieldHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/ValueHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/handler/__pycache__/__init__.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/interpreter/__pycache__/Interpreter.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/interpreter/__pycache__/__init__.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/namespaceCache/__pycache__/NamespaceCache.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/namespaceCache/__pycache__/__init__.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/protocol/__pycache__/CommandDeserializer.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/protocol/__pycache__/CommandSerializer.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/protocol/__pycache__/TypeDeserializer.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/protocol/__pycache__/TypeSerializer.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/protocol/__pycache__/__init__.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/receiver/__pycache__/Receiver.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/receiver/__pycache__/__init__.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/referenceCache/__pycache__/ReferencesCache.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/referenceCache/__pycache__/__init__.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/typeCache/__pycache__/TypeCache.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/core/typeCache/__pycache__/__init__.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/utils/LazyModuleLoader.py +8 -11
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/utils/__pycache__/Command.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/utils/__pycache__/CommandType.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/utils/__pycache__/ConnectionType.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/utils/__pycache__/ExceptionType.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/utils/__pycache__/LazyModuleLoader.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/utils/__pycache__/RuntimeLogger.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/utils/__pycache__/RuntimeName.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/utils/__pycache__/StringEncodingMode.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/utils/__pycache__/Type.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/utils/__pycache__/TypesHandler.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/utils/__pycache__/UtilsConst.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/utils/__pycache__/__init__.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/utils/connectionData/__pycache__/IConnectionData.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/utils/connectionData/__pycache__/InMemoryConnectionData.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/utils/connectionData/__pycache__/__init__.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/utils/exception/ExceptionSerializer.py +1 -1
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/utils/exception/__pycache__/ExceptionSerializer.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/utils/exception/__pycache__/ExceptionThrower.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/utils/exception/__pycache__/JavonetException.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/utils/exception/__pycache__/__init__.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/utils/messageHelper/__pycache__/MessageHelper.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/javonet/utils/messageHelper/__pycache__/__init__.cpython-312.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/version.txt +1 -1
- data/lib/javonet-ruby-sdk/core/handler/load_library_handler.rb +22 -9
- data/lib/javonet-ruby-sdk/sdk/config_runtime_factory.rb +8 -0
- data/lib/javonet-ruby-sdk/utils/exceptions/exception_serializer.rb +0 -1
- metadata +6 -2
|
@@ -14,81 +14,90 @@ use utils\type\JType;
|
|
|
14
14
|
|
|
15
15
|
final class CommandDeserializer
|
|
16
16
|
{
|
|
17
|
-
private
|
|
18
|
-
private Command $command;
|
|
19
|
-
private array $buffer;
|
|
20
|
-
|
|
21
|
-
public function __construct(
|
|
22
|
-
array $buffer
|
|
23
|
-
) {
|
|
24
|
-
$this->command = new Command(
|
|
25
|
-
new RuntimeName($buffer[0]),
|
|
26
|
-
new CommandType($buffer[10])
|
|
27
|
-
);
|
|
28
|
-
$this->buffer = $buffer;
|
|
29
|
-
$this->position = 11;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
private function isNotEnd(): bool
|
|
17
|
+
private function __construct()
|
|
33
18
|
{
|
|
34
|
-
return $this->position < count($this->buffer);
|
|
35
19
|
}
|
|
36
20
|
|
|
37
|
-
|
|
21
|
+
/**
|
|
22
|
+
* @param int[] $buffer
|
|
23
|
+
*/
|
|
24
|
+
public static function deserialize(array $buffer): CommandInterface
|
|
38
25
|
{
|
|
39
|
-
|
|
40
|
-
|
|
26
|
+
$position = 11;
|
|
27
|
+
$bufferLength = count($buffer);
|
|
28
|
+
|
|
29
|
+
$runtimeName = new RuntimeName($buffer[0]);
|
|
30
|
+
$commandType = new CommandType($buffer[10]);
|
|
31
|
+
$payload = [];
|
|
32
|
+
|
|
33
|
+
while ($position < $bufferLength) {
|
|
34
|
+
$payload[] = self::readObject($buffer, $position);
|
|
41
35
|
}
|
|
42
36
|
|
|
43
|
-
|
|
37
|
+
// Single Command instance created once with full payload
|
|
38
|
+
return new Command($runtimeName, $commandType, $payload);
|
|
44
39
|
}
|
|
45
40
|
|
|
46
|
-
|
|
41
|
+
/**
|
|
42
|
+
* @param int[] $buffer
|
|
43
|
+
* @return mixed
|
|
44
|
+
*/
|
|
45
|
+
private static function readObject(array $buffer, int &$position)
|
|
47
46
|
{
|
|
48
|
-
$typeByte = new JType($
|
|
47
|
+
$typeByte = new JType($buffer[$position]);
|
|
49
48
|
|
|
50
49
|
switch ($typeByte->getValue()) {
|
|
51
50
|
case JType::JAVONET_COMMAND:
|
|
52
|
-
return
|
|
51
|
+
return self::readCommand($buffer, $position);
|
|
53
52
|
case JType::JAVONET_STRING:
|
|
54
|
-
return
|
|
53
|
+
return self::readString($buffer, $position);
|
|
55
54
|
case JType::JAVONET_INTEGER:
|
|
56
|
-
return
|
|
55
|
+
return self::readInt($buffer, $position);
|
|
57
56
|
case JType::JAVONET_BOOLEAN:
|
|
58
|
-
return
|
|
57
|
+
return self::readBool($buffer, $position);
|
|
59
58
|
case JType::JAVONET_FLOAT:
|
|
60
|
-
return
|
|
59
|
+
return self::readFloat($buffer, $position);
|
|
61
60
|
case JType::JAVONET_BYTE:
|
|
62
|
-
return
|
|
61
|
+
return self::readByte($buffer, $position);
|
|
63
62
|
case JType::JAVONET_CHAR:
|
|
64
|
-
return
|
|
63
|
+
return self::readChar($buffer, $position);
|
|
65
64
|
case JType::JAVONET_LONG:
|
|
66
|
-
return
|
|
65
|
+
return self::readLong($buffer, $position);
|
|
67
66
|
case JType::JAVONET_DOUBLE:
|
|
68
|
-
return
|
|
67
|
+
return self::readDouble($buffer, $position);
|
|
69
68
|
case JType::JAVONET_UNSIGNED_LONG_LONG:
|
|
70
|
-
return
|
|
69
|
+
return self::readUnsignedLong($buffer, $position);
|
|
71
70
|
case JType::JAVONET_UNSIGNED_INTEGER:
|
|
72
|
-
return
|
|
71
|
+
return self::readUnsignedInteger($buffer, $position);
|
|
73
72
|
case JType::JAVONET_NULL:
|
|
74
|
-
return
|
|
73
|
+
return self::readNull($buffer, $position);
|
|
75
74
|
default:
|
|
76
|
-
throw new TypeByteNotSupportedException($
|
|
75
|
+
throw new TypeByteNotSupportedException($buffer[$position]);
|
|
77
76
|
}
|
|
78
77
|
}
|
|
79
78
|
|
|
80
|
-
|
|
79
|
+
/**
|
|
80
|
+
* @param int[] $buffer
|
|
81
|
+
*/
|
|
82
|
+
protected static function readCommand(array $buffer, int &$position): CommandInterface
|
|
81
83
|
{
|
|
82
|
-
$p = $
|
|
83
|
-
|
|
84
|
-
$
|
|
85
|
-
|
|
84
|
+
$p = $position;
|
|
85
|
+
|
|
86
|
+
$numberOfElementsInPayload = TypeDeserializer::deserializeInt([
|
|
87
|
+
$buffer[$p + 1],
|
|
88
|
+
$buffer[$p + 2],
|
|
89
|
+
$buffer[$p + 3],
|
|
90
|
+
$buffer[$p + 4],
|
|
91
|
+
]);
|
|
92
|
+
|
|
93
|
+
$runtime = $buffer[$p + 5];
|
|
94
|
+
$commandType = $buffer[$p + 6];
|
|
86
95
|
|
|
87
|
-
$
|
|
96
|
+
$position += 7;
|
|
88
97
|
|
|
89
98
|
$payload = [];
|
|
90
99
|
for ($i = 0; $i < $numberOfElementsInPayload; $i++) {
|
|
91
|
-
$payload[$i] =
|
|
100
|
+
$payload[$i] = self::readObject($buffer, $position);
|
|
92
101
|
}
|
|
93
102
|
|
|
94
103
|
return new Command(
|
|
@@ -98,114 +107,218 @@ final class CommandDeserializer
|
|
|
98
107
|
);
|
|
99
108
|
}
|
|
100
109
|
|
|
101
|
-
|
|
110
|
+
/**
|
|
111
|
+
* @param int[] $buffer
|
|
112
|
+
*/
|
|
113
|
+
private static function readString(array $buffer, int &$position): string
|
|
102
114
|
{
|
|
103
|
-
$p = $
|
|
104
|
-
|
|
105
|
-
$
|
|
106
|
-
|
|
107
|
-
$
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
115
|
+
$p = $position;
|
|
116
|
+
|
|
117
|
+
$stringEncodingMode = new StringEncodingMode($buffer[$p + 1]);
|
|
118
|
+
|
|
119
|
+
$size = TypeDeserializer::deserializeInt([
|
|
120
|
+
$buffer[$p + 2],
|
|
121
|
+
$buffer[$p + 3],
|
|
122
|
+
$buffer[$p + 4],
|
|
123
|
+
$buffer[$p + 5],
|
|
124
|
+
]);
|
|
125
|
+
|
|
126
|
+
$position += 6;
|
|
127
|
+
$p = $position;
|
|
128
|
+
$position += $size;
|
|
129
|
+
|
|
130
|
+
// For strings, size can be large, so array_slice is acceptable here.
|
|
131
|
+
$bytes = array_slice($buffer, $p, $size);
|
|
132
|
+
|
|
133
|
+
return TypeDeserializer::deserializeString($stringEncodingMode, $bytes);
|
|
111
134
|
}
|
|
112
135
|
|
|
113
|
-
|
|
136
|
+
/**
|
|
137
|
+
* @param int[] $buffer
|
|
138
|
+
*/
|
|
139
|
+
private static function readInt(array $buffer, int &$position): int
|
|
114
140
|
{
|
|
115
141
|
$size = 4;
|
|
116
|
-
$
|
|
117
|
-
$p = $
|
|
118
|
-
$
|
|
119
|
-
|
|
120
|
-
|
|
142
|
+
$position += 2;
|
|
143
|
+
$p = $position;
|
|
144
|
+
$position += $size;
|
|
145
|
+
|
|
146
|
+
$bytes = [
|
|
147
|
+
$buffer[$p],
|
|
148
|
+
$buffer[$p + 1],
|
|
149
|
+
$buffer[$p + 2],
|
|
150
|
+
$buffer[$p + 3],
|
|
151
|
+
];
|
|
152
|
+
|
|
153
|
+
return TypeDeserializer::deserializeInt($bytes);
|
|
121
154
|
}
|
|
122
155
|
|
|
123
|
-
|
|
156
|
+
/**
|
|
157
|
+
* @param int[] $buffer
|
|
158
|
+
*/
|
|
159
|
+
private static function readBool(array $buffer, int &$position): bool
|
|
124
160
|
{
|
|
125
161
|
$size = 1;
|
|
126
|
-
$
|
|
127
|
-
$p = $
|
|
128
|
-
$
|
|
162
|
+
$position += 2;
|
|
163
|
+
$p = $position;
|
|
164
|
+
$position += $size;
|
|
165
|
+
|
|
166
|
+
// Keep passing array to match existing TypeDeserializer signature
|
|
167
|
+
$bytes = [$buffer[$p]];
|
|
129
168
|
|
|
130
|
-
return TypeDeserializer::deserializeBool(
|
|
169
|
+
return TypeDeserializer::deserializeBool($bytes);
|
|
131
170
|
}
|
|
132
171
|
|
|
133
|
-
|
|
172
|
+
/**
|
|
173
|
+
* @param int[] $buffer
|
|
174
|
+
*/
|
|
175
|
+
private static function readFloat(array $buffer, int &$position): float
|
|
134
176
|
{
|
|
135
177
|
$size = 4;
|
|
136
|
-
$
|
|
137
|
-
$p = $
|
|
138
|
-
$
|
|
139
|
-
|
|
140
|
-
|
|
178
|
+
$position += 2;
|
|
179
|
+
$p = $position;
|
|
180
|
+
$position += $size;
|
|
181
|
+
|
|
182
|
+
$bytes = [
|
|
183
|
+
$buffer[$p],
|
|
184
|
+
$buffer[$p + 1],
|
|
185
|
+
$buffer[$p + 2],
|
|
186
|
+
$buffer[$p + 3],
|
|
187
|
+
];
|
|
188
|
+
|
|
189
|
+
return TypeDeserializer::deserializeFloat($bytes);
|
|
141
190
|
}
|
|
142
191
|
|
|
143
|
-
|
|
192
|
+
/**
|
|
193
|
+
* @param int[] $buffer
|
|
194
|
+
*/
|
|
195
|
+
private static function readByte(array $buffer, int &$position): int
|
|
144
196
|
{
|
|
145
197
|
$size = 1;
|
|
146
|
-
$
|
|
147
|
-
$p = $
|
|
148
|
-
$
|
|
198
|
+
$position += 2;
|
|
199
|
+
$p = $position;
|
|
200
|
+
$position += $size;
|
|
149
201
|
|
|
150
|
-
return TypeDeserializer::deserializeByte($
|
|
202
|
+
return TypeDeserializer::deserializeByte($buffer[$p]);
|
|
151
203
|
}
|
|
152
204
|
|
|
153
|
-
|
|
205
|
+
/**
|
|
206
|
+
* @param int[] $buffer
|
|
207
|
+
*/
|
|
208
|
+
private static function readChar(array $buffer, int &$position): string
|
|
154
209
|
{
|
|
155
210
|
$size = 1;
|
|
156
|
-
$
|
|
157
|
-
$p = $
|
|
158
|
-
$
|
|
211
|
+
$position += 2;
|
|
212
|
+
$p = $position;
|
|
213
|
+
$position += $size;
|
|
159
214
|
|
|
160
|
-
return TypeDeserializer::deserializeChar($
|
|
215
|
+
return TypeDeserializer::deserializeChar($buffer[$p]);
|
|
161
216
|
}
|
|
162
217
|
|
|
163
|
-
|
|
218
|
+
/**
|
|
219
|
+
* @param int[] $buffer
|
|
220
|
+
*/
|
|
221
|
+
private static function readLong(array $buffer, int &$position): int
|
|
164
222
|
{
|
|
165
223
|
$size = 8;
|
|
166
|
-
$
|
|
167
|
-
$p = $
|
|
168
|
-
$
|
|
169
|
-
|
|
170
|
-
|
|
224
|
+
$position += 2;
|
|
225
|
+
$p = $position;
|
|
226
|
+
$position += $size;
|
|
227
|
+
|
|
228
|
+
$bytes = [
|
|
229
|
+
$buffer[$p],
|
|
230
|
+
$buffer[$p + 1],
|
|
231
|
+
$buffer[$p + 2],
|
|
232
|
+
$buffer[$p + 3],
|
|
233
|
+
$buffer[$p + 4],
|
|
234
|
+
$buffer[$p + 5],
|
|
235
|
+
$buffer[$p + 6],
|
|
236
|
+
$buffer[$p + 7],
|
|
237
|
+
];
|
|
238
|
+
|
|
239
|
+
return TypeDeserializer::deserializeLong($bytes);
|
|
171
240
|
}
|
|
172
241
|
|
|
173
|
-
|
|
242
|
+
/**
|
|
243
|
+
* @param int[] $buffer
|
|
244
|
+
*/
|
|
245
|
+
private static function readDouble(array $buffer, int &$position): float
|
|
174
246
|
{
|
|
175
247
|
$size = 8;
|
|
176
|
-
$
|
|
177
|
-
$p = $
|
|
178
|
-
$
|
|
179
|
-
|
|
180
|
-
|
|
248
|
+
$position += 2;
|
|
249
|
+
$p = $position;
|
|
250
|
+
$position += $size;
|
|
251
|
+
|
|
252
|
+
$bytes = [
|
|
253
|
+
$buffer[$p],
|
|
254
|
+
$buffer[$p + 1],
|
|
255
|
+
$buffer[$p + 2],
|
|
256
|
+
$buffer[$p + 3],
|
|
257
|
+
$buffer[$p + 4],
|
|
258
|
+
$buffer[$p + 5],
|
|
259
|
+
$buffer[$p + 6],
|
|
260
|
+
$buffer[$p + 7],
|
|
261
|
+
];
|
|
262
|
+
|
|
263
|
+
return TypeDeserializer::deserializeDouble($bytes);
|
|
181
264
|
}
|
|
182
265
|
|
|
183
|
-
|
|
266
|
+
/**
|
|
267
|
+
* @param int[] $buffer
|
|
268
|
+
*/
|
|
269
|
+
private static function readUnsignedLong(array $buffer, int &$position): int
|
|
184
270
|
{
|
|
185
271
|
$size = 8;
|
|
186
|
-
$
|
|
187
|
-
$p = $
|
|
188
|
-
$
|
|
189
|
-
|
|
190
|
-
|
|
272
|
+
$position += 2;
|
|
273
|
+
$p = $position;
|
|
274
|
+
$position += $size;
|
|
275
|
+
|
|
276
|
+
$bytes = [
|
|
277
|
+
$buffer[$p],
|
|
278
|
+
$buffer[$p + 1],
|
|
279
|
+
$buffer[$p + 2],
|
|
280
|
+
$buffer[$p + 3],
|
|
281
|
+
$buffer[$p + 4],
|
|
282
|
+
$buffer[$p + 5],
|
|
283
|
+
$buffer[$p + 6],
|
|
284
|
+
$buffer[$p + 7],
|
|
285
|
+
];
|
|
286
|
+
|
|
287
|
+
return TypeDeserializer::deserializeLong($bytes);
|
|
191
288
|
}
|
|
192
289
|
|
|
193
|
-
|
|
290
|
+
/**
|
|
291
|
+
* @param int[] $buffer
|
|
292
|
+
*/
|
|
293
|
+
private static function readUnsignedInteger(array $buffer, int &$position): int
|
|
194
294
|
{
|
|
195
295
|
$size = 4;
|
|
196
|
-
$
|
|
197
|
-
$p = $
|
|
198
|
-
$
|
|
199
|
-
|
|
200
|
-
|
|
296
|
+
$position += 2;
|
|
297
|
+
$p = $position;
|
|
298
|
+
$position += $size;
|
|
299
|
+
|
|
300
|
+
$bytes = [
|
|
301
|
+
$buffer[$p],
|
|
302
|
+
$buffer[$p + 1],
|
|
303
|
+
$buffer[$p + 2],
|
|
304
|
+
$buffer[$p + 3],
|
|
305
|
+
];
|
|
306
|
+
|
|
307
|
+
return TypeDeserializer::deserializeInt($bytes);
|
|
201
308
|
}
|
|
202
309
|
|
|
203
|
-
|
|
310
|
+
/**
|
|
311
|
+
* @param int[] $buffer
|
|
312
|
+
* @return mixed
|
|
313
|
+
*/
|
|
314
|
+
private static function readNull(array $buffer, int &$position)
|
|
204
315
|
{
|
|
205
316
|
$size = 1;
|
|
206
|
-
$
|
|
207
|
-
$
|
|
317
|
+
$position += 2;
|
|
318
|
+
$position += $size;
|
|
208
319
|
|
|
320
|
+
// Current TypeDeserializer::deserializeNull() in your PHP version
|
|
321
|
+
// takes no args; keep that behavior.
|
|
209
322
|
return TypeDeserializer::deserializeNull();
|
|
210
323
|
}
|
|
211
324
|
}
|
|
@@ -16,53 +16,95 @@ use utils\TypesHandler;
|
|
|
16
16
|
|
|
17
17
|
final class CommandSerializer
|
|
18
18
|
{
|
|
19
|
+
private const DEFAULT_SERIALIZER_CONNECTION_DATA = [0, 0, 0, 0, 0, 0, 0];
|
|
20
|
+
|
|
19
21
|
private function __construct()
|
|
20
22
|
{
|
|
21
23
|
}
|
|
22
24
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
+
/**
|
|
26
|
+
* Serialize command to array of bytes (ints 0–255).
|
|
27
|
+
*
|
|
28
|
+
* @return int[]
|
|
29
|
+
*/
|
|
25
30
|
public static function serialize(CommandInterface $rootCommand, ?IConnectionData $connectionData): array
|
|
26
31
|
{
|
|
27
32
|
try {
|
|
33
|
+
$buffer = [];
|
|
34
|
+
|
|
35
|
+
// Write runtime and version
|
|
28
36
|
$buffer[] = $rootCommand->getRuntimeName()->getValue();
|
|
29
37
|
$buffer[] = 0; // runtimeVersion
|
|
30
|
-
array_push($buffer, ...self::getDataByConnectionData($connectionData));
|
|
31
|
-
$buffer[] = RuntimeName::PHP;
|
|
32
|
-
$buffer[] = $rootCommand->getCommandType()->getValue();
|
|
33
38
|
|
|
39
|
+
// Write connection data
|
|
40
|
+
self::insertIntoBuffer($buffer, self::getDataByConnectionData($connectionData));
|
|
41
|
+
|
|
42
|
+
// Write runtime name and command type header for PHP runtime
|
|
43
|
+
self::insertIntoBuffer($buffer, [
|
|
44
|
+
RuntimeName::PHP,
|
|
45
|
+
$rootCommand->getCommandType()->getValue(),
|
|
46
|
+
]);
|
|
47
|
+
|
|
48
|
+
// Serialize payload recursively
|
|
34
49
|
self::serializeRecursively($rootCommand, $buffer);
|
|
35
50
|
|
|
36
51
|
return $buffer;
|
|
37
52
|
} catch (Exception $e) {
|
|
38
|
-
throw new RuntimeException(
|
|
53
|
+
throw new RuntimeException(
|
|
54
|
+
'Error during serialization: ' . $e->getMessage(),
|
|
55
|
+
0,
|
|
56
|
+
$e
|
|
57
|
+
);
|
|
39
58
|
}
|
|
40
59
|
}
|
|
41
60
|
|
|
61
|
+
/**
|
|
62
|
+
* @return int[]
|
|
63
|
+
*/
|
|
42
64
|
private static function getDataByConnectionData(?IConnectionData $connectionData): array
|
|
43
65
|
{
|
|
44
|
-
if (
|
|
66
|
+
if ($connectionData !== null) {
|
|
45
67
|
return $connectionData->serializeConnectionData();
|
|
46
68
|
}
|
|
47
69
|
|
|
48
70
|
return self::DEFAULT_SERIALIZER_CONNECTION_DATA;
|
|
49
71
|
}
|
|
50
72
|
|
|
73
|
+
/**
|
|
74
|
+
* @param int[] $buffer
|
|
75
|
+
* @param int[] $data
|
|
76
|
+
*/
|
|
77
|
+
private static function insertIntoBuffer(array &$buffer, array $data): void
|
|
78
|
+
{
|
|
79
|
+
foreach ($data as $value) {
|
|
80
|
+
$buffer[] = $value;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* @param int[] $buffer
|
|
86
|
+
*/
|
|
51
87
|
private static function serializeRecursively(CommandInterface $command, array &$buffer): void
|
|
52
88
|
{
|
|
53
89
|
foreach ($command->getPayload() as $payloadItem) {
|
|
54
90
|
if ($payloadItem instanceof CommandInterface) {
|
|
55
|
-
|
|
91
|
+
// Nested command
|
|
92
|
+
self::insertIntoBuffer($buffer, TypeSerializer::serializeCommand($payloadItem));
|
|
56
93
|
self::serializeRecursively($payloadItem, $buffer);
|
|
57
|
-
}
|
|
58
|
-
|
|
94
|
+
} elseif (TypesHandler::isSimpleType($payloadItem)) {
|
|
95
|
+
// Primitive or simple type
|
|
96
|
+
self::insertIntoBuffer($buffer, TypeSerializer::serializePrimitive($payloadItem));
|
|
59
97
|
} else {
|
|
98
|
+
// Complex object – serialize as reference command
|
|
99
|
+
$referenceId = ReferencesCache::getInstance()->cacheReference($payloadItem);
|
|
100
|
+
|
|
60
101
|
$refCommand = new Command(
|
|
61
|
-
|
|
102
|
+
new RuntimeName(RuntimeName::PHP),
|
|
62
103
|
CommandType::REFERENCE(),
|
|
63
|
-
|
|
104
|
+
$referenceId
|
|
64
105
|
);
|
|
65
|
-
|
|
106
|
+
|
|
107
|
+
self::insertIntoBuffer($buffer, TypeSerializer::serializeCommand($refCommand));
|
|
66
108
|
self::serializeRecursively($refCommand, $buffer);
|
|
67
109
|
}
|
|
68
110
|
}
|
|
@@ -11,18 +11,23 @@ final class Command implements CommandInterface
|
|
|
11
11
|
{
|
|
12
12
|
private RuntimeName $runtimeName;
|
|
13
13
|
private CommandType $commandType;
|
|
14
|
+
/** @var array<mixed> */
|
|
14
15
|
private array $payload;
|
|
15
16
|
|
|
16
17
|
public function __construct(
|
|
17
18
|
RuntimeName $runtimeName,
|
|
18
19
|
CommandType $commandType,
|
|
19
|
-
|
|
20
|
+
...$payload
|
|
20
21
|
) {
|
|
21
22
|
$this->runtimeName = $runtimeName;
|
|
22
23
|
$this->commandType = $commandType;
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
|
|
25
|
+
// If a single array is passed, treat it as the payload itself.
|
|
26
|
+
if (count($payload) === 1 && is_array($payload[0])) {
|
|
27
|
+
$this->payload = $payload[0];
|
|
28
|
+
} else {
|
|
29
|
+
$this->payload = $payload;
|
|
30
|
+
}
|
|
26
31
|
}
|
|
27
32
|
|
|
28
33
|
/**
|
|
@@ -30,7 +35,11 @@ final class Command implements CommandInterface
|
|
|
30
35
|
*/
|
|
31
36
|
public function addArgToPayload($arg): CommandInterface
|
|
32
37
|
{
|
|
33
|
-
return new Command
|
|
38
|
+
// Keep semantics (return new Command) but avoid array_merge overhead.
|
|
39
|
+
$newPayload = $this->payload;
|
|
40
|
+
$newPayload[] = $arg;
|
|
41
|
+
|
|
42
|
+
return new Command($this->runtimeName, $this->commandType, $newPayload);
|
|
34
43
|
}
|
|
35
44
|
|
|
36
45
|
/**
|
|
@@ -51,6 +60,9 @@ final class Command implements CommandInterface
|
|
|
51
60
|
return $this->commandType;
|
|
52
61
|
}
|
|
53
62
|
|
|
63
|
+
/**
|
|
64
|
+
* @return array<mixed>
|
|
65
|
+
*/
|
|
54
66
|
public function getPayload(): array
|
|
55
67
|
{
|
|
56
68
|
return $this->payload;
|
|
@@ -84,14 +96,14 @@ final class Command implements CommandInterface
|
|
|
84
96
|
$result .= ' CommandType: ';
|
|
85
97
|
$result .= $this->commandType->getName();
|
|
86
98
|
$result .= ' Payload: ';
|
|
87
|
-
json_encode($this->payload);
|
|
99
|
+
$result .= json_encode($this->payload);
|
|
88
100
|
|
|
89
101
|
return $result;
|
|
90
102
|
} catch (Exception $e) {
|
|
91
103
|
return 'Error while converting command to string: ' . $e->getMessage();
|
|
92
104
|
}
|
|
93
105
|
}
|
|
94
|
-
|
|
106
|
+
|
|
95
107
|
/**
|
|
96
108
|
* @param mixed $response
|
|
97
109
|
*/
|
|
@@ -116,7 +128,11 @@ final class Command implements CommandInterface
|
|
|
116
128
|
return new self($this->runtimeName, $this->commandType, $this->payload);
|
|
117
129
|
}
|
|
118
130
|
|
|
119
|
-
return new self(
|
|
131
|
+
return new self(
|
|
132
|
+
$this->runtimeName,
|
|
133
|
+
$this->commandType,
|
|
134
|
+
[$currentCommand, ...$this->payload]
|
|
135
|
+
);
|
|
120
136
|
}
|
|
121
137
|
|
|
122
138
|
/**
|
|
@@ -147,15 +163,17 @@ final class Command implements CommandInterface
|
|
|
147
163
|
if (!$payloadItem->equals($elementPayloadItem)) {
|
|
148
164
|
return false;
|
|
149
165
|
}
|
|
166
|
+
continue;
|
|
150
167
|
}
|
|
151
168
|
|
|
152
169
|
if (is_object($payloadItem) && method_exists($payloadItem, 'equals') && is_object($elementPayloadItem)) {
|
|
153
170
|
if (!$payloadItem->equals($elementPayloadItem)) {
|
|
154
171
|
return false;
|
|
155
172
|
}
|
|
173
|
+
continue;
|
|
156
174
|
}
|
|
157
175
|
|
|
158
|
-
|
|
176
|
+
if ($payloadItem !== $elementPayloadItem) {
|
|
159
177
|
return false;
|
|
160
178
|
}
|
|
161
179
|
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -47,7 +47,7 @@ class GetTypeHandler(AbstractCommandHandler):
|
|
|
47
47
|
exc_type, exc_value = type(e), e
|
|
48
48
|
sys_path = "\n".join(sys.path)
|
|
49
49
|
available_types = "\n".join(self.get_all_available_types())
|
|
50
|
-
new_message = str(e) + "\nMake sure
|
|
50
|
+
new_message = str(e) + "\nMake sure that your python solution is in one of this directories:\n" + sys_path + "\n\nAvailable user types:\n" + available_types + "\n\n"
|
|
51
51
|
new_exc = exc_type(new_message).with_traceback(e.__traceback__)
|
|
52
52
|
raise new_exc from None
|
|
53
53
|
|
|
@@ -75,7 +75,7 @@ class GetTypeHandler(AbstractCommandHandler):
|
|
|
75
75
|
def get_all_available_types(self):
|
|
76
76
|
"""Get all available types without loading/executing any modules."""
|
|
77
77
|
available_types = set()
|
|
78
|
-
for directory in LoadLibraryHandler.
|
|
78
|
+
for directory in LoadLibraryHandler.loaded_dir_and_files:
|
|
79
79
|
for root, _, files in os.walk(directory):
|
|
80
80
|
if "Binaries" in root:
|
|
81
81
|
continue
|