Clean up unused stuff
This commit is contained in:
parent
8d7b910058
commit
8dedb13b5e
1
.gitignore
vendored
1
.gitignore
vendored
@ -112,3 +112,4 @@ madeline.phar.version
|
||||
big
|
||||
*.phar
|
||||
madeline.php
|
||||
.phpunit.result.cache
|
||||
|
@ -69,11 +69,6 @@ class DataCenter
|
||||
}
|
||||
}
|
||||
|
||||
public function dc_connect($dc_number)
|
||||
{
|
||||
return $this->wait($this->dc_connect_async($dc_number));
|
||||
}
|
||||
|
||||
public function dc_connect_async($dc_number): \Generator
|
||||
{
|
||||
if (isset($this->sockets[$dc_number]) && !isset($this->sockets[$dc_number]->old)) {
|
||||
|
@ -1,68 +0,0 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SocketHandler module.
|
||||
*
|
||||
* This file is part of MadelineProto.
|
||||
* MadelineProto is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
* MadelineProto is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU Affero General Public License for more details.
|
||||
* You should have received a copy of the GNU General Public License along with MadelineProto.
|
||||
* If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @author Daniil Gentili <daniil@daniil.it>
|
||||
* @copyright 2016-2018 Daniil Gentili <daniil@daniil.it>
|
||||
* @license https://opensource.org/licenses/AGPL-3.0 AGPLv3
|
||||
*
|
||||
* @link https://docs.madelineproto.xyz MadelineProto documentation
|
||||
*/
|
||||
|
||||
namespace danog\MadelineProto\Threads;
|
||||
|
||||
/**
|
||||
* Manages packing and unpacking of messages, and the list of sent and received messages.
|
||||
*/
|
||||
class SocketHandler extends \Threaded implements \Collectable
|
||||
{
|
||||
public function __construct(&$me, $current, $error)
|
||||
{
|
||||
$this->API = $me;
|
||||
$this->current = $current;
|
||||
$this->error = $error;
|
||||
}
|
||||
|
||||
/**
|
||||
* Reading connection and receiving message from server. Check the CRC32.
|
||||
*/
|
||||
public function run()
|
||||
{
|
||||
require __DIR__.'/../../../../vendor/autoload.php';
|
||||
if ($this->error !== true) {
|
||||
if ($this->error === -404) {
|
||||
if ($this->API->datacenter->sockets[$this->current]->temp_auth_key !== null) {
|
||||
$this->logger->logger(\danog\MadelineProto\Lang::$current_lang['resetting_auth_key'], \danog\MadelineProto\Logger::WARNING);
|
||||
$this->API->datacenter->sockets[$this->current]->temp_auth_key = null;
|
||||
$this->API->init_authorization();
|
||||
|
||||
throw new \danog\MadelineProto\Exception(\danog\MadelineProto\Lang::$current_lang['recreate_temp_auth_key']);
|
||||
}
|
||||
}
|
||||
|
||||
throw new \danog\MadelineProto\RPCErrorException($this->error, $this->error);
|
||||
}
|
||||
$this->API->handle_messages($this->current);
|
||||
$this->setGarbage();
|
||||
}
|
||||
|
||||
protected $garbage = false;
|
||||
|
||||
public function setGarbage()
|
||||
{
|
||||
$this->garbage = true;
|
||||
}
|
||||
|
||||
public function isGarbage()
|
||||
{
|
||||
return $this->garbage;
|
||||
}
|
||||
}
|
@ -1,83 +0,0 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* SocketReader module.
|
||||
*
|
||||
* This file is part of MadelineProto.
|
||||
* MadelineProto is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
* MadelineProto is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU Affero General Public License for more details.
|
||||
* You should have received a copy of the GNU General Public License along with MadelineProto.
|
||||
* If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* @author Daniil Gentili <daniil@daniil.it>
|
||||
* @copyright 2016-2018 Daniil Gentili <daniil@daniil.it>
|
||||
* @license https://opensource.org/licenses/AGPL-3.0 AGPLv3
|
||||
*
|
||||
* @link https://docs.madelineproto.xyz MadelineProto documentation
|
||||
*/
|
||||
|
||||
namespace danog\MadelineProto\Threads;
|
||||
|
||||
/**
|
||||
* Manages packing and unpacking of messages, and the list of sent and received messages.
|
||||
*/
|
||||
class SocketReader extends \Threaded implements \Collectable
|
||||
{
|
||||
public $ready = false;
|
||||
|
||||
public function __construct($me, $current)
|
||||
{
|
||||
$this->API = $me;
|
||||
$this->current = $current;
|
||||
}
|
||||
|
||||
public function __sleep()
|
||||
{
|
||||
return ['current', 'API', 'garbage'];
|
||||
}
|
||||
|
||||
public function __destruct()
|
||||
{
|
||||
$this->logger->logger(\danog\MadelineProto\Lang::$current_lang['shutting_down_reader_pool'].$this->current, \danog\MadelineProto\Logger::NOTICE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Reading connection and receiving message from server. Check the CRC32.
|
||||
*/
|
||||
public function run()
|
||||
{
|
||||
require __DIR__.'/../../../../vendor/autoload.php';
|
||||
$handler_pool = new \Pool($this->API->settings['threading']['handler_workers']);
|
||||
$this->ready = true;
|
||||
while ($this->API->run_workers) {
|
||||
try {
|
||||
$this->API->datacenter->sockets[$this->current]->reading = true;
|
||||
//$this->logger->logger('RECEIVING');
|
||||
$error = $this->API->recv_message($this->current);
|
||||
$this->logger->logger('NOW HANDLE');
|
||||
$handler_pool->submit(new SocketHandler($this->API, $this->current, $error));
|
||||
$this->logger->logger('SUBMITTED');
|
||||
$this->API->datacenter->sockets[$this->current]->reading = false;
|
||||
} catch (\danog\MadelineProto\NothingInTheSocketException $e) {
|
||||
//$this->logger->logger('Nothing in the socket for dc '.$this->current, \danog\MadelineProto\Logger::VERBOSE);
|
||||
}
|
||||
}
|
||||
while ($number = $handler_pool->collect()) {
|
||||
$this->logger->logger(sprintf(\danog\MadelineProto\Lang::$current_lang['shutting_down_handler_pool'], $this->current, $number), \danog\MadelineProto\Logger::NOTICE);
|
||||
}
|
||||
$this->setGarbage();
|
||||
}
|
||||
|
||||
public $garbage = false;
|
||||
|
||||
public function setGarbage()
|
||||
{
|
||||
$this->garbage = true;
|
||||
}
|
||||
|
||||
public function isGarbage()
|
||||
{
|
||||
return $this->garbage;
|
||||
}
|
||||
}
|
56
tests/danog/MadelineProto/API.php
Normal file
56
tests/danog/MadelineProto/API.php
Normal file
@ -0,0 +1,56 @@
|
||||
<?php
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
final class APITest extends TestCase
|
||||
{
|
||||
/**
|
||||
* @dataProvider protocolProvider
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testCanUseProtocol($transport, $obfuscated, $protocol, $test_mode, $ipv6): void
|
||||
{
|
||||
$ping = ['ping_id' => random_int(PHP_INT_MIN, PHP_INT_MAX)];
|
||||
$MadelineProto = new \danog\MadelineProto\API(
|
||||
[
|
||||
'app_info' => [
|
||||
'api_id' => 25628,
|
||||
'api_hash' => '1fe17cda7d355166cdaa71f04122873c'
|
||||
],
|
||||
'connection_settings' => [
|
||||
'all' => [
|
||||
'ipv6' => $ipv6,
|
||||
'test_mode' => $test_mode,
|
||||
'protocol' => $protocol,
|
||||
'obfuscated' => $obfuscated,
|
||||
'transport' => $transport,
|
||||
],
|
||||
],
|
||||
]
|
||||
);
|
||||
$pong = $MadelineProto->ping($ping);
|
||||
$this->assertContainsEquals('_', $pong, 'pong');
|
||||
$this->assertContainsEquals('ping_id', $pong, $ping['ping_id']);
|
||||
}
|
||||
public function protocolProvider(): \Generator
|
||||
{
|
||||
foreach ([false, true] as $test_mode) {
|
||||
foreach ([false, true] as $ipv6) {
|
||||
foreach (['tcp', 'ws', 'wss'] as $transport) {
|
||||
foreach ([true, false] as $obfuscated) {
|
||||
if ($transport !== 'tcp' && !$obfuscated) {
|
||||
continue;
|
||||
}
|
||||
foreach (['tcp_abridged', 'tcp_intermediate', 'tcp_intermediate_padded', 'tcp_full'] as $protocol) {
|
||||
if ($protocol === 'tcp_full' && $obfuscated) continue;
|
||||
yield [$transport, $obfuscated, $protocol, $test_mode, $ipv6];
|
||||
}
|
||||
}
|
||||
}
|
||||
yield ['tcp', false, 'http', $test_mode, $ipv6];
|
||||
yield ['tcp', false, 'https', $test_mode, $ipv6];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
7
tests/phpunit.xml
Normal file
7
tests/phpunit.xml
Normal file
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/7.1/phpunit.xsd">
|
||||
<php>
|
||||
<const name="MADELINEPROTO_TEST" value="pony"/>
|
||||
</php>
|
||||
</phpunit>
|
||||
|
Loading…
Reference in New Issue
Block a user