From d0fa8d6f63003a6cb2f1897158bc587ab2344ea3 Mon Sep 17 00:00:00 2001 From: Evgeny Zinoviev Date: Thu, 13 Apr 2023 02:14:53 +0300 Subject: 1.6.0: support signals --- src/messages/Message.php | 43 +++++++++++++++++++++++++ src/messages/PingMessage.php | 17 ++++++++++ src/messages/PongMessage.php | 17 ++++++++++ src/messages/RequestMessage.php | 60 ++++++++++++++++++++++++++++++++++ src/messages/ResponseMessage.php | 69 ++++++++++++++++++++++++++++++++++++++++ 5 files changed, 206 insertions(+) create mode 100644 src/messages/Message.php create mode 100644 src/messages/PingMessage.php create mode 100644 src/messages/PongMessage.php create mode 100644 src/messages/RequestMessage.php create mode 100644 src/messages/ResponseMessage.php (limited to 'src/messages') diff --git a/src/messages/Message.php b/src/messages/Message.php new file mode 100644 index 0000000..df7464e --- /dev/null +++ b/src/messages/Message.php @@ -0,0 +1,43 @@ +type = $type; + } + + /** + * @return array + */ + abstract protected function getContent(): array; + + /** + * @return string + */ + public function serialize(): string + { + $data = [$this->type]; + $content = $this->getContent(); + + if (!empty($content)) + $data[] = $content; + + return json_encode($data); + } + +} \ No newline at end of file diff --git a/src/messages/PingMessage.php b/src/messages/PingMessage.php new file mode 100644 index 0000000..fa61379 --- /dev/null +++ b/src/messages/PingMessage.php @@ -0,0 +1,17 @@ +requestData = $request_data; + $this->requestType = $request_type; + } + + /** + * @param string $password + */ + public function setPassword(string $password) + { + $this->password = $password; + } + + /** + * @param int $no + */ + public function setRequestNo(int $no) + { + $this->requestNo = $no; + } + + /** + * @return string[] + */ + protected function getContent(): array + { + $request = [ + 'type' => $this->requestType, + 'no' => $this->requestNo, + ]; + + if (!is_null($this->requestData)) + $request['data'] = (object)$this->requestData; + + if (!is_null($this->password)) + $request['password'] = $this->password; + + return $request; + } + +} \ No newline at end of file diff --git a/src/messages/ResponseMessage.php b/src/messages/ResponseMessage.php new file mode 100644 index 0000000..5101ed4 --- /dev/null +++ b/src/messages/ResponseMessage.php @@ -0,0 +1,69 @@ +requestNo = $request_no; + $this->error = $error; + $this->data = $data; + } + + /** + * @return array + */ + protected function getContent(): array + { + $response = [ + 'no' => $this->requestNo + ]; + + if (!is_null($this->error)) + $response['error'] = $this->error; + + if (!is_null(!$this->data)) + $response['data'] = $this->data; + + return $response; + } + + /** + * @return mixed + */ + public function getError() + { + return $this->error; + } + + /** + * @return mixed + */ + public function getData() + { + return $this->data; + } + + /** + * @return int + */ + public function getRequestNo(): int + { + return $this->requestNo; + } + +} \ No newline at end of file -- cgit v1.2.3