From 9f4e245c8df674404155bf7d82757cfe96e07886 Mon Sep 17 00:00:00 2001 From: Daniil Gentili Date: Sat, 14 Dec 2019 12:10:09 +0100 Subject: [PATCH] Reduce overhead --- .../MTProtoTransport/ObfuscatedStream.php | 74 ++++--------------- 1 file changed, 15 insertions(+), 59 deletions(-) diff --git a/src/danog/MadelineProto/Stream/MTProtoTransport/ObfuscatedStream.php b/src/danog/MadelineProto/Stream/MTProtoTransport/ObfuscatedStream.php index 6c84cbba..4d4b1bd0 100644 --- a/src/danog/MadelineProto/Stream/MTProtoTransport/ObfuscatedStream.php +++ b/src/danog/MadelineProto/Stream/MTProtoTransport/ObfuscatedStream.php @@ -32,7 +32,7 @@ use danog\MadelineProto\Stream\ConnectionContext; * * @author Daniil Gentili */ -class ObfuscatedStream implements BufferedProxyStreamInterface +class ObfuscatedStream extends CtrStream implements BufferedProxyStreamInterface { use Stream; @@ -76,57 +76,23 @@ class ObfuscatedStream implements BufferedProxyStreamInterface $iv = \substr($random, 40, 16); $ivRev = \substr($reversed, 40, 16); - $this->stream = new CtrStream; - $this->stream->setExtra([ - 'encrypt' => [ - 'key' => $key, - 'iv' => $iv - ], - 'decrypt' => [ - 'key' => $keyRev, - 'iv' => $ivRev + parent::setExtra( + [ + 'encrypt' => [ + 'key' => $key, + 'iv' => $iv + ], + 'decrypt' => [ + 'key' => $keyRev, + 'iv' => $ivRev + ] ] - ]); - yield $this->stream->connect($ctx); + ); + yield from parent::connectGenerator($ctx); - $random = \substr_replace($random, \substr(@$this->stream->getEncryptor()->encrypt($random), 56, 8), 56, 8); - - yield $this->stream->getPlainStream()->write($random); - } + $random = \substr_replace($random, \substr(@$this->getEncryptor()->encrypt($random), 56, 8), 56, 8); - /** - * Async close. - * - * @return Promise - */ - public function disconnect() - { - return $this->stream->disconnect(); - } - - - /** - * Get read buffer asynchronously. - * - * @param int $length Length of payload, as detected by this layer - * - * @return Promise - */ - public function getReadBuffer(&$length): Promise - { - return $this->stream->getReadBuffer($length); - } - - /** - * 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 - { - return $this->stream->getWriteBuffer($length, $append); + yield $this->getPlainStream()->write($random); } @@ -151,16 +117,6 @@ class ObfuscatedStream implements BufferedProxyStreamInterface $this->extra = $extra; } - /** - * {@inheritdoc} - * - * @return EncryptableSocket - */ - public function getSocket(): EncryptableSocket - { - return $this->stream->getSocket(); - } - public static function getName(): string { return __CLASS__;