From 9a042ff7c64ccecdb92ea1c9376959621721b095 Mon Sep 17 00:00:00 2001 From: hzh Date: Fri, 9 Aug 2024 16:41:54 +0800 Subject: [PATCH 1/4] Create MultiplexDataFormatter.php --- src/DataFormatter/MultiplexDataFormatter.php | 56 ++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 src/DataFormatter/MultiplexDataFormatter.php diff --git a/src/DataFormatter/MultiplexDataFormatter.php b/src/DataFormatter/MultiplexDataFormatter.php new file mode 100644 index 0000000..5f8264e --- /dev/null +++ b/src/DataFormatter/MultiplexDataFormatter.php @@ -0,0 +1,56 @@ + $id, + 'path' => $path, + 'data' => $params, + 'extra' => [], + 'context' => [], + ]; + } + + public function formatResponse($data) + { + list($id, $result) = $data; + + return [ + 'id' => $id, + 'result' => $result, + 'context' => [], + ]; + } + + public function formatErrorResponse($data) + { + list($id, $code, $message, $data) = $data; + + if (isset($data) && $data instanceof \Throwable) { + $data = array( + 'class' => get_class($data), + 'code' => $data->getCode(), + 'message' => $data->getMessage(), + ); + } + + return [ + 'id' => $id, + 'error' => [ + 'code' => $code, + 'message' => $message, + 'data' => $data, + ], + 'context' => [], + ]; + } +} From 702c7ae4324580479e42b73119a281cd1f7b9ea7 Mon Sep 17 00:00:00 2001 From: hzh Date: Fri, 9 Aug 2024 16:56:49 +0800 Subject: [PATCH 2/4] Create JsonMultiplexPacker.php --- src/Packer/JsonMultiplexPacker.php | 38 ++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/Packer/JsonMultiplexPacker.php diff --git a/src/Packer/JsonMultiplexPacker.php b/src/Packer/JsonMultiplexPacker.php new file mode 100644 index 0000000..0a59f71 --- /dev/null +++ b/src/Packer/JsonMultiplexPacker.php @@ -0,0 +1,38 @@ + Date: Fri, 9 Aug 2024 17:09:45 +0800 Subject: [PATCH 3/4] Update JsonMultiplexPacker.php --- src/Packer/JsonMultiplexPacker.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Packer/JsonMultiplexPacker.php b/src/Packer/JsonMultiplexPacker.php index 0a59f71..338bcf8 100644 --- a/src/Packer/JsonMultiplexPacker.php +++ b/src/Packer/JsonMultiplexPacker.php @@ -16,6 +16,7 @@ public function __construct() */ public function pack($data) { + $data = json_encode($data); return sprintf( '%s%s%s', pack('N', strlen($data) + 4), @@ -31,8 +32,8 @@ public function pack($data) */ public function unpack($data) { - $unpacked = unpack('Nid', substr($data, 4, 4)); + // $unpacked = unpack('Nid', substr($data, 4, 4)); $body = substr($data, 8); - return [$unpacked['id'], $body]; + return json_decode($body, true); } } From b5abbd9c2389680a83fab5e5d1f172042e417b59 Mon Sep 17 00:00:00 2001 From: Deeka Wong <8337659+huangdijia@users.noreply.github.com> Date: Fri, 9 Aug 2024 22:23:32 +0800 Subject: [PATCH 4/4] Cs Fix --- src/DataFormatter/MultiplexDataFormatter.php | 13 ++++++++++++- src/Packer/JsonMultiplexPacker.php | 4 ---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/DataFormatter/MultiplexDataFormatter.php b/src/DataFormatter/MultiplexDataFormatter.php index 5f8264e..aca343c 100644 --- a/src/DataFormatter/MultiplexDataFormatter.php +++ b/src/DataFormatter/MultiplexDataFormatter.php @@ -6,7 +6,10 @@ class MultiplexDataFormatter implements DataFormatterInterface { - + /** + * @param array $data + * @return array + */ public function formatRequest($data) { list($path, $params, $id) = $data; @@ -20,6 +23,10 @@ public function formatRequest($data) ]; } + /** + * @param array $data + * @return array + */ public function formatResponse($data) { list($id, $result) = $data; @@ -31,6 +38,10 @@ public function formatResponse($data) ]; } + /** + * @param array $data + * @return array + */ public function formatErrorResponse($data) { list($id, $code, $message, $data) = $data; diff --git a/src/Packer/JsonMultiplexPacker.php b/src/Packer/JsonMultiplexPacker.php index 338bcf8..538cdd2 100644 --- a/src/Packer/JsonMultiplexPacker.php +++ b/src/Packer/JsonMultiplexPacker.php @@ -6,10 +6,6 @@ class JsonMultiplexPacker implements PackerInterface { - public function __construct() - { - } - /** * @param mixed $data * @return string