From 1255db21abbeb137fdde7337df21f5988ef98661 Mon Sep 17 00:00:00 2001 From: Christopher Vagnetoft Date: Fri, 1 Mar 2024 19:21:28 +0100 Subject: [PATCH] Improve error handling --- src/CommandBusClient.php | 12 ++++++++++++ src/Message.php | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/CommandBusClient.php b/src/CommandBusClient.php index c0509b6..22a95dd 100644 --- a/src/CommandBusClient.php +++ b/src/CommandBusClient.php @@ -121,6 +121,18 @@ class CommandBusClient implements CommandBusInterface $data = (array)($message->getData()['data']??[]); $this->emit(self::EVENT_NOTIFY, [ $event, $data ]); break; + case Message::MSGTYPE_ERROR: // error + $uuid = $message->getUuid(); + $error = $message->getData()['error']; + if ($uuid === "") { + $this->emit('error', [ $error ]); + } else { + if (array_key_exists($uuid, $this->pending)) { + $this->pending[$uuid]->reject(new \Exception($error)); + unset($this->pending[$uuid]); + } + } + break; default: $this->connection->end('{"msg":"error","data":{"error":"Unexpected message type"}}'); } diff --git a/src/Message.php b/src/Message.php index 0309b9e..add2384 100644 --- a/src/Message.php +++ b/src/Message.php @@ -63,7 +63,7 @@ class Message implements JsonSerializable if (!$json || empty($json['msg'])) { throw new MessageException("Invalid data"); } - return new Message($json['msg'], $json['data'], $json['uuid']); + return new Message($json['msg'], $json['data'], $json['uuid']??""); } public function asResult($result): Message