. * * @author Daniil Gentili * @copyright 2016-2020 Daniil Gentili * @license https://opensource.org/licenses/AGPL-3.0 AGPLv3 * * @link https://docs.madelineproto.xyz MadelineProto documentation */ namespace danog\MadelineProto\Stream; use Amp\Promise; /** * Buffered stream interface. * * @author Daniil Gentili */ interface BufferedStreamInterface extends StreamInterface { /** * Get read buffer asynchronously. * * @param int $length Length of payload, as detected by this layer * * @return Promise * @psalm-return Promise */ public function getReadBuffer(&$length): Promise; /** * Get write buffer asynchronously. * * @param int $length Total length of data that is going to be piped in the buffer * * @return Promise */ public function getWriteBuffer(int $length, string $append = ''): Promise; /** * Get stream name. * * Is supposed to return __CLASS__ * * @return string */ public static function getName(): string; /** * Get underlying stream resource. * * @return RawStreamInterface */ public function getStream(): RawStreamInterface; }