hypertube-binaries 3.0.2 → 3.0.3
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.
- package/Binaries/Clr/Hypertube.Clr.Utils.dll +0 -0
- package/Binaries/Clr/HypertubeClrRuntime.dll +0 -0
- package/Binaries/Jvm/HypertubeJvmRuntime.jar +0 -0
- package/Binaries/Native/Linux/ARM64/NetVersionLatest.runtimeconfig.json +2 -2
- package/Binaries/Native/Linux/{X64/_HypertubeNativeErrorLogger_2026-04-17.txt → ARM64/_HypertubeNativeErrorLogger_2026-05-05.txt} +1 -1
- package/Binaries/Native/Linux/ARM64/libHypertubeActivationService.so +0 -0
- package/Binaries/Native/Linux/ARM64/libHypertubeNetcoreRuntimeNative.so +0 -0
- package/Binaries/Native/Linux/ARM64/libUtils.so +0 -0
- package/Binaries/Native/Linux/ARM64/version.txt +1 -1
- package/Binaries/Native/Linux/X64/NetVersionLatest.runtimeconfig.json +2 -2
- package/Binaries/Native/Linux/{ARM64/_HypertubeNativeErrorLogger_2026-04-17.txt → X64/_HypertubeNativeErrorLogger_2026-05-05.txt} +1 -1
- package/Binaries/Native/Linux/X64/libHypertubeActivationService.so +0 -0
- package/Binaries/Native/Linux/X64/libHypertubeNetcoreRuntimeNative.so +0 -0
- package/Binaries/Native/Linux/X64/libHypertubeNodejs2218RuntimeNative.so +0 -0
- package/Binaries/Native/Linux/X64/libUtils.so +0 -0
- package/Binaries/Native/Linux/X64/version.txt +1 -1
- package/Binaries/Native/MacOs/ARM64/NetVersionLatest.runtimeconfig.json +2 -2
- package/Binaries/Native/MacOs/ARM64/_HypertubeNativeErrorLogger_2026-05-05.txt +2 -0
- package/Binaries/Native/MacOs/ARM64/libHypertubeActivationService.dylib +0 -0
- package/Binaries/Native/MacOs/ARM64/libHypertubeNetcoreRuntimeNative.dylib +0 -0
- package/Binaries/Native/MacOs/ARM64/libHypertubeNodejs2218RuntimeNative.dylib +0 -0
- package/Binaries/Native/MacOs/ARM64/libUtils.dylib +0 -0
- package/Binaries/Native/MacOs/ARM64/version.txt +1 -1
- package/Binaries/Native/MacOs/X64/NetVersionLatest.runtimeconfig.json +2 -2
- package/Binaries/Native/MacOs/X64/{_HypertubeNativeErrorLogger_2026-04-17.txt → _HypertubeNativeErrorLogger_2026-05-05.txt} +1 -1
- package/Binaries/Native/MacOs/X64/libHypertubeActivationService.dylib +0 -0
- package/Binaries/Native/MacOs/X64/libHypertubeNetcoreRuntimeNative.dylib +0 -0
- package/Binaries/Native/MacOs/X64/libHypertubeNodejs2218RuntimeNative.dylib +0 -0
- package/Binaries/Native/MacOs/X64/libUtils.dylib +0 -0
- package/Binaries/Native/MacOs/X64/version.txt +1 -1
- package/Binaries/Native/Windows/ARM64/Configs.dll +0 -0
- package/Binaries/Native/Windows/ARM64/HypertubeActivationService.dll +0 -0
- package/Binaries/Native/Windows/ARM64/HypertubeCppRuntimeNative.dll +0 -0
- package/Binaries/Native/Windows/ARM64/HypertubeGoRuntimeNative.dll +0 -0
- package/Binaries/Native/Windows/ARM64/HypertubeJvmRuntimeNative.dll +0 -0
- package/Binaries/Native/Windows/ARM64/HypertubeNetcoreRuntimeNative.dll +0 -0
- package/Binaries/Native/Windows/ARM64/HypertubePhpRuntimeNative.dll +0 -0
- package/Binaries/Native/Windows/ARM64/HypertubePythonRuntimeNative.dll +0 -0
- package/Binaries/Native/Windows/ARM64/HypertubeRubyRuntimeNative.dll +0 -0
- package/Binaries/Native/Windows/ARM64/HypertubeTcpClient.dll +0 -0
- package/Binaries/Native/Windows/ARM64/HypertubeTcpTlsClient.dll +0 -0
- package/Binaries/Native/Windows/ARM64/NetVersionLatest.runtimeconfig.json +2 -2
- package/Binaries/Native/Windows/ARM64/Utils.dll +0 -0
- package/Binaries/Native/Windows/ARM64/_HypertubeNativeErrorLogger_2026-05-05.txt +2 -0
- package/Binaries/Native/Windows/ARM64/version.txt +0 -0
- package/Binaries/Native/Windows/X64/Configs.dll +0 -0
- package/Binaries/Native/Windows/X64/HypertubeActivationService.dll +0 -0
- package/Binaries/Native/Windows/X64/HypertubeClrRuntimeNative.dll +0 -0
- package/Binaries/Native/Windows/X64/HypertubeCppRuntimeNative.dll +0 -0
- package/Binaries/Native/Windows/X64/HypertubeGoRuntimeNative.dll +0 -0
- package/Binaries/Native/Windows/X64/HypertubeJvmRuntimeNative.dll +0 -0
- package/Binaries/Native/Windows/X64/HypertubeNetcoreRuntimeNative.dll +0 -0
- package/Binaries/Native/Windows/X64/HypertubeNodejs2218RuntimeNative.dll +0 -0
- package/Binaries/Native/Windows/X64/HypertubeNodejsRuntimeNative.dll +0 -0
- package/Binaries/Native/Windows/X64/HypertubePhp848RuntimeNative.dll +0 -0
- package/Binaries/Native/Windows/X64/HypertubePhpRuntimeNative.dll +0 -0
- package/Binaries/Native/Windows/X64/HypertubePythonRuntimeNative.dll +0 -0
- package/Binaries/Native/Windows/X64/HypertubeRubyRuntimeNative.dll +0 -0
- package/Binaries/Native/Windows/X64/HypertubeTcpClient.dll +0 -0
- package/Binaries/Native/Windows/X64/HypertubeTcpTlsClient.dll +0 -0
- package/Binaries/Native/Windows/X64/NetVersionLatest.runtimeconfig.json +2 -2
- package/Binaries/Native/Windows/X64/Utils.dll +0 -0
- package/Binaries/Native/Windows/X64/_HypertubeNativeErrorLogger_2026-05-05.txt +2 -0
- package/Binaries/Native/Windows/X64/version.txt +1 -1
- package/Binaries/Netcore/Hypertube.Netcore.Core.dll +0 -0
- package/Binaries/Netcore/Hypertube.Netcore.Plugins.dll +0 -0
- package/Binaries/Netcore/Hypertube.Netcore.Utils.dll +0 -0
- package/Binaries/Php/hypertube/core/delegatecache/DelegatesCache.php +62 -62
- package/Binaries/Php/hypertube/core/handler/AbstractHandler.php +61 -61
- package/Binaries/Php/hypertube/core/handler/AddEventListenerHandler.php +16 -16
- package/Binaries/Php/hypertube/core/handler/ArrayGetItemHandler.php +57 -57
- package/Binaries/Php/hypertube/core/handler/ArrayGetRankHandler.php +50 -50
- package/Binaries/Php/hypertube/core/handler/ArrayGetSizeHandler.php +59 -59
- package/Binaries/Php/hypertube/core/handler/ArrayHandler.php +26 -26
- package/Binaries/Php/hypertube/core/handler/ArrayReferenceHandler.php +16 -16
- package/Binaries/Php/hypertube/core/handler/ArraySetItemHandler.php +87 -87
- package/Binaries/Php/hypertube/core/handler/AsDtoHandler.php +18 -18
- package/Binaries/Php/hypertube/core/handler/AsKwargsHandler.php +19 -19
- package/Binaries/Php/hypertube/core/handler/AsOutHandler.php +19 -19
- package/Binaries/Php/hypertube/core/handler/AsRefHandler.php +20 -20
- package/Binaries/Php/hypertube/core/handler/CastHandler.php +93 -93
- package/Binaries/Php/hypertube/core/handler/ContextMetadataHandler.php +20 -0
- package/Binaries/Php/hypertube/core/handler/ConvertTypeHandler.php +20 -20
- package/Binaries/Php/hypertube/core/handler/CreateInstanceHandler.php +98 -98
- package/Binaries/Php/hypertube/core/handler/CreateNullHandler.php +16 -16
- package/Binaries/Php/hypertube/core/handler/DestructReferenceHandler.php +29 -29
- package/Binaries/Php/hypertube/core/handler/DtoPropertyHandler.php +18 -18
- package/Binaries/Php/hypertube/core/handler/EnableNamespaceHandler.php +36 -36
- package/Binaries/Php/hypertube/core/handler/EnableTypeHandler.php +33 -33
- package/Binaries/Php/hypertube/core/handler/ExceptionHandler.php +16 -16
- package/Binaries/Php/hypertube/core/handler/GenerateLibHandler.php +16 -16
- package/Binaries/Php/hypertube/core/handler/GetAsyncOperationResultHandler.php +16 -16
- package/Binaries/Php/hypertube/core/handler/GetEnumItemHandler.php +16 -16
- package/Binaries/Php/hypertube/core/handler/GetEnumNameHandler.php +16 -16
- package/Binaries/Php/hypertube/core/handler/GetEnumValueHandler.php +16 -16
- package/Binaries/Php/hypertube/core/handler/GetGlobalFieldHandler.php +16 -16
- package/Binaries/Php/hypertube/core/handler/GetInstanceFieldHandler.php +55 -55
- package/Binaries/Php/hypertube/core/handler/GetInstanceMethodAsDelegateHandler.php +52 -52
- package/Binaries/Php/hypertube/core/handler/GetModuleHandler.php +15 -15
- package/Binaries/Php/hypertube/core/handler/GetRefValueHandler.php +16 -16
- package/Binaries/Php/hypertube/core/handler/GetResultTypeHandler.php +16 -16
- package/Binaries/Php/hypertube/core/handler/GetStaticFieldHandler.php +81 -81
- package/Binaries/Php/hypertube/core/handler/GetStaticMethodAsDelegateHandler.php +109 -109
- package/Binaries/Php/hypertube/core/handler/GetTypeHandler.php +146 -146
- package/Binaries/Php/hypertube/core/handler/Handler.php +176 -175
- package/Binaries/Php/hypertube/core/handler/HeartBeatHandler.php +20 -20
- package/Binaries/Php/hypertube/core/handler/InvokeDelegateHandler.php +27 -27
- package/Binaries/Php/hypertube/core/handler/InvokeGenericMethodHandler.php +47 -47
- package/Binaries/Php/hypertube/core/handler/InvokeGenericStaticMethodHandler.php +111 -111
- package/Binaries/Php/hypertube/core/handler/InvokeGlobalFunctionHandler.php +48 -48
- package/Binaries/Php/hypertube/core/handler/InvokeInstanceMethodHandler.php +78 -78
- package/Binaries/Php/hypertube/core/handler/InvokeStaticMethodHandler.php +95 -95
- package/Binaries/Php/hypertube/core/handler/LoadLibraryHandler.php +360 -360
- package/Binaries/Php/hypertube/core/handler/OptimizeHandler.php +16 -16
- package/Binaries/Php/hypertube/core/handler/PassByValueHandler.php +103 -103
- package/Binaries/Php/hypertube/core/handler/PassDelegateHandler.php +58 -58
- package/Binaries/Php/hypertube/core/handler/PluginWrapperHandler.php +15 -15
- package/Binaries/Php/hypertube/core/handler/ProjectResultAsDtoHandler.php +68 -68
- package/Binaries/Php/hypertube/core/handler/RegisterForUpdateHandler.php +65 -65
- package/Binaries/Php/hypertube/core/handler/ResolveInstanceHandler.php +27 -27
- package/Binaries/Php/hypertube/core/handler/RetrieveArrayHandler.php +48 -48
- package/Binaries/Php/hypertube/core/handler/SetInstanceFieldHandler.php +54 -54
- package/Binaries/Php/hypertube/core/handler/SetStaticFieldHandler.php +56 -56
- package/Binaries/Php/hypertube/core/handler/ValueForUpdateHandler.php +20 -20
- package/Binaries/Php/hypertube/core/handler/ValueHandler.php +18 -18
- package/Binaries/Php/hypertube/core/handler/loadLibrary/ClasspathScanner.php +66 -66
- package/Binaries/Php/hypertube/core/http2Client/Http2Client.php +50 -0
- package/Binaries/Php/hypertube/core/interpreter/Interpreter.php +126 -123
- package/Binaries/Php/hypertube/core/namespacescache/NamespacesCache.php +88 -88
- package/Binaries/Php/hypertube/core/protocol/CommandDeserializer.php +337 -337
- package/Binaries/Php/hypertube/core/protocol/CommandSerializer.php +112 -112
- package/Binaries/Php/hypertube/core/protocol/TypeDeserializer.php +102 -102
- package/Binaries/Php/hypertube/core/protocol/TypeSerializer.php +188 -188
- package/Binaries/Php/hypertube/core/receiver/Receiver.php +45 -45
- package/Binaries/Php/hypertube/core/referencecache/ReferencesCache.php +68 -68
- package/Binaries/Php/hypertube/core/transmitter/Transmitter.php +47 -47
- package/Binaries/Php/hypertube/core/transmitter/TransmitterWrapper.php +181 -181
- package/Binaries/Php/hypertube/core/typescache/TypesCache.php +60 -60
- package/Binaries/Php/hypertube/core/webSocketClient/WebSocketClient.php +626 -620
- package/Binaries/Php/hypertube/utils/ArrayWrapper.php +122 -122
- package/Binaries/Php/hypertube/utils/Command.php +265 -265
- package/Binaries/Php/hypertube/utils/CommandInterface.php +23 -23
- package/Binaries/Php/hypertube/utils/DynamicMethodFactory.php +93 -93
- package/Binaries/Php/hypertube/utils/Enum.php +87 -87
- package/Binaries/Php/hypertube/utils/ExceptionSerializer.php +81 -81
- package/Binaries/Php/hypertube/utils/RuntimeLogger.php +44 -44
- package/Binaries/Php/hypertube/utils/RuntimeName.php +21 -21
- package/Binaries/Php/hypertube/utils/RuntimeNameHandler.php +72 -72
- package/Binaries/Php/hypertube/utils/StringEncodingMode.php +12 -12
- package/Binaries/Php/hypertube/utils/TypesHandler.php +47 -47
- package/Binaries/Php/hypertube/utils/Uri.php +138 -138
- package/Binaries/Php/hypertube/utils/UtilsArray.php +16 -16
- package/Binaries/Php/hypertube/utils/UtilsConst.php +75 -75
- package/Binaries/Php/hypertube/utils/UtilsSimpleType.php +48 -48
- package/Binaries/Php/hypertube/utils/Uuid.php +47 -47
- package/Binaries/Php/hypertube/utils/connectiondata/ConnectionData.php +84 -0
- package/Binaries/Php/hypertube/utils/connectiondata/Http2ConnectionData.php +43 -0
- package/Binaries/Php/hypertube/utils/connectiondata/IConnectionData.php +19 -15
- package/Binaries/Php/hypertube/utils/connectiondata/InMemoryConnectionData.php +25 -35
- package/Binaries/Php/hypertube/utils/connectiondata/TcpConnectionData.php +68 -77
- package/Binaries/Php/hypertube/utils/connectiondata/WsConnectionData.php +43 -43
- package/Binaries/Php/hypertube/utils/error/UnsupportedPayloadItemTypeError.php +19 -19
- package/Binaries/Php/hypertube/utils/exception/BadMethodCallException.php +14 -14
- package/Binaries/Php/hypertube/utils/exception/DelegateNotFoundException.php +14 -14
- package/Binaries/Php/hypertube/utils/exception/ExceptionThrower.php +121 -121
- package/Binaries/Php/hypertube/utils/exception/FieldNotFoundInClassException.php +41 -41
- package/Binaries/Php/hypertube/utils/exception/HypertubeArgumentsMismatchException.php +17 -17
- package/Binaries/Php/hypertube/utils/exception/InvalidUriException.php +14 -14
- package/Binaries/Php/hypertube/utils/exception/SingletonUnserializeException.php +15 -15
- package/Binaries/Php/hypertube/utils/exception/TypeByteNotSupportedException.php +14 -14
- package/Binaries/Php/hypertube/utils/exception/TypeNotSupportedException.php +16 -16
- package/Binaries/Php/hypertube/utils/exception/TypeSerializationNotSupportedException.php +18 -18
- package/Binaries/Php/hypertube/utils/exception/UnsupportedOperationException.php +10 -10
- package/Binaries/Php/hypertube/utils/exception/enum/EnumNameNotFoundException.php +15 -15
- package/Binaries/Php/hypertube/utils/exception/enum/InvalidEnumValueException.php +15 -15
- package/Binaries/Php/hypertube/utils/messagehelper/MessageHelper.php +102 -102
- package/Binaries/Php/hypertube/utils/type/CommandType.php +67 -66
- package/Binaries/Php/hypertube/utils/type/ConnectionType.php +15 -14
- package/Binaries/Php/hypertube/utils/type/ExceptionType.php +45 -45
- package/Binaries/Php/hypertube/utils/type/JType.php +24 -24
- package/Binaries/Php/hypertube/utils/type/SizeType.php +22 -22
- package/Binaries/Python/hypertube/core/handler/ContextMetadataHandler.py +7 -0
- package/Binaries/Python/hypertube/core/handler/Handler.py +2 -0
- package/Binaries/Python/hypertube/core/http2Client/Http2Client.py +332 -0
- package/Binaries/Python/hypertube/core/interpreter/Interpreter.py +4 -1
- package/Binaries/Python/hypertube/core/webSocketClient/WebSocketClient.py +81 -25
- package/Binaries/Python/hypertube/utils/CommandType.py +2 -1
- package/Binaries/Python/hypertube/utils/ConnectionType.py +1 -0
- package/Binaries/Python/hypertube/utils/connectionData/Http2ConnectionData.py +36 -0
- package/Binaries/Python/hypertube/utils/connectionData/IConnectionData.py +38 -0
- package/Binaries/Python/hypertube/utils/connectionData/InMemoryConnectionData.py +4 -12
- package/Binaries/Python/hypertube/utils/connectionData/TcpConnectionData.py +4 -15
- package/Binaries/Python/hypertube/utils/connectionData/WsConnectionData.py +14 -12
- package/Binaries/Python/hypertube/utils/messageHelper/MessageHelper.py +20 -15
- package/Binaries/Ruby/core/handler/context_metadata_handler.rb +11 -0
- package/Binaries/Ruby/core/handler/handler.rb +3 -0
- package/Binaries/Ruby/core/http2_client/http2_client.rb +69 -0
- package/Binaries/Ruby/core/interpreter/interpreter.rb +7 -4
- package/Binaries/Ruby/core/web_socket_client/web_socket_client.rb +41 -25
- package/Binaries/Ruby/utils/command_type.rb +3 -0
- package/Binaries/Ruby/utils/connection_type.rb +1 -0
- package/Binaries/Ruby/utils/http2_connection_data.rb +59 -0
- package/Binaries/Ruby/utils/tcp_connection_data.rb +38 -6
- package/Binaries/Ruby/utils/ws_connection_data.rb +40 -6
- package/Binaries/version.txt +1 -1
- package/package.json +1 -1
- package/prebuilds/prebuilds-darwin-arm64/HypertubeNodejsRuntimeAddon.node +0 -0
- package/prebuilds/prebuilds-darwin-x64/HypertubeNodejsRuntimeAddon.node +0 -0
- package/prebuilds/prebuilds-win32-arm64/HypertubeNodejsRuntimeAddon.node +0 -0
- package/prebuilds/prebuilds-win32-x64/HypertubeNodejsRuntimeAddon.node +0 -0
- package/Binaries/Native/Linux/ARM64/NetVersion31LatestPatch.runtimeconfig.json +0 -10
- package/Binaries/Native/Linux/ARM64/NetVersion60LatestPatch.runtimeconfig.json +0 -10
- package/Binaries/Native/Linux/ARM64/NetVersion70LatestPatch.runtimeconfig.json +0 -10
- package/Binaries/Native/Linux/X64/NetVersion31LatestPatch.runtimeconfig.json +0 -10
- package/Binaries/Native/Linux/X64/NetVersion60LatestPatch.runtimeconfig.json +0 -10
- package/Binaries/Native/Linux/X64/NetVersion70LatestPatch.runtimeconfig.json +0 -10
- package/Binaries/Native/MacOs/ARM64/NetVersion31LatestPatch.runtimeconfig.json +0 -10
- package/Binaries/Native/MacOs/ARM64/NetVersion60LatestPatch.runtimeconfig.json +0 -10
- package/Binaries/Native/MacOs/ARM64/NetVersion70LatestPatch.runtimeconfig.json +0 -10
- package/Binaries/Native/MacOs/ARM64/_HypertubeNativeErrorLogger_2026-04-17.txt +0 -2
- package/Binaries/Native/MacOs/X64/NetVersion31LatestPatch.runtimeconfig.json +0 -10
- package/Binaries/Native/MacOs/X64/NetVersion60LatestPatch.runtimeconfig.json +0 -10
- package/Binaries/Native/MacOs/X64/NetVersion70LatestPatch.runtimeconfig.json +0 -10
- package/Binaries/Native/Windows/ARM64/NetVersion31LatestPatch.runtimeconfig.json +0 -10
- package/Binaries/Native/Windows/ARM64/NetVersion60LatestPatch.runtimeconfig.json +0 -10
- package/Binaries/Native/Windows/ARM64/NetVersion70LatestPatch.runtimeconfig.json +0 -10
- package/Binaries/Native/Windows/ARM64/_HypertubeNativeErrorLogger_2026-04-17.txt +0 -2
- package/Binaries/Native/Windows/X64/NetVersion31LatestPatch.runtimeconfig.json +0 -10
- package/Binaries/Native/Windows/X64/NetVersion60LatestPatch.runtimeconfig.json +0 -10
- package/Binaries/Native/Windows/X64/NetVersion70LatestPatch.runtimeconfig.json +0 -10
- package/Binaries/Native/Windows/X64/_HypertubeNativeErrorLogger_2026-04-17.txt +0 -2
|
@@ -1,146 +1,146 @@
|
|
|
1
|
-
<?php
|
|
2
|
-
|
|
3
|
-
declare(strict_types=1);
|
|
4
|
-
|
|
5
|
-
namespace core\handler;
|
|
6
|
-
|
|
7
|
-
use core\handler\loadLibrary\ClasspathScanner;
|
|
8
|
-
use core\namespacescache\NamespacesCache;
|
|
9
|
-
use core\typescache\TypesCache;
|
|
10
|
-
use Exception;
|
|
11
|
-
use ReflectionClass;
|
|
12
|
-
use utils\CommandInterface;
|
|
13
|
-
|
|
14
|
-
final class GetTypeHandler extends AbstractHandler
|
|
15
|
-
{
|
|
16
|
-
private const REQUIRED_ARGUMENTS_COUNT = 1;
|
|
17
|
-
private array $primitiveTypeMap;
|
|
18
|
-
|
|
19
|
-
public function __construct()
|
|
20
|
-
{
|
|
21
|
-
$this->primitiveTypeMap = [
|
|
22
|
-
'boolean' => 'bool',
|
|
23
|
-
'bool' => 'bool',
|
|
24
|
-
'integer' => 'int',
|
|
25
|
-
'int' => 'int',
|
|
26
|
-
'double' => 'float',
|
|
27
|
-
'float' => 'float',
|
|
28
|
-
'string' => 'string',
|
|
29
|
-
'array' => 'array',
|
|
30
|
-
'object' => 'object',
|
|
31
|
-
'resource' => 'resource',
|
|
32
|
-
'null' => 'null'
|
|
33
|
-
];
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
public function process(CommandInterface $command)
|
|
37
|
-
{
|
|
38
|
-
$this->validate($command, self::REQUIRED_ARGUMENTS_COUNT, self::class);
|
|
39
|
-
|
|
40
|
-
$typeName = $this->getTypeName($command);
|
|
41
|
-
|
|
42
|
-
if (array_key_exists($typeName, $this->primitiveTypeMap)) {
|
|
43
|
-
$typeToReturn = $this->primitiveTypeMap[$typeName];
|
|
44
|
-
} else {
|
|
45
|
-
try {
|
|
46
|
-
if (class_exists($typeName)) {
|
|
47
|
-
$typeToReturn = new ReflectionClass($typeName);
|
|
48
|
-
} else {
|
|
49
|
-
if (class_exists($typeName)) {
|
|
50
|
-
$typeToReturn = new ReflectionClass($typeName);
|
|
51
|
-
} else {
|
|
52
|
-
throw new Exception('Class not found: ' . $typeName);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
} catch (Exception $ex) {
|
|
56
|
-
$loadedLibraries = LoadLibraryHandler::getLoadedLibraries();
|
|
57
|
-
$loadedClasses = [];
|
|
58
|
-
|
|
59
|
-
foreach ($loadedLibraries as $library) {
|
|
60
|
-
if (substr($library, -4) === '.php' || substr($library, -5) === '.phar') {
|
|
61
|
-
$scanner = new ClasspathScanner();
|
|
62
|
-
$loadedClasses = array_merge(
|
|
63
|
-
$loadedClasses,
|
|
64
|
-
$scanner->getClassesFromFile($library)
|
|
65
|
-
);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
$availableClasses = implode(PHP_EOL, $loadedClasses) .
|
|
70
|
-
implode(PHP_EOL, get_declared_classes());
|
|
71
|
-
|
|
72
|
-
$includePath = get_include_path();
|
|
73
|
-
|
|
74
|
-
throw new Exception(sprintf(
|
|
75
|
-
'Type: %s not found in include path' . PHP_EOL
|
|
76
|
-
. 'Load all libraries at the beginning of your application' . PHP_EOL
|
|
77
|
-
. 'Exception: %s' . PHP_EOL
|
|
78
|
-
. 'PHP include path: %s' . PHP_EOL
|
|
79
|
-
. 'Available classes loaded by user: %s' . PHP_EOL,
|
|
80
|
-
$typeName,
|
|
81
|
-
$ex->getMessage(),
|
|
82
|
-
$includePath,
|
|
83
|
-
$availableClasses
|
|
84
|
-
));
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
if ($command->getPayloadSize() > 1) {
|
|
89
|
-
$parentClass = $command->getPayload()[1];
|
|
90
|
-
if ($typeToReturn instanceof ReflectionClass && $parentClass instanceof ReflectionClass) {
|
|
91
|
-
if (!$typeToReturn->isSubclassOf($parentClass->getName())) {
|
|
92
|
-
throw new Exception(sprintf(
|
|
93
|
-
'Class %s is not a subclass of %s',
|
|
94
|
-
$typeToReturn->getName(),
|
|
95
|
-
$parentClass->getName()
|
|
96
|
-
));
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
$namespaceCache = NamespacesCache::getInstance();
|
|
102
|
-
$typeCache = TypesCache::getInstance();
|
|
103
|
-
|
|
104
|
-
$typeName = $typeToReturn instanceof ReflectionClass ? $typeToReturn->getName() : (string) $typeToReturn;
|
|
105
|
-
|
|
106
|
-
$isAllowed = ($namespaceCache->isNamespaceCacheEmpty() && $typeCache->isTypeCacheEmpty())
|
|
107
|
-
|| ($typeToReturn instanceof ReflectionClass && $namespaceCache->isTypeAllowed($typeToReturn))
|
|
108
|
-
|| $typeCache->isTypeAllowed($typeName);
|
|
109
|
-
|
|
110
|
-
if (!$isAllowed) {
|
|
111
|
-
$allowedNamespaces = implode(', ', $namespaceCache->getCachedNamespaces());
|
|
112
|
-
$allowedTypes = implode(', ', $typeCache->getTypeCache());
|
|
113
|
-
|
|
114
|
-
$typeName = $typeToReturn instanceof ReflectionClass
|
|
115
|
-
? $typeToReturn->getName()
|
|
116
|
-
: (string) $typeToReturn;
|
|
117
|
-
|
|
118
|
-
throw new Exception(sprintf(
|
|
119
|
-
'Type %s not allowed. Allowed namespaces: %s. Allowed types: %s',
|
|
120
|
-
$typeName,
|
|
121
|
-
$allowedNamespaces,
|
|
122
|
-
$allowedTypes
|
|
123
|
-
));
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
return $typeToReturn;
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
private function getTypeName(CommandInterface $command): string
|
|
130
|
-
{
|
|
131
|
-
$payload = $command->getPayload()[0];
|
|
132
|
-
if (is_string($payload)) {
|
|
133
|
-
return $payload;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
if ($payload instanceof ReflectionClass) {
|
|
137
|
-
return $payload->getName();
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
if (is_object($payload)) {
|
|
141
|
-
return get_class($payload);
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
return gettype($payload);
|
|
145
|
-
}
|
|
146
|
-
}
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
declare(strict_types=1);
|
|
4
|
+
|
|
5
|
+
namespace core\handler;
|
|
6
|
+
|
|
7
|
+
use core\handler\loadLibrary\ClasspathScanner;
|
|
8
|
+
use core\namespacescache\NamespacesCache;
|
|
9
|
+
use core\typescache\TypesCache;
|
|
10
|
+
use Exception;
|
|
11
|
+
use ReflectionClass;
|
|
12
|
+
use utils\CommandInterface;
|
|
13
|
+
|
|
14
|
+
final class GetTypeHandler extends AbstractHandler
|
|
15
|
+
{
|
|
16
|
+
private const REQUIRED_ARGUMENTS_COUNT = 1;
|
|
17
|
+
private array $primitiveTypeMap;
|
|
18
|
+
|
|
19
|
+
public function __construct()
|
|
20
|
+
{
|
|
21
|
+
$this->primitiveTypeMap = [
|
|
22
|
+
'boolean' => 'bool',
|
|
23
|
+
'bool' => 'bool',
|
|
24
|
+
'integer' => 'int',
|
|
25
|
+
'int' => 'int',
|
|
26
|
+
'double' => 'float',
|
|
27
|
+
'float' => 'float',
|
|
28
|
+
'string' => 'string',
|
|
29
|
+
'array' => 'array',
|
|
30
|
+
'object' => 'object',
|
|
31
|
+
'resource' => 'resource',
|
|
32
|
+
'null' => 'null'
|
|
33
|
+
];
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
public function process(CommandInterface $command)
|
|
37
|
+
{
|
|
38
|
+
$this->validate($command, self::REQUIRED_ARGUMENTS_COUNT, self::class);
|
|
39
|
+
|
|
40
|
+
$typeName = $this->getTypeName($command);
|
|
41
|
+
|
|
42
|
+
if (array_key_exists($typeName, $this->primitiveTypeMap)) {
|
|
43
|
+
$typeToReturn = $this->primitiveTypeMap[$typeName];
|
|
44
|
+
} else {
|
|
45
|
+
try {
|
|
46
|
+
if (class_exists($typeName)) {
|
|
47
|
+
$typeToReturn = new ReflectionClass($typeName);
|
|
48
|
+
} else {
|
|
49
|
+
if (class_exists($typeName)) {
|
|
50
|
+
$typeToReturn = new ReflectionClass($typeName);
|
|
51
|
+
} else {
|
|
52
|
+
throw new Exception('Class not found: ' . $typeName);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
} catch (Exception $ex) {
|
|
56
|
+
$loadedLibraries = LoadLibraryHandler::getLoadedLibraries();
|
|
57
|
+
$loadedClasses = [];
|
|
58
|
+
|
|
59
|
+
foreach ($loadedLibraries as $library) {
|
|
60
|
+
if (substr($library, -4) === '.php' || substr($library, -5) === '.phar') {
|
|
61
|
+
$scanner = new ClasspathScanner();
|
|
62
|
+
$loadedClasses = array_merge(
|
|
63
|
+
$loadedClasses,
|
|
64
|
+
$scanner->getClassesFromFile($library)
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
$availableClasses = implode(PHP_EOL, $loadedClasses) .
|
|
70
|
+
implode(PHP_EOL, get_declared_classes());
|
|
71
|
+
|
|
72
|
+
$includePath = get_include_path();
|
|
73
|
+
|
|
74
|
+
throw new Exception(sprintf(
|
|
75
|
+
'Type: %s not found in include path' . PHP_EOL
|
|
76
|
+
. 'Load all libraries at the beginning of your application' . PHP_EOL
|
|
77
|
+
. 'Exception: %s' . PHP_EOL
|
|
78
|
+
. 'PHP include path: %s' . PHP_EOL
|
|
79
|
+
. 'Available classes loaded by user: %s' . PHP_EOL,
|
|
80
|
+
$typeName,
|
|
81
|
+
$ex->getMessage(),
|
|
82
|
+
$includePath,
|
|
83
|
+
$availableClasses
|
|
84
|
+
));
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
if ($command->getPayloadSize() > 1) {
|
|
89
|
+
$parentClass = $command->getPayload()[1];
|
|
90
|
+
if ($typeToReturn instanceof ReflectionClass && $parentClass instanceof ReflectionClass) {
|
|
91
|
+
if (!$typeToReturn->isSubclassOf($parentClass->getName())) {
|
|
92
|
+
throw new Exception(sprintf(
|
|
93
|
+
'Class %s is not a subclass of %s',
|
|
94
|
+
$typeToReturn->getName(),
|
|
95
|
+
$parentClass->getName()
|
|
96
|
+
));
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
$namespaceCache = NamespacesCache::getInstance();
|
|
102
|
+
$typeCache = TypesCache::getInstance();
|
|
103
|
+
|
|
104
|
+
$typeName = $typeToReturn instanceof ReflectionClass ? $typeToReturn->getName() : (string) $typeToReturn;
|
|
105
|
+
|
|
106
|
+
$isAllowed = ($namespaceCache->isNamespaceCacheEmpty() && $typeCache->isTypeCacheEmpty())
|
|
107
|
+
|| ($typeToReturn instanceof ReflectionClass && $namespaceCache->isTypeAllowed($typeToReturn))
|
|
108
|
+
|| $typeCache->isTypeAllowed($typeName);
|
|
109
|
+
|
|
110
|
+
if (!$isAllowed) {
|
|
111
|
+
$allowedNamespaces = implode(', ', $namespaceCache->getCachedNamespaces());
|
|
112
|
+
$allowedTypes = implode(', ', $typeCache->getTypeCache());
|
|
113
|
+
|
|
114
|
+
$typeName = $typeToReturn instanceof ReflectionClass
|
|
115
|
+
? $typeToReturn->getName()
|
|
116
|
+
: (string) $typeToReturn;
|
|
117
|
+
|
|
118
|
+
throw new Exception(sprintf(
|
|
119
|
+
'Type %s not allowed. Allowed namespaces: %s. Allowed types: %s',
|
|
120
|
+
$typeName,
|
|
121
|
+
$allowedNamespaces,
|
|
122
|
+
$allowedTypes
|
|
123
|
+
));
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
return $typeToReturn;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
private function getTypeName(CommandInterface $command): string
|
|
130
|
+
{
|
|
131
|
+
$payload = $command->getPayload()[0];
|
|
132
|
+
if (is_string($payload)) {
|
|
133
|
+
return $payload;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
if ($payload instanceof ReflectionClass) {
|
|
137
|
+
return $payload->getName();
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
if (is_object($payload)) {
|
|
141
|
+
return get_class($payload);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
return gettype($payload);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
@@ -1,175 +1,176 @@
|
|
|
1
|
-
<?php
|
|
2
|
-
|
|
3
|
-
declare(strict_types=1);
|
|
4
|
-
|
|
5
|
-
namespace core\handler;
|
|
6
|
-
|
|
7
|
-
use core\referencecache\ReferencesCache;
|
|
8
|
-
use Throwable;
|
|
9
|
-
use utils\Command;
|
|
10
|
-
use utils\CommandInterface;
|
|
11
|
-
use utils\ExceptionSerializer;
|
|
12
|
-
use utils\RuntimeName;
|
|
13
|
-
use utils\type\CommandType;
|
|
14
|
-
use utils\TypesHandler;
|
|
15
|
-
use utils\ArrayWrapper;
|
|
16
|
-
|
|
17
|
-
final class Handler
|
|
18
|
-
{
|
|
19
|
-
private static array $handlers = [];
|
|
20
|
-
|
|
21
|
-
private function __construct()
|
|
22
|
-
{
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
private static function initializeHandlers(): void
|
|
26
|
-
{
|
|
27
|
-
if (!empty(self::$handlers)) {
|
|
28
|
-
return;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
self::$handlers[CommandType::VALUE()->getValue()] = new ValueHandler();
|
|
32
|
-
self::$handlers[CommandType::LOAD_LIBRARY()->getValue()] = new LoadLibraryHandler();
|
|
33
|
-
self::$handlers[CommandType::INVOKE_STATIC_METHOD()->getValue()] = new InvokeStaticMethodHandler();
|
|
34
|
-
self::$handlers[CommandType::GET_STATIC_FIELD()->getValue()] = new GetStaticFieldHandler();
|
|
35
|
-
self::$handlers[CommandType::SET_STATIC_FIELD()->getValue()] = new SetStaticFieldHandler();
|
|
36
|
-
self::$handlers[CommandType::CREATE_INSTANCE()->getValue()] = new CreateInstanceHandler();
|
|
37
|
-
self::$handlers[CommandType::GET_TYPE()->getValue()] = new GetTypeHandler();
|
|
38
|
-
self::$handlers[CommandType::REFERENCE()->getValue()] = new ResolveInstanceHandler();
|
|
39
|
-
self::$handlers[CommandType::GET_MODULE()->getValue()] = new GetModuleHandler();
|
|
40
|
-
self::$handlers[CommandType::INVOKE_INSTANCE_METHOD()->getValue()] = new InvokeInstanceMethodHandler();
|
|
41
|
-
self::$handlers[CommandType::EXCEPTION()->getValue()] = new ExceptionHandler();
|
|
42
|
-
self::$handlers[CommandType::HEART_BEAT()->getValue()] = new HeartBeatHandler();
|
|
43
|
-
self::$handlers[CommandType::CAST()->getValue()] = new CastHandler();
|
|
44
|
-
self::$handlers[CommandType::GET_INSTANCE_FIELD()->getValue()] = new GetInstanceFieldHandler();
|
|
45
|
-
self::$handlers[CommandType::OPTIMIZE()->getValue()] = new OptimizeHandler();
|
|
46
|
-
self::$handlers[CommandType::GENERATE_LIB()->getValue()] = new GenerateLibHandler();
|
|
47
|
-
self::$handlers[CommandType::INVOKE_GLOBAL_FUNCTION()->getValue()] = new InvokeGlobalFunctionHandler();
|
|
48
|
-
self::$handlers[CommandType::DESTRUCT_REFERENCE()->getValue()] = new DestructReferenceHandler();
|
|
49
|
-
self::$handlers[CommandType::ARRAY_REFERENCE()->getValue()] = new ArrayReferenceHandler();
|
|
50
|
-
self::$handlers[CommandType::ARRAY_GET_ITEM()->getValue()] = new ArrayGetItemHandler();
|
|
51
|
-
self::$handlers[CommandType::ARRAY_GET_SIZE()->getValue()] = new ArrayGetSizeHandler();
|
|
52
|
-
self::$handlers[CommandType::ARRAY_GET_RANK()->getValue()] = new ArrayGetRankHandler();
|
|
53
|
-
self::$handlers[CommandType::ARRAY_SET_ITEM()->getValue()] = new ArraySetItemHandler();
|
|
54
|
-
self::$handlers[CommandType::ARRAY()->getValue()] = new ArrayHandler();
|
|
55
|
-
self::$handlers[CommandType::RETRIEVE_ARRAY()->getValue()] = new RetrieveArrayHandler();
|
|
56
|
-
self::$handlers[CommandType::SET_INSTANCE_FIELD()->getValue()] = new SetInstanceFieldHandler();
|
|
57
|
-
self::$handlers[CommandType::INVOKE_GENERIC_STATIC_METHOD()->getValue()] = new InvokeGenericStaticMethodHandler();
|
|
58
|
-
self::$handlers[CommandType::INVOKE_GENERIC_METHOD()->getValue()] = new InvokeGenericMethodHandler();
|
|
59
|
-
self::$handlers[CommandType::GET_ENUM_ITEM()->getValue()] = new GetEnumItemHandler();
|
|
60
|
-
self::$handlers[CommandType::GET_ENUM_NAME()->getValue()] = new GetEnumNameHandler();
|
|
61
|
-
self::$handlers[CommandType::GET_ENUM_VALUE()->getValue()] = new GetEnumValueHandler();
|
|
62
|
-
self::$handlers[CommandType::AS_REF()->getValue()] = new AsRefHandler();
|
|
63
|
-
self::$handlers[CommandType::AS_OUT()->getValue()] = new AsOutHandler();
|
|
64
|
-
self::$handlers[CommandType::GET_REF_VALUE()->getValue()] = new GetRefValueHandler();
|
|
65
|
-
self::$handlers[CommandType::ENABLE_NAMESPACE()->getValue()] = new EnableNamespaceHandler();
|
|
66
|
-
self::$handlers[CommandType::ENABLE_TYPE()->getValue()] = new EnableTypeHandler();
|
|
67
|
-
self::$handlers[CommandType::CREATE_NULL()->getValue()] = new CreateNullHandler();
|
|
68
|
-
self::$handlers[CommandType::GET_STATIC_METHOD_AS_DELEGATE()->getValue()] = new GetStaticMethodAsDelegateHandler();
|
|
69
|
-
self::$handlers[CommandType::GET_INSTANCE_METHOD_AS_DELEGATE()->getValue()] = new GetInstanceMethodAsDelegateHandler();
|
|
70
|
-
self::$handlers[CommandType::PASS_DELEGATE()->getValue()] = new PassDelegateHandler();
|
|
71
|
-
self::$handlers[CommandType::INVOKE_DELEGATE()->getValue()] = new InvokeDelegateHandler();
|
|
72
|
-
self::$handlers[CommandType::CONVERT_TYPE()->getValue()] = new ConvertTypeHandler();
|
|
73
|
-
self::$handlers[CommandType::ADD_EVENT_LISTENER()->getValue()] = new AddEventListenerHandler();
|
|
74
|
-
self::$handlers[CommandType::PLUGIN_WRAPPER()->getValue()] = new PluginWrapperHandler();
|
|
75
|
-
self::$handlers[CommandType::GET_ASYNC_OPERATION_RESULT()->getValue()] = new GetAsyncOperationResultHandler();
|
|
76
|
-
self::$handlers[CommandType::AS_KWARGS()->getValue()] = new AsKwargsHandler();
|
|
77
|
-
self::$handlers[CommandType::GET_RESULT_TYPE()->getValue()] = new GetResultTypeHandler();
|
|
78
|
-
self::$handlers[CommandType::GET_GLOBAL_FIELD()->getValue()] = new GetGlobalFieldHandler();
|
|
79
|
-
self::$handlers[CommandType::REGISTER_FOR_UPDATE()->getValue()] = new RegisterForUpdateHandler();
|
|
80
|
-
self::$handlers[CommandType::VALUE_FOR_UPDATE()->getValue()] = new ValueForUpdateHandler();
|
|
81
|
-
self::$handlers[CommandType::AS_DTO()->getValue()] = new AsDtoHandler();
|
|
82
|
-
self::$handlers[CommandType::DTO_PROPERTY()->getValue()] = new DtoPropertyHandler();
|
|
83
|
-
self::$handlers[CommandType::PROJECT_RESULT_AS_DTO()->getValue()] = new ProjectResultAsDtoHandler();
|
|
84
|
-
self::$handlers[CommandType::PASS_BY_VALUE()->getValue()] = new PassByValueHandler();
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
$
|
|
119
|
-
|
|
120
|
-
|
|
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
|
-
}
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
declare(strict_types=1);
|
|
4
|
+
|
|
5
|
+
namespace core\handler;
|
|
6
|
+
|
|
7
|
+
use core\referencecache\ReferencesCache;
|
|
8
|
+
use Throwable;
|
|
9
|
+
use utils\Command;
|
|
10
|
+
use utils\CommandInterface;
|
|
11
|
+
use utils\ExceptionSerializer;
|
|
12
|
+
use utils\RuntimeName;
|
|
13
|
+
use utils\type\CommandType;
|
|
14
|
+
use utils\TypesHandler;
|
|
15
|
+
use utils\ArrayWrapper;
|
|
16
|
+
|
|
17
|
+
final class Handler
|
|
18
|
+
{
|
|
19
|
+
private static array $handlers = [];
|
|
20
|
+
|
|
21
|
+
private function __construct()
|
|
22
|
+
{
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
private static function initializeHandlers(): void
|
|
26
|
+
{
|
|
27
|
+
if (!empty(self::$handlers)) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
self::$handlers[CommandType::VALUE()->getValue()] = new ValueHandler();
|
|
32
|
+
self::$handlers[CommandType::LOAD_LIBRARY()->getValue()] = new LoadLibraryHandler();
|
|
33
|
+
self::$handlers[CommandType::INVOKE_STATIC_METHOD()->getValue()] = new InvokeStaticMethodHandler();
|
|
34
|
+
self::$handlers[CommandType::GET_STATIC_FIELD()->getValue()] = new GetStaticFieldHandler();
|
|
35
|
+
self::$handlers[CommandType::SET_STATIC_FIELD()->getValue()] = new SetStaticFieldHandler();
|
|
36
|
+
self::$handlers[CommandType::CREATE_INSTANCE()->getValue()] = new CreateInstanceHandler();
|
|
37
|
+
self::$handlers[CommandType::GET_TYPE()->getValue()] = new GetTypeHandler();
|
|
38
|
+
self::$handlers[CommandType::REFERENCE()->getValue()] = new ResolveInstanceHandler();
|
|
39
|
+
self::$handlers[CommandType::GET_MODULE()->getValue()] = new GetModuleHandler();
|
|
40
|
+
self::$handlers[CommandType::INVOKE_INSTANCE_METHOD()->getValue()] = new InvokeInstanceMethodHandler();
|
|
41
|
+
self::$handlers[CommandType::EXCEPTION()->getValue()] = new ExceptionHandler();
|
|
42
|
+
self::$handlers[CommandType::HEART_BEAT()->getValue()] = new HeartBeatHandler();
|
|
43
|
+
self::$handlers[CommandType::CAST()->getValue()] = new CastHandler();
|
|
44
|
+
self::$handlers[CommandType::GET_INSTANCE_FIELD()->getValue()] = new GetInstanceFieldHandler();
|
|
45
|
+
self::$handlers[CommandType::OPTIMIZE()->getValue()] = new OptimizeHandler();
|
|
46
|
+
self::$handlers[CommandType::GENERATE_LIB()->getValue()] = new GenerateLibHandler();
|
|
47
|
+
self::$handlers[CommandType::INVOKE_GLOBAL_FUNCTION()->getValue()] = new InvokeGlobalFunctionHandler();
|
|
48
|
+
self::$handlers[CommandType::DESTRUCT_REFERENCE()->getValue()] = new DestructReferenceHandler();
|
|
49
|
+
self::$handlers[CommandType::ARRAY_REFERENCE()->getValue()] = new ArrayReferenceHandler();
|
|
50
|
+
self::$handlers[CommandType::ARRAY_GET_ITEM()->getValue()] = new ArrayGetItemHandler();
|
|
51
|
+
self::$handlers[CommandType::ARRAY_GET_SIZE()->getValue()] = new ArrayGetSizeHandler();
|
|
52
|
+
self::$handlers[CommandType::ARRAY_GET_RANK()->getValue()] = new ArrayGetRankHandler();
|
|
53
|
+
self::$handlers[CommandType::ARRAY_SET_ITEM()->getValue()] = new ArraySetItemHandler();
|
|
54
|
+
self::$handlers[CommandType::ARRAY()->getValue()] = new ArrayHandler();
|
|
55
|
+
self::$handlers[CommandType::RETRIEVE_ARRAY()->getValue()] = new RetrieveArrayHandler();
|
|
56
|
+
self::$handlers[CommandType::SET_INSTANCE_FIELD()->getValue()] = new SetInstanceFieldHandler();
|
|
57
|
+
self::$handlers[CommandType::INVOKE_GENERIC_STATIC_METHOD()->getValue()] = new InvokeGenericStaticMethodHandler();
|
|
58
|
+
self::$handlers[CommandType::INVOKE_GENERIC_METHOD()->getValue()] = new InvokeGenericMethodHandler();
|
|
59
|
+
self::$handlers[CommandType::GET_ENUM_ITEM()->getValue()] = new GetEnumItemHandler();
|
|
60
|
+
self::$handlers[CommandType::GET_ENUM_NAME()->getValue()] = new GetEnumNameHandler();
|
|
61
|
+
self::$handlers[CommandType::GET_ENUM_VALUE()->getValue()] = new GetEnumValueHandler();
|
|
62
|
+
self::$handlers[CommandType::AS_REF()->getValue()] = new AsRefHandler();
|
|
63
|
+
self::$handlers[CommandType::AS_OUT()->getValue()] = new AsOutHandler();
|
|
64
|
+
self::$handlers[CommandType::GET_REF_VALUE()->getValue()] = new GetRefValueHandler();
|
|
65
|
+
self::$handlers[CommandType::ENABLE_NAMESPACE()->getValue()] = new EnableNamespaceHandler();
|
|
66
|
+
self::$handlers[CommandType::ENABLE_TYPE()->getValue()] = new EnableTypeHandler();
|
|
67
|
+
self::$handlers[CommandType::CREATE_NULL()->getValue()] = new CreateNullHandler();
|
|
68
|
+
self::$handlers[CommandType::GET_STATIC_METHOD_AS_DELEGATE()->getValue()] = new GetStaticMethodAsDelegateHandler();
|
|
69
|
+
self::$handlers[CommandType::GET_INSTANCE_METHOD_AS_DELEGATE()->getValue()] = new GetInstanceMethodAsDelegateHandler();
|
|
70
|
+
self::$handlers[CommandType::PASS_DELEGATE()->getValue()] = new PassDelegateHandler();
|
|
71
|
+
self::$handlers[CommandType::INVOKE_DELEGATE()->getValue()] = new InvokeDelegateHandler();
|
|
72
|
+
self::$handlers[CommandType::CONVERT_TYPE()->getValue()] = new ConvertTypeHandler();
|
|
73
|
+
self::$handlers[CommandType::ADD_EVENT_LISTENER()->getValue()] = new AddEventListenerHandler();
|
|
74
|
+
self::$handlers[CommandType::PLUGIN_WRAPPER()->getValue()] = new PluginWrapperHandler();
|
|
75
|
+
self::$handlers[CommandType::GET_ASYNC_OPERATION_RESULT()->getValue()] = new GetAsyncOperationResultHandler();
|
|
76
|
+
self::$handlers[CommandType::AS_KWARGS()->getValue()] = new AsKwargsHandler();
|
|
77
|
+
self::$handlers[CommandType::GET_RESULT_TYPE()->getValue()] = new GetResultTypeHandler();
|
|
78
|
+
self::$handlers[CommandType::GET_GLOBAL_FIELD()->getValue()] = new GetGlobalFieldHandler();
|
|
79
|
+
self::$handlers[CommandType::REGISTER_FOR_UPDATE()->getValue()] = new RegisterForUpdateHandler();
|
|
80
|
+
self::$handlers[CommandType::VALUE_FOR_UPDATE()->getValue()] = new ValueForUpdateHandler();
|
|
81
|
+
self::$handlers[CommandType::AS_DTO()->getValue()] = new AsDtoHandler();
|
|
82
|
+
self::$handlers[CommandType::DTO_PROPERTY()->getValue()] = new DtoPropertyHandler();
|
|
83
|
+
self::$handlers[CommandType::PROJECT_RESULT_AS_DTO()->getValue()] = new ProjectResultAsDtoHandler();
|
|
84
|
+
self::$handlers[CommandType::PASS_BY_VALUE()->getValue()] = new PassByValueHandler();
|
|
85
|
+
self::$handlers[CommandType::CONTEXT_METADATA()->getValue()] = new ContextMetadataHandler();
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
public static function getHandlers(): array
|
|
89
|
+
{
|
|
90
|
+
self::initializeHandlers();
|
|
91
|
+
return self::$handlers;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
public static function handleCommand(CommandInterface $command): CommandInterface
|
|
95
|
+
{
|
|
96
|
+
self::initializeHandlers();
|
|
97
|
+
try {
|
|
98
|
+
$response = self::$handlers[$command->getCommandType()->getValue()]
|
|
99
|
+
->handleCommand($command);
|
|
100
|
+
|
|
101
|
+
return self::parseResponse($response, $command->getRuntimeName());
|
|
102
|
+
} catch (Throwable $e) {
|
|
103
|
+
if ($e->getPrevious() !== null) {
|
|
104
|
+
return ExceptionSerializer::serializeException($e->getPrevious(), $command);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
return ExceptionSerializer::serializeException($e, $command);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* @param mixed $response
|
|
113
|
+
*/
|
|
114
|
+
private static function parseResponse($response, RuntimeName $runtimeName): CommandInterface
|
|
115
|
+
{
|
|
116
|
+
if (TypesHandler::isSimpleType($response)) {
|
|
117
|
+
$responseCommand = Command::createResponse(
|
|
118
|
+
$response,
|
|
119
|
+
$runtimeName
|
|
120
|
+
);
|
|
121
|
+
} elseif ($response instanceof CommandInterface) {
|
|
122
|
+
$responseCommand = $response;
|
|
123
|
+
} else {
|
|
124
|
+
if (is_array($response)) {
|
|
125
|
+
$response = new ArrayWrapper($response);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
$responseCommand = Command::createReference(
|
|
129
|
+
ReferencesCache::getInstance()->cacheReference($response),
|
|
130
|
+
$runtimeName
|
|
131
|
+
);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
$invocationContexts = RegisterForUpdateHandler::$invocationContexts;
|
|
135
|
+
|
|
136
|
+
if (!empty($invocationContexts)) {
|
|
137
|
+
$refCache = ReferencesCache::getInstance();
|
|
138
|
+
|
|
139
|
+
foreach ($invocationContexts as $contextUuid => $contextValue) {
|
|
140
|
+
if (is_array($contextValue)) {
|
|
141
|
+
foreach ($contextValue as $nestedContextUuid => $nestedContextValue) {
|
|
142
|
+
$instanceGuid = $refCache->cacheReference($nestedContextValue);
|
|
143
|
+
|
|
144
|
+
$updateContextCommand = new Command(
|
|
145
|
+
$runtimeName,
|
|
146
|
+
CommandType::VALUE_FOR_UPDATE(),
|
|
147
|
+
(string) $nestedContextUuid,
|
|
148
|
+
$instanceGuid
|
|
149
|
+
);
|
|
150
|
+
|
|
151
|
+
$responseCommand = $responseCommand
|
|
152
|
+
->addArgToPayload($updateContextCommand);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
$instanceGuid = $refCache->cacheReference($contextValue);
|
|
159
|
+
|
|
160
|
+
$updateContextCommand = new Command(
|
|
161
|
+
$runtimeName,
|
|
162
|
+
CommandType::VALUE_FOR_UPDATE(),
|
|
163
|
+
(string) $contextUuid,
|
|
164
|
+
$instanceGuid
|
|
165
|
+
);
|
|
166
|
+
|
|
167
|
+
$responseCommand = $responseCommand
|
|
168
|
+
->addArgToPayload($updateContextCommand);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
RegisterForUpdateHandler::$invocationContexts = [];
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
return $responseCommand;
|
|
175
|
+
}
|
|
176
|
+
}
|