javonet-ruby-sdk 2.1.12 → 2.1.13
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/Rakefile +3 -3
- data/VERSION +1 -1
- data/javonet-ruby-sdk.gemspec +11 -12
- data/lib/javonet-ruby-sdk/Binaries/Jvm/Linux/X64/JavonetJvmRuntime.jar +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Jvm/MacOs/X64/JavonetJvmRuntime.jar +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Jvm/Windows/X64/JavonetJvmRuntime.jar +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Linux/X64/NetVersion80LatestPatch.runtimeconfig.json +10 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Linux/X64/NetVersionLatest.runtimeconfig.json +2 -2
- 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/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/MacOs/X64/NetVersion80LatestPatch.runtimeconfig.json +10 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/MacOs/X64/NetVersionLatest.runtimeconfig.json +2 -2
- 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/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/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/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/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/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/NetVersion80LatestPatch.runtimeconfig.json +10 -0
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X64/NetVersionLatest.runtimeconfig.json +2 -2
- data/lib/javonet-ruby-sdk/Binaries/Native/Windows/X64/Utils.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Netcore/Linux/X64/Javonet.Netcore.Core.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Netcore/Linux/X64/Javonet.Netcore.Utils.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Netcore/MacOs/X64/Javonet.Netcore.Core.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Netcore/MacOs/X64/Javonet.Netcore.Utils.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Netcore/Windows/X64/Javonet.Netcore.Core.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Netcore/Windows/X64/Javonet.Netcore.Utils.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/Linux/X64/core/handler/ValueHandler.js +4 -0
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/Linux/X64/core/interpreter/Interpreter.js +17 -9
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/Linux/X64/core/protocol/CommandDeserializer.js +160 -0
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/Linux/X64/core/protocol/{CommandEncoder.js → CommandSerializer.js} +5 -5
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/Linux/X64/core/protocol/TypeDeserializer.js +77 -0
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/Linux/X64/core/protocol/TypeSerializer.js +126 -0
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/Linux/X64/core/receiver/Receiver.js +1 -4
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/MacOs/X64/core/handler/ValueHandler.js +4 -0
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/MacOs/X64/core/interpreter/Interpreter.js +17 -9
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/MacOs/X64/core/protocol/CommandDeserializer.js +160 -0
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/MacOs/X64/core/protocol/{CommandEncoder.js → CommandSerializer.js} +5 -5
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/MacOs/X64/core/protocol/TypeDeserializer.js +77 -0
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/MacOs/X64/core/protocol/TypeSerializer.js +126 -0
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/MacOs/X64/core/receiver/Receiver.js +1 -4
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/Windows/X64/core/handler/ValueHandler.js +4 -0
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/Windows/X64/core/interpreter/Interpreter.js +17 -9
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/Windows/X64/core/protocol/CommandDeserializer.js +160 -0
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/Windows/X64/core/protocol/{CommandEncoder.js → CommandSerializer.js} +5 -5
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/Windows/X64/core/protocol/TypeDeserializer.js +77 -0
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/Windows/X64/core/protocol/TypeSerializer.js +126 -0
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/Windows/X64/core/receiver/Receiver.js +1 -4
- 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 +89 -89
- data/lib/javonet-ruby-sdk/Binaries/Perl/MacOs/X64/deps/lib/perl5/darwin-thread-multi-2level/auto/share/dist/FFI-Platypus/include/ffi_platypus_config.h +1 -1
- data/lib/javonet-ruby-sdk/Binaries/Perl/MacOs/X64/deps/lib/perl5/darwin-thread-multi-2level/perllocal.pod +88 -88
- 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 +18 -18
- data/lib/javonet-ruby-sdk/Binaries/Python/Linux/X64/javonet/core/interpreter/Interpreter.py +0 -1
- data/lib/javonet-ruby-sdk/Binaries/Python/Linux/X64/javonet/core/protocol/CommandSerializer.py +6 -9
- data/lib/javonet-ruby-sdk/Binaries/Python/Linux/X64/javonet/core/protocol/TypeDeserializer.py +2 -2
- data/lib/javonet-ruby-sdk/Binaries/Python/MacOs/X64/javonet/core/interpreter/Interpreter.py +0 -1
- data/lib/javonet-ruby-sdk/Binaries/Python/MacOs/X64/javonet/core/protocol/CommandSerializer.py +6 -9
- data/lib/javonet-ruby-sdk/Binaries/Python/MacOs/X64/javonet/core/protocol/TypeDeserializer.py +2 -2
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/__pycache__/__init__.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/generator/__pycache__/__init__.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/generator/internal/__pycache__/PythonStringBuilder.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/generator/internal/__pycache__/__init__.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/handler/CommandHandler/__pycache__/AbstractCommandHandler.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/handler/CommandHandler/__pycache__/ArrayGetItemHandler.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/handler/CommandHandler/__pycache__/ArrayGetRankHandler.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/handler/CommandHandler/__pycache__/ArrayGetSizeHandler.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/handler/CommandHandler/__pycache__/ArrayHandler.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/handler/CommandHandler/__pycache__/ArraySetItemHandler.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/handler/CommandHandler/__pycache__/CastingHandler.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/handler/CommandHandler/__pycache__/CreateClassInstanceHandler.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/handler/CommandHandler/__pycache__/DestructReferenceHandler.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/handler/CommandHandler/__pycache__/GetEnumItemHandler.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/handler/CommandHandler/__pycache__/GetEnumNameHandler.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/handler/CommandHandler/__pycache__/GetEnumValueHandler.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/handler/CommandHandler/__pycache__/GetInstanceFieldHandler.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/handler/CommandHandler/__pycache__/GetStaticFieldHandler.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/handler/CommandHandler/__pycache__/GetTypeHandler.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/handler/CommandHandler/__pycache__/InvokeInstanceMethodHandler.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/handler/CommandHandler/__pycache__/InvokeStaticMethodHandler.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/handler/CommandHandler/__pycache__/LoadLibraryHandler.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/handler/CommandHandler/__pycache__/ResolveInstanceHandler.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/handler/CommandHandler/__pycache__/SetInstanceFieldHandler.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/handler/CommandHandler/__pycache__/SetStaticFieldHandler.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/handler/CommandHandler/__pycache__/ValueHandler.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/handler/CommandHandler/__pycache__/__init__.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/handler/__pycache__/AbstractHandler.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/handler/__pycache__/Handler.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/handler/__pycache__/HandlerDictionary.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/handler/__pycache__/ReferencesCache.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/handler/__pycache__/__init__.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/interpreter/Interpreter.py +0 -1
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/interpreter/__pycache__/Interpreter.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/interpreter/__pycache__/__init__.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/protocol/CommandSerializer.py +6 -9
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/protocol/TypeDeserializer.py +2 -2
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/protocol/__pycache__/CommandDeserializer.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/protocol/__pycache__/CommandSerializer.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/protocol/__pycache__/TypeDeserializer.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/protocol/__pycache__/TypeSerializer.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/protocol/__pycache__/__init__.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/receiver/__pycache__/Receiver.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/core/receiver/__pycache__/__init__.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/utils/__pycache__/Command.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/utils/__pycache__/CommandType.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/utils/__pycache__/ConnectionType.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/utils/__pycache__/ExceptionType.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/utils/__pycache__/RuntimeName.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/utils/__pycache__/StringEncodingMode.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/utils/__pycache__/Type.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/utils/__pycache__/__init__.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/utils/exception/__pycache__/ExceptionSerializer.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Python/Windows/X64/javonet/utils/exception/__pycache__/__init__.cpython-311.pyc +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Ruby/Linux/X64/core/interpreter/interpreter.rb +4 -4
- data/lib/javonet-ruby-sdk/Binaries/Ruby/Linux/X64/core/protocol/command_deserializer.rb +150 -115
- data/lib/javonet-ruby-sdk/Binaries/Ruby/Linux/X64/core/protocol/command_serializer.rb +23 -24
- data/lib/javonet-ruby-sdk/Binaries/Ruby/Linux/X64/core/protocol/type_deserializer.rb +35 -48
- data/lib/javonet-ruby-sdk/Binaries/Ruby/Linux/X64/core/protocol/type_serializer.rb +43 -40
- data/lib/javonet-ruby-sdk/Binaries/Ruby/Linux/X64/utils/type.rb +1 -1
- data/lib/javonet-ruby-sdk/Binaries/Ruby/MacOs/X64/core/interpreter/interpreter.rb +4 -4
- data/lib/javonet-ruby-sdk/Binaries/Ruby/MacOs/X64/core/protocol/command_deserializer.rb +150 -115
- data/lib/javonet-ruby-sdk/Binaries/Ruby/MacOs/X64/core/protocol/command_serializer.rb +23 -24
- data/lib/javonet-ruby-sdk/Binaries/Ruby/MacOs/X64/core/protocol/type_deserializer.rb +35 -48
- data/lib/javonet-ruby-sdk/Binaries/Ruby/MacOs/X64/core/protocol/type_serializer.rb +43 -40
- data/lib/javonet-ruby-sdk/Binaries/Ruby/MacOs/X64/utils/type.rb +1 -1
- data/lib/javonet-ruby-sdk/Binaries/Ruby/Windows/X64/core/interpreter/interpreter.rb +4 -4
- data/lib/javonet-ruby-sdk/Binaries/Ruby/Windows/X64/core/protocol/command_deserializer.rb +150 -115
- data/lib/javonet-ruby-sdk/Binaries/Ruby/Windows/X64/core/protocol/command_serializer.rb +23 -24
- data/lib/javonet-ruby-sdk/Binaries/Ruby/Windows/X64/core/protocol/type_deserializer.rb +35 -48
- data/lib/javonet-ruby-sdk/Binaries/Ruby/Windows/X64/core/protocol/type_serializer.rb +43 -40
- data/lib/javonet-ruby-sdk/Binaries/Ruby/Windows/X64/utils/type.rb +1 -1
- data/lib/javonet-ruby-sdk/core/interpreter/interpreter.rb +4 -4
- data/lib/javonet-ruby-sdk/core/protocol/command_deserializer.rb +150 -115
- data/lib/javonet-ruby-sdk/core/protocol/command_serializer.rb +23 -24
- data/lib/javonet-ruby-sdk/core/protocol/type_deserializer.rb +35 -48
- data/lib/javonet-ruby-sdk/core/protocol/type_serializer.rb +43 -40
- data/lib/javonet-ruby-sdk/sdk/internal/invocation_context.rb +3 -1
- data/lib/javonet-ruby-sdk/utils/type.rb +1 -1
- metadata +59 -73
- data/lib/javonet-ruby-sdk/Binaries/Cpp/Linux/X64/libJavonetCppRuntime.so +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Cpp/MacOs/X64/libJavonetCppRuntime.dylib +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Cpp/Windows/X64/JavonetCppRuntime.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Go/Linux/X64/libJavonetGoRuntime.so +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Go/MacOs/X64/libJavonetGoRuntime.dylib +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Go/Windows/X64/JavonetGoRuntime.dll +0 -0
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/Linux/X64/core/protocol/CommandDecoder.js +0 -171
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/Linux/X64/core/protocol/TypeEncoder.js +0 -78
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/MacOs/X64/core/protocol/CommandDecoder.js +0 -171
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/MacOs/X64/core/protocol/TypeEncoder.js +0 -78
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/Windows/X64/core/protocol/CommandDecoder.js +0 -171
- data/lib/javonet-ruby-sdk/Binaries/Nodejs/Windows/X64/core/protocol/TypeEncoder.js +0 -78
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
const Command = require('../../utils/Command')
|
|
2
|
+
const Type = require('../../utils/Type')
|
|
3
|
+
const StringEncodingMode = require('../../utils/StringEncodingMode')
|
|
4
|
+
|
|
5
|
+
const util = require('util');
|
|
6
|
+
let encoder = new util.TextEncoder();
|
|
7
|
+
|
|
8
|
+
class TypeSerializer {
|
|
9
|
+
|
|
10
|
+
static encodePrimitive(payload_item) {
|
|
11
|
+
if (payload_item instanceof Command) {
|
|
12
|
+
return TypeSerializer.serializeCommand(payload_item)
|
|
13
|
+
} else if (typeof (payload_item) === 'number' || payload_item instanceof Number) {
|
|
14
|
+
if (Number.isInteger(payload_item)) {
|
|
15
|
+
return TypeSerializer.serializeInt(payload_item)
|
|
16
|
+
} else {
|
|
17
|
+
return TypeSerializer.serializeDouble(payload_item)
|
|
18
|
+
}
|
|
19
|
+
} else if (typeof (payload_item) === 'string' || payload_item instanceof String) {
|
|
20
|
+
return TypeSerializer.serializeString(payload_item)
|
|
21
|
+
} else if (typeof (payload_item) === 'boolean' || payload_item instanceof Boolean) {
|
|
22
|
+
return TypeSerializer.serializeBool(payload_item)
|
|
23
|
+
} else {
|
|
24
|
+
throw 'Unknown type - not supported in JavaScript'
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
static serializeCommand(command) {
|
|
29
|
+
const buffer = Buffer.alloc(7, command)
|
|
30
|
+
buffer.writeUInt8(Type.JAVONET_COMMAND, 0)
|
|
31
|
+
buffer.fill(Buffer.from(this.serializeIntValue(command.payload.length)), 1, 5)
|
|
32
|
+
buffer.writeUInt8(command.runtime, 5)
|
|
33
|
+
buffer.writeUInt8(command.commandType, 6)
|
|
34
|
+
return buffer
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
static serializeString(string_value) {
|
|
38
|
+
let bytes = encoder.encode(string_value)
|
|
39
|
+
const buffer = Buffer.alloc(6 + bytes.length)
|
|
40
|
+
buffer.writeUInt8(Type.JAVONET_STRING, 0)
|
|
41
|
+
buffer.writeUInt8(StringEncodingMode.UTF8, 1)
|
|
42
|
+
buffer.fill(Buffer.from(this.serializeIntValue(bytes.length)), 2, 6)
|
|
43
|
+
buffer.fill(Buffer.from(bytes), 6, 6 + bytes.length)
|
|
44
|
+
return buffer
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
static serializeInt(int_value) {
|
|
48
|
+
const buffer = Buffer.alloc(6)
|
|
49
|
+
buffer.writeUInt8(Type.JAVONET_INTEGER, 0)
|
|
50
|
+
buffer.writeUInt8(4, 1)
|
|
51
|
+
buffer.writeInt32LE(int_value, 2)
|
|
52
|
+
return buffer
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
static serializeBool(bool_value) {
|
|
56
|
+
const buffer = Buffer.alloc(3)
|
|
57
|
+
buffer.writeUInt8(Type.JAVONET_BOOLEAN, 0)
|
|
58
|
+
buffer.writeUInt8(1, 1)
|
|
59
|
+
buffer.writeUInt8(bool_value ? 1 : 0, 2)
|
|
60
|
+
return buffer
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
static serializeFloat(float_value) {
|
|
64
|
+
const buffer = Buffer.alloc(6)
|
|
65
|
+
buffer.writeUInt8(Type.JAVONET_FLOAT, 0)
|
|
66
|
+
buffer.writeUInt8(4, 1)
|
|
67
|
+
buffer.writeFloatLE(float_value, 2)
|
|
68
|
+
return buffer
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
static serializeByte(byte_value) {
|
|
72
|
+
const buffer = Buffer.alloc(3)
|
|
73
|
+
buffer.writeUInt8(Type.JAVONET_BYTE, 0)
|
|
74
|
+
buffer.writeUInt8(1, 1)
|
|
75
|
+
buffer.writeUInt8(byte_value, 2)
|
|
76
|
+
return buffer
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
static serializeChar(char_value) {
|
|
80
|
+
const buffer = Buffer.alloc(3)
|
|
81
|
+
buffer.writeUInt8(Type.JAVONET_CHAR, 0)
|
|
82
|
+
buffer.writeUInt8(1, 1)
|
|
83
|
+
buffer.writeUInt8(char_value, 2)
|
|
84
|
+
return buffer
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
static serializeLongLong(longlong_value) {
|
|
88
|
+
const buffer = Buffer.alloc(10)
|
|
89
|
+
buffer.writeUInt8(Type.JAVONET_LONG_LONG, 0)
|
|
90
|
+
buffer.writeUInt8(8, 1)
|
|
91
|
+
buffer.writeBigInt64LE(BigInt(longlong_value), 2)
|
|
92
|
+
return buffer
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
static serializeDouble(double_value) {
|
|
96
|
+
const buffer = Buffer.alloc(10)
|
|
97
|
+
buffer.writeUInt8(Type.JAVONET_DOUBLE, 0)
|
|
98
|
+
buffer.writeUInt8(8, 1)
|
|
99
|
+
buffer.writeDoubleLE(double_value, 2)
|
|
100
|
+
return buffer
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
static serializeULLong(ullong_value) {
|
|
104
|
+
const buffer = Buffer.alloc(10)
|
|
105
|
+
buffer.writeUInt8(Type.JAVONET_UNSIGNED_LONG_LONG, 0)
|
|
106
|
+
buffer.writeUInt8(8, 1)
|
|
107
|
+
buffer.writeBigUInt64LE(ullong_value, 2)
|
|
108
|
+
return buffer
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
static serializeUInt(uint_value) {
|
|
112
|
+
const buffer = Buffer.alloc(6)
|
|
113
|
+
buffer.writeUInt8(Type.JAVONET_UNSIGNED_INTEGER, 0)
|
|
114
|
+
buffer.writeUInt8(4, 1)
|
|
115
|
+
buffer.writeUInt32LE(uint_value, 2)
|
|
116
|
+
return buffer
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
static serializeIntValue(int_value) {
|
|
120
|
+
const buffer = Buffer.alloc(4)
|
|
121
|
+
buffer.writeInt32LE(int_value, 0)
|
|
122
|
+
return buffer
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
module.exports = TypeSerializer
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
const Interpreter = require('../interpreter/Interpreter')
|
|
2
|
-
const CommandEncoder = require('../protocol/CommandEncoder')
|
|
3
2
|
const interpreter = new Interpreter()
|
|
4
3
|
|
|
5
4
|
class Receiver {
|
|
6
5
|
static sendCommand(byteArray) {
|
|
7
|
-
|
|
8
|
-
let commandEncoder = new CommandEncoder()
|
|
9
|
-
return commandEncoder.encode(command, 0, 0)
|
|
6
|
+
return interpreter.process(byteArray)
|
|
10
7
|
}
|
|
11
8
|
static heartBeat(byteArray) {
|
|
12
9
|
return Int8Array.from([49, 48])
|
|
@@ -1,21 +1,27 @@
|
|
|
1
1
|
const { Handler } = require('../handler/Handler')
|
|
2
|
-
const
|
|
3
|
-
const
|
|
2
|
+
const CommandSerializer = require('../protocol/CommandSerializer')
|
|
3
|
+
const CommandDeserializer = require('../protocol/CommandDeserializer')
|
|
4
4
|
const Runtime = require("../../utils/RuntimeName");
|
|
5
5
|
|
|
6
6
|
let Transmitter
|
|
7
|
+
let Receiver
|
|
7
8
|
|
|
8
9
|
class Interpreter {
|
|
9
10
|
handler = new Handler()
|
|
10
11
|
|
|
11
12
|
execute(command, connectionType, tcpAddress) {
|
|
12
|
-
let
|
|
13
|
-
let byteMessage =
|
|
13
|
+
let commandSerializer = new CommandSerializer()
|
|
14
|
+
let byteMessage = commandSerializer.serialize(command,connectionType, tcpAddress)
|
|
14
15
|
let responseByteArray
|
|
15
16
|
|
|
16
17
|
if (command.runtimeName === Runtime.Nodejs)
|
|
17
18
|
{
|
|
18
|
-
|
|
19
|
+
// lazy receiver loading
|
|
20
|
+
if (!Receiver) {
|
|
21
|
+
Receiver = require('../receiver/Receiver')
|
|
22
|
+
}
|
|
23
|
+
responseByteArray = Receiver.sendCommand(byteMessage)
|
|
24
|
+
|
|
19
25
|
}
|
|
20
26
|
else {
|
|
21
27
|
// lazy transmitter loading
|
|
@@ -23,14 +29,16 @@ class Interpreter {
|
|
|
23
29
|
Transmitter = require('../transmitter/Transmitter')
|
|
24
30
|
}
|
|
25
31
|
responseByteArray = Transmitter.sendCommand(byteMessage)
|
|
26
|
-
return new CommandDecoder(responseByteArray).decode()
|
|
27
32
|
}
|
|
33
|
+
return new CommandDeserializer(responseByteArray).deserialize()
|
|
28
34
|
}
|
|
29
35
|
|
|
30
36
|
process(byteArray) {
|
|
31
|
-
let
|
|
32
|
-
let
|
|
33
|
-
|
|
37
|
+
let commandDeserializer = new CommandDeserializer(byteArray)
|
|
38
|
+
let receivedCommand = commandDeserializer.deserialize()
|
|
39
|
+
let responseCommand = this.handler.handleCommand(receivedCommand)
|
|
40
|
+
let commandSerializer = new CommandSerializer()
|
|
41
|
+
return commandSerializer.serialize(responseCommand, 0, "0.0.0.0:0")
|
|
34
42
|
}
|
|
35
43
|
}
|
|
36
44
|
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
const TypeDeserializer = require("./TypeDeserializer")
|
|
2
|
+
const Command = require("../../utils/Command")
|
|
3
|
+
const Type = require("../../utils/Type")
|
|
4
|
+
const StringEncodingMode = require("../../utils/StringEncodingMode")
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class CommandDeserializer {
|
|
8
|
+
constructor(buffer) {
|
|
9
|
+
this.buffer = buffer
|
|
10
|
+
this.command = new Command(
|
|
11
|
+
buffer[0],
|
|
12
|
+
buffer[10],
|
|
13
|
+
[]
|
|
14
|
+
)
|
|
15
|
+
this.position = 11
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
deserialize() {
|
|
19
|
+
while (!this.isAtEnd()) {
|
|
20
|
+
this.command = this.command.addArgToPayload((this.readObject(this.buffer[this.position])))
|
|
21
|
+
}
|
|
22
|
+
return this.command
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
isAtEnd() {
|
|
26
|
+
return this.position === this.buffer.length
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
readObject(typeNum) {
|
|
30
|
+
let type = Object.entries(Type).find(entry => entry[1] === typeNum)[0]
|
|
31
|
+
switch (type) {
|
|
32
|
+
case 'JAVONET_COMMAND':
|
|
33
|
+
return this.readCommand()
|
|
34
|
+
case 'JAVONET_STRING':
|
|
35
|
+
return this.readString()
|
|
36
|
+
case 'JAVONET_INTEGER':
|
|
37
|
+
return this.readInt()
|
|
38
|
+
case 'JAVONET_BOOLEAN':
|
|
39
|
+
return this.readBool();
|
|
40
|
+
case 'JAVONET_FLOAT':
|
|
41
|
+
return this.readFloat();
|
|
42
|
+
case 'JAVONET_BYTE':
|
|
43
|
+
return this.readByte();
|
|
44
|
+
case 'JAVONET_CHAR':
|
|
45
|
+
return this.readChar();
|
|
46
|
+
case 'JAVONET_LONG_LONG':
|
|
47
|
+
return this.readLongLong();
|
|
48
|
+
case 'JAVONET_DOUBLE':
|
|
49
|
+
return this.readDouble();
|
|
50
|
+
case 'JAVONET_UNSIGNED_LONG_LONG':
|
|
51
|
+
return this.readUllong
|
|
52
|
+
case 'JAVONET_UNSIGNED_INTEGER':
|
|
53
|
+
return this.readUInt()
|
|
54
|
+
default:
|
|
55
|
+
throw 'Unknown type - not supported in JavaScript'
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
readCommand() {
|
|
60
|
+
let p = this.position
|
|
61
|
+
let numberOfElementsInPayload = TypeDeserializer.deserializeInt(this.buffer.slice(p + 1, p + 5))
|
|
62
|
+
let runtime = this.buffer[p + 5]
|
|
63
|
+
let type = this.buffer[p + 6]
|
|
64
|
+
this.position += 7
|
|
65
|
+
let command = new Command(runtime, type, [])
|
|
66
|
+
return this.readCommandRecursively(numberOfElementsInPayload, command)
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
readCommandRecursively(numberOfElementsInPayloadLeft, cmd) {
|
|
70
|
+
if (numberOfElementsInPayloadLeft === 0) return cmd
|
|
71
|
+
let p = this.position
|
|
72
|
+
cmd = cmd.addArgToPayload(this.readObject(this.buffer[p]))
|
|
73
|
+
return this.readCommandRecursively(numberOfElementsInPayloadLeft - 1, cmd)
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
readString() {
|
|
77
|
+
let p = this.position
|
|
78
|
+
let stringEncodingMode = this.buffer[p + 1]
|
|
79
|
+
let size = TypeDeserializer.deserializeInt(this.buffer.slice(p + 2, p + 6))
|
|
80
|
+
this.position += 6
|
|
81
|
+
p = this.position
|
|
82
|
+
this.position += size
|
|
83
|
+
return TypeDeserializer.deserializeString(stringEncodingMode, this.buffer.slice(p, p + size))
|
|
84
|
+
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
readInt() {
|
|
88
|
+
let size = 4
|
|
89
|
+
this.position += 2
|
|
90
|
+
let p = this.position
|
|
91
|
+
this.position += size
|
|
92
|
+
return TypeDeserializer.deserializeInt(this.buffer.slice(p, p + size))
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
readBool() {
|
|
96
|
+
let size = 1
|
|
97
|
+
this.position += 2
|
|
98
|
+
let p = this.position
|
|
99
|
+
this.position += size
|
|
100
|
+
return TypeDeserializer.deserializeBool(this.buffer.slice(p, p + size))
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
readFloat() {
|
|
104
|
+
let size = 4
|
|
105
|
+
this.position += 2
|
|
106
|
+
let p = this.position
|
|
107
|
+
this.position += size
|
|
108
|
+
return TypeDeserializer.deserializeFloat(this.buffer.slice(p, p + size))
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
readByte() {
|
|
112
|
+
let size = 1
|
|
113
|
+
this.position += 2
|
|
114
|
+
let p = this.position
|
|
115
|
+
this.position += size
|
|
116
|
+
return TypeDeserializer.deserializeByte(this.buffer.slice(p, p + size))
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
readChar() {
|
|
120
|
+
let size = 1
|
|
121
|
+
this.position += 2
|
|
122
|
+
let p = this.position
|
|
123
|
+
this.position += size
|
|
124
|
+
return TypeDeserializer.deserializeChar(this.buffer.slice(p, p + size))
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
readLongLong() {
|
|
128
|
+
let size = 8
|
|
129
|
+
this.position += 2
|
|
130
|
+
let p = this.position
|
|
131
|
+
this.position += size
|
|
132
|
+
return TypeDeserializer.deserializeLongLong(this.buffer.slice(p, p + size))
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
readDouble() {
|
|
136
|
+
let size = 8
|
|
137
|
+
this.position += 2
|
|
138
|
+
let p = this.position
|
|
139
|
+
this.position += size
|
|
140
|
+
return TypeDeserializer.deserializeDouble(this.buffer.slice(p, p + size))
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
readUllong() {
|
|
144
|
+
let size = 8
|
|
145
|
+
this.position += 2
|
|
146
|
+
let p = this.position
|
|
147
|
+
this.position += size
|
|
148
|
+
return TypeDeserializer.deserializeULLong(this.buffer.slice(p, p + size))
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
readUInt() {
|
|
152
|
+
let size = 4
|
|
153
|
+
this.position += 2
|
|
154
|
+
let p = this.position
|
|
155
|
+
this.position += size
|
|
156
|
+
return TypeDeserializer.deserializeUInt(this.buffer.slice(p, p + size))
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
module.exports = CommandDeserializer
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
const Command = require("../../utils/Command")
|
|
2
|
-
const TypeEncoder = require('./
|
|
2
|
+
const TypeEncoder = require('./TypeSerializer')
|
|
3
3
|
const ConnectionType = require("../../utils/ConnectionType");
|
|
4
4
|
const Runtime = require('../../utils/RuntimeName')
|
|
5
5
|
|
|
6
|
-
class
|
|
6
|
+
class CommandSerializer {
|
|
7
7
|
buffer = new Int8Array(2)
|
|
8
8
|
encodedTcp;
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
serialize(command, connectionType, tcpConnectionData, runtimeVersion = 0) {
|
|
11
11
|
let deque = [command]
|
|
12
12
|
this.buffer[0] = command.runtimeName
|
|
13
13
|
this.buffer[1] = runtimeVersion
|
|
@@ -48,7 +48,7 @@ class CommandEncoder {
|
|
|
48
48
|
if (cmd.payload.length > 0) {
|
|
49
49
|
if (cmd.payload[0] instanceof Command) {
|
|
50
50
|
let innerCommand = cmd.payload[0]
|
|
51
|
-
this.#insertIntoBuffer(TypeEncoder.
|
|
51
|
+
this.#insertIntoBuffer(TypeEncoder.serializeCommand(innerCommand))
|
|
52
52
|
deque.push(innerCommand)
|
|
53
53
|
} else {
|
|
54
54
|
let result = TypeEncoder.encodePrimitive(cmd.payload[0])
|
|
@@ -69,4 +69,4 @@ class CommandEncoder {
|
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
-
module.exports =
|
|
72
|
+
module.exports = CommandSerializer
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
const Command = require('../../utils/Command')
|
|
2
|
+
const Type = require('../../utils/Type')
|
|
3
|
+
const StringEncodingMode = require('../../utils/StringEncodingMode')
|
|
4
|
+
const {TextDecoder} = require("util");
|
|
5
|
+
|
|
6
|
+
class TypeDeserializer {
|
|
7
|
+
static deserializeCommand(encodedCommand) {
|
|
8
|
+
return new Command(encodedCommand[0], encodedCommand[1], [])
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
static deserializeString(stringEncodingMode, encodedString) {
|
|
12
|
+
switch (stringEncodingMode) {
|
|
13
|
+
case StringEncodingMode.ASCII:
|
|
14
|
+
return String.fromCharCode(...encodedString)
|
|
15
|
+
case StringEncodingMode.UTF8:
|
|
16
|
+
let decoder = new TextDecoder('UTF-8');
|
|
17
|
+
return decoder.decode(new Uint8Array(encodedString))
|
|
18
|
+
case StringEncodingMode.UTF16:
|
|
19
|
+
let str = "";
|
|
20
|
+
let newBuffer = new Uint8Array(encodedString)
|
|
21
|
+
for (let i = 0; i < newBuffer.length; i++) {
|
|
22
|
+
newBuffer[i] = encodedString[i]
|
|
23
|
+
}
|
|
24
|
+
for (let i = 0; i < encodedString.length; i = i + 2) {
|
|
25
|
+
str += String.fromCharCode(newBuffer[i] + 256 * newBuffer[i + 1])
|
|
26
|
+
}
|
|
27
|
+
return str;
|
|
28
|
+
case StringEncodingMode.UTF32:
|
|
29
|
+
throw "Type utf32-encoded string not supported in JavaScript"
|
|
30
|
+
default:
|
|
31
|
+
throw "Unknown string encoding - not supported in JavaScript";
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
static deserializeInt(encodedInt) {
|
|
36
|
+
return (
|
|
37
|
+
(encodedInt[0] & 0xFF)
|
|
38
|
+
| ((encodedInt[1] & 0xFF) << 8)
|
|
39
|
+
| ((encodedInt[2] & 0xFF) << 16)
|
|
40
|
+
| ((encodedInt[3] & 0xFF) << 24)
|
|
41
|
+
)
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
static deserializeBool(encodedBool) {
|
|
45
|
+
return encodedBool[0] === 1
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
static deserializeFloat(encodedFloat) {
|
|
49
|
+
return Buffer.from(encodedFloat).readFloatLE()
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
static deserializeByte(encodedByte) {
|
|
53
|
+
return Buffer.from(encodedByte).readUint8()
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
static deserializeChar(encodedChar) {
|
|
57
|
+
return Buffer.from(encodedChar).readUint8()
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
static deserializeLongLong(encodedLongLong) {
|
|
61
|
+
return Buffer.from(encodedLongLong).readBigInt64LE()
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
static deserializeDouble(encodedDouble) {
|
|
65
|
+
return Buffer.from(encodedDouble).readDoubleLE()
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
static deserializeULLong(encodedULLong) {
|
|
69
|
+
return Buffer.from(encodedULLong).readBigUInt64LE()
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
static deserializeUInt(encodedUInt) {
|
|
73
|
+
return Buffer.from(encodedUInt).readUIntLE(0, 4)
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
module.exports = TypeDeserializer
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
const Command = require('../../utils/Command')
|
|
2
|
+
const Type = require('../../utils/Type')
|
|
3
|
+
const StringEncodingMode = require('../../utils/StringEncodingMode')
|
|
4
|
+
|
|
5
|
+
const util = require('util');
|
|
6
|
+
let encoder = new util.TextEncoder();
|
|
7
|
+
|
|
8
|
+
class TypeSerializer {
|
|
9
|
+
|
|
10
|
+
static encodePrimitive(payload_item) {
|
|
11
|
+
if (payload_item instanceof Command) {
|
|
12
|
+
return TypeSerializer.serializeCommand(payload_item)
|
|
13
|
+
} else if (typeof (payload_item) === 'number' || payload_item instanceof Number) {
|
|
14
|
+
if (Number.isInteger(payload_item)) {
|
|
15
|
+
return TypeSerializer.serializeInt(payload_item)
|
|
16
|
+
} else {
|
|
17
|
+
return TypeSerializer.serializeDouble(payload_item)
|
|
18
|
+
}
|
|
19
|
+
} else if (typeof (payload_item) === 'string' || payload_item instanceof String) {
|
|
20
|
+
return TypeSerializer.serializeString(payload_item)
|
|
21
|
+
} else if (typeof (payload_item) === 'boolean' || payload_item instanceof Boolean) {
|
|
22
|
+
return TypeSerializer.serializeBool(payload_item)
|
|
23
|
+
} else {
|
|
24
|
+
throw 'Unknown type - not supported in JavaScript'
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
static serializeCommand(command) {
|
|
29
|
+
const buffer = Buffer.alloc(7, command)
|
|
30
|
+
buffer.writeUInt8(Type.JAVONET_COMMAND, 0)
|
|
31
|
+
buffer.fill(Buffer.from(this.serializeIntValue(command.payload.length)), 1, 5)
|
|
32
|
+
buffer.writeUInt8(command.runtime, 5)
|
|
33
|
+
buffer.writeUInt8(command.commandType, 6)
|
|
34
|
+
return buffer
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
static serializeString(string_value) {
|
|
38
|
+
let bytes = encoder.encode(string_value)
|
|
39
|
+
const buffer = Buffer.alloc(6 + bytes.length)
|
|
40
|
+
buffer.writeUInt8(Type.JAVONET_STRING, 0)
|
|
41
|
+
buffer.writeUInt8(StringEncodingMode.UTF8, 1)
|
|
42
|
+
buffer.fill(Buffer.from(this.serializeIntValue(bytes.length)), 2, 6)
|
|
43
|
+
buffer.fill(Buffer.from(bytes), 6, 6 + bytes.length)
|
|
44
|
+
return buffer
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
static serializeInt(int_value) {
|
|
48
|
+
const buffer = Buffer.alloc(6)
|
|
49
|
+
buffer.writeUInt8(Type.JAVONET_INTEGER, 0)
|
|
50
|
+
buffer.writeUInt8(4, 1)
|
|
51
|
+
buffer.writeInt32LE(int_value, 2)
|
|
52
|
+
return buffer
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
static serializeBool(bool_value) {
|
|
56
|
+
const buffer = Buffer.alloc(3)
|
|
57
|
+
buffer.writeUInt8(Type.JAVONET_BOOLEAN, 0)
|
|
58
|
+
buffer.writeUInt8(1, 1)
|
|
59
|
+
buffer.writeUInt8(bool_value ? 1 : 0, 2)
|
|
60
|
+
return buffer
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
static serializeFloat(float_value) {
|
|
64
|
+
const buffer = Buffer.alloc(6)
|
|
65
|
+
buffer.writeUInt8(Type.JAVONET_FLOAT, 0)
|
|
66
|
+
buffer.writeUInt8(4, 1)
|
|
67
|
+
buffer.writeFloatLE(float_value, 2)
|
|
68
|
+
return buffer
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
static serializeByte(byte_value) {
|
|
72
|
+
const buffer = Buffer.alloc(3)
|
|
73
|
+
buffer.writeUInt8(Type.JAVONET_BYTE, 0)
|
|
74
|
+
buffer.writeUInt8(1, 1)
|
|
75
|
+
buffer.writeUInt8(byte_value, 2)
|
|
76
|
+
return buffer
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
static serializeChar(char_value) {
|
|
80
|
+
const buffer = Buffer.alloc(3)
|
|
81
|
+
buffer.writeUInt8(Type.JAVONET_CHAR, 0)
|
|
82
|
+
buffer.writeUInt8(1, 1)
|
|
83
|
+
buffer.writeUInt8(char_value, 2)
|
|
84
|
+
return buffer
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
static serializeLongLong(longlong_value) {
|
|
88
|
+
const buffer = Buffer.alloc(10)
|
|
89
|
+
buffer.writeUInt8(Type.JAVONET_LONG_LONG, 0)
|
|
90
|
+
buffer.writeUInt8(8, 1)
|
|
91
|
+
buffer.writeBigInt64LE(BigInt(longlong_value), 2)
|
|
92
|
+
return buffer
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
static serializeDouble(double_value) {
|
|
96
|
+
const buffer = Buffer.alloc(10)
|
|
97
|
+
buffer.writeUInt8(Type.JAVONET_DOUBLE, 0)
|
|
98
|
+
buffer.writeUInt8(8, 1)
|
|
99
|
+
buffer.writeDoubleLE(double_value, 2)
|
|
100
|
+
return buffer
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
static serializeULLong(ullong_value) {
|
|
104
|
+
const buffer = Buffer.alloc(10)
|
|
105
|
+
buffer.writeUInt8(Type.JAVONET_UNSIGNED_LONG_LONG, 0)
|
|
106
|
+
buffer.writeUInt8(8, 1)
|
|
107
|
+
buffer.writeBigUInt64LE(ullong_value, 2)
|
|
108
|
+
return buffer
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
static serializeUInt(uint_value) {
|
|
112
|
+
const buffer = Buffer.alloc(6)
|
|
113
|
+
buffer.writeUInt8(Type.JAVONET_UNSIGNED_INTEGER, 0)
|
|
114
|
+
buffer.writeUInt8(4, 1)
|
|
115
|
+
buffer.writeUInt32LE(uint_value, 2)
|
|
116
|
+
return buffer
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
static serializeIntValue(int_value) {
|
|
120
|
+
const buffer = Buffer.alloc(4)
|
|
121
|
+
buffer.writeInt32LE(int_value, 0)
|
|
122
|
+
return buffer
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
module.exports = TypeSerializer
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
const Interpreter = require('../interpreter/Interpreter')
|
|
2
|
-
const CommandEncoder = require('../protocol/CommandEncoder')
|
|
3
2
|
const interpreter = new Interpreter()
|
|
4
3
|
|
|
5
4
|
class Receiver {
|
|
6
5
|
static sendCommand(byteArray) {
|
|
7
|
-
|
|
8
|
-
let commandEncoder = new CommandEncoder()
|
|
9
|
-
return commandEncoder.encode(command, 0, 0)
|
|
6
|
+
return interpreter.process(byteArray)
|
|
10
7
|
}
|
|
11
8
|
static heartBeat(byteArray) {
|
|
12
9
|
return Int8Array.from([49, 48])
|
|
@@ -1,21 +1,27 @@
|
|
|
1
1
|
const { Handler } = require('../handler/Handler')
|
|
2
|
-
const
|
|
3
|
-
const
|
|
2
|
+
const CommandSerializer = require('../protocol/CommandSerializer')
|
|
3
|
+
const CommandDeserializer = require('../protocol/CommandDeserializer')
|
|
4
4
|
const Runtime = require("../../utils/RuntimeName");
|
|
5
5
|
|
|
6
6
|
let Transmitter
|
|
7
|
+
let Receiver
|
|
7
8
|
|
|
8
9
|
class Interpreter {
|
|
9
10
|
handler = new Handler()
|
|
10
11
|
|
|
11
12
|
execute(command, connectionType, tcpAddress) {
|
|
12
|
-
let
|
|
13
|
-
let byteMessage =
|
|
13
|
+
let commandSerializer = new CommandSerializer()
|
|
14
|
+
let byteMessage = commandSerializer.serialize(command,connectionType, tcpAddress)
|
|
14
15
|
let responseByteArray
|
|
15
16
|
|
|
16
17
|
if (command.runtimeName === Runtime.Nodejs)
|
|
17
18
|
{
|
|
18
|
-
|
|
19
|
+
// lazy receiver loading
|
|
20
|
+
if (!Receiver) {
|
|
21
|
+
Receiver = require('../receiver/Receiver')
|
|
22
|
+
}
|
|
23
|
+
responseByteArray = Receiver.sendCommand(byteMessage)
|
|
24
|
+
|
|
19
25
|
}
|
|
20
26
|
else {
|
|
21
27
|
// lazy transmitter loading
|
|
@@ -23,14 +29,16 @@ class Interpreter {
|
|
|
23
29
|
Transmitter = require('../transmitter/Transmitter')
|
|
24
30
|
}
|
|
25
31
|
responseByteArray = Transmitter.sendCommand(byteMessage)
|
|
26
|
-
return new CommandDecoder(responseByteArray).decode()
|
|
27
32
|
}
|
|
33
|
+
return new CommandDeserializer(responseByteArray).deserialize()
|
|
28
34
|
}
|
|
29
35
|
|
|
30
36
|
process(byteArray) {
|
|
31
|
-
let
|
|
32
|
-
let
|
|
33
|
-
|
|
37
|
+
let commandDeserializer = new CommandDeserializer(byteArray)
|
|
38
|
+
let receivedCommand = commandDeserializer.deserialize()
|
|
39
|
+
let responseCommand = this.handler.handleCommand(receivedCommand)
|
|
40
|
+
let commandSerializer = new CommandSerializer()
|
|
41
|
+
return commandSerializer.serialize(responseCommand, 0, "0.0.0.0:0")
|
|
34
42
|
}
|
|
35
43
|
}
|
|
36
44
|
|