ekstazi / async-binary-stream
一组用于处理二进制数据的amphp流。它可以读取指定长度的ByteBuffer并写入它。
1.1
2020-04-11 09:25 UTC
Requires
- php: >=7.2
- amphp/byte-stream: ^1.7
- phpinnacle/buffer: ^1.0
Requires (Dev)
- amphp/php-cs-fixer-config: dev-master
- amphp/phpunit-util: ^1.1
- phpunit/phpunit: ^8 || ^7
This package is auto-updated.
Last update: 2024-09-11 19:59:34 UTC
README
一组用于处理二进制数据的amphp流。它可以读取 ByteBuffer 并指定长度写入。
安装
此包可以作为Composer依赖项安装。
composer require ekstazi/async-binary-stream
要求
PHP 7.2+
用法
用于读取和解析数据
use \ekstazi\stream\binary\ByteReader; use \Amp\ByteStream\InputStream; use \PHPinnacle\Buffer\ByteBuffer; /** @var InputStream $inputStream */ $reader = new ByteReader($inputStream); /** @var ByteBuffer $buffer */ $buffer = yield $reader->readBytes(4); $opCode = $buffer->consumeInt16(); $mask = $buffer->consumeInt16();
用于写入数据
use \ekstazi\stream\binary\ByteWriter; use \Amp\ByteStream\OutputStream; use \PHPinnacle\Buffer\ByteBuffer; $opCode = 2; $mask = 1; /** @var OutputStream $outputStream */ $writer = new ByteWriter($outputStream); /** @var ByteBuffer $buffer */ $buffer = new ByteBuffer(); $buffer->appendInt16($opCode); $buffer->appendInt16($mask); yield $writer->writeBytes($buffer);
用于记录读取的数据
use \ekstazi\stream\binary\ByteReader; use \ekstazi\stream\binary\ByteRecorder; use \Amp\ByteStream\InputStream; use \PHPinnacle\Buffer\ByteBuffer; /** @var InputStream $inputStream */ $reader = new ByteReader($inputStream); $recorder = new ByteRecorder($reader); $recorder->startRecord(); /** @var ByteBuffer $buffer */ $buffer = yield $recorder->readBytes(4); $opCode = $buffer->consumeInt16(); $mask = $buffer->consumeInt16(); // .... $buffer = yield $recorder->readBytes(12); // .... /** @var ByteBuffer $recorded The data recorded after startRecord */ $recorded = $recorder->stopRecord();