diff --git a/src/CommandBusClient.php b/src/CommandBusClient.php index 09bbd92..2e79f9f 100644 --- a/src/CommandBusClient.php +++ b/src/CommandBusClient.php @@ -73,8 +73,8 @@ class CommandBusClient implements CommandBusInterface function (DuplexStreamInterface $connection) { $this->connection = $connection; $this->emit(self::EVENT_CONNECTED); - $connection->on('error', function () { - $this->emit(self::EVENT_DISCONNECTED); + $connection->on('error', function ($error) { + $this->emit(self::EVENT_DISCONNECTED, [ $error ]); if ($this->autoReconnect) { Loop::addTimer(1, $this->reconnect(...)); } @@ -124,15 +124,14 @@ class CommandBusClient implements CommandBusInterface $this->emit(self::EVENT_NOTIFY, [ $event, $data ]); break; case Message::MSGTYPE_ERROR: // error + var_dump($message); $uuid = $message->getUuid(); $error = $message->getData()['error']; - if ($uuid === "") { - $this->emit('error', [ $error ]); + if ($uuid && array_key_exists($uuid, $this->pending)) { + $this->pending[$uuid]->reject(new \Exception($error)); + unset($this->pending[$uuid]); } else { - if (array_key_exists($uuid, $this->pending)) { - $this->pending[$uuid]->reject(new \Exception($error)); - unset($this->pending[$uuid]); - } + $this->emit('error', [ $error ]); } break; default: diff --git a/src/Message.php b/src/Message.php index add2384..ff599df 100644 --- a/src/Message.php +++ b/src/Message.php @@ -29,16 +29,16 @@ class Message implements JsonSerializable private array $messageData; - public function __construct(string $messageType, array $messageData = [], ?string $uuid = null) + public function __construct(string $messageType, array $messageData = [], null|string|false $uuid = null) { - $this->uuid = $uuid ?? (string)Uuid::v7(); + $this->uuid = ($uuid===null) ? (string)Uuid::v7() : $uuid; $this->messageType = $messageType; $this->messageData = $messageData; } public function getUuid(): string { - return $this->uuid; + return $this->uuid ? $this->uuid : ""; } public function getType(): string @@ -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']??false); } public function asResult($result): Message