206 lines
5.1 KiB
PHP
206 lines
5.1 KiB
PHP
<?php
|
|
|
|
namespace danog\MadelineProto\Settings;
|
|
|
|
use danog\MadelineProto\SettingsAbstract;
|
|
|
|
/**
|
|
* RPC settings.
|
|
*/
|
|
class RPC extends SettingsAbstract
|
|
{
|
|
/**
|
|
* RPC timeout.
|
|
*/
|
|
protected int $rpcTimeout = 5*60;
|
|
|
|
/**
|
|
* Flood timeout: if FLOOD_WAIT_ time is bigger than this, throw exception instead of waiting asynchronously.
|
|
*/
|
|
protected int $floodTimeout = 10*60;
|
|
|
|
/**
|
|
* Maximum number of messages to be stored in the incoming queue.
|
|
*/
|
|
protected int $limitIncoming = 100;
|
|
/**
|
|
* Maximum number of messages to be stored in the outgoing queue.
|
|
*/
|
|
protected int $limitOutgoing = 100;
|
|
/**
|
|
* Maximum number of message IDs to consider when using call queues.
|
|
*/
|
|
protected int $limitCallQueue = 100;
|
|
|
|
/**
|
|
* Encode payload with GZIP if bigger than.
|
|
*/
|
|
protected int $gzipEncodeIfGt = 1024 * 1024;
|
|
|
|
public function mergeArray(array $settings): void
|
|
{
|
|
if (isset($settings['connection_settings']['all']['drop_timeout'])) {
|
|
$this->setRpcTimeout($settings['connection_settings']['all']['drop_timeout']);
|
|
}
|
|
if (isset($settings['flood_timeout']['wait_if_lt'])) {
|
|
$this->setFloodTimeout($settings['flood_timeout']['wait_if_lt']);
|
|
}
|
|
if (isset($settings['msg_array_limit']['incoming'])) {
|
|
$this->setLimitIncoming($settings['msg_array_limit']['incoming']);
|
|
}
|
|
if (isset($settings['msg_array_limit']['outgoing'])) {
|
|
$this->setLimitOutgoing($settings['msg_array_limit']['outgoing']);
|
|
}
|
|
if (isset($settings['msg_array_limit']['call_queue'])) {
|
|
$this->setLimitCallQueue($settings['msg_array_limit']['call_queue']);
|
|
}
|
|
if (isset($settings['requests']['gzip_encode_if_gt'])) {
|
|
$this->setLimitCallQueue($settings['requests']['gzip_encode_if_gt']);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Get RPC timeout.
|
|
*
|
|
* @return int
|
|
*/
|
|
public function getRpcTimeout(): int
|
|
{
|
|
return $this->rpcTimeout;
|
|
}
|
|
|
|
/**
|
|
* Set RPC timeout.
|
|
*
|
|
* @param int $rpcTimeout RPC timeout.
|
|
*
|
|
* @return self
|
|
*/
|
|
public function setRpcTimeout(int $rpcTimeout): self
|
|
{
|
|
$this->rpcTimeout = $rpcTimeout;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Get flood timeout: if FLOOD_WAIT_ time is bigger than this, throw exception instead of waiting asynchronously.
|
|
*
|
|
* @return int
|
|
*/
|
|
public function getFloodTimeout(): int
|
|
{
|
|
return $this->floodTimeout;
|
|
}
|
|
|
|
/**
|
|
* Set flood timeout: if FLOOD_WAIT_ time is bigger than this, throw exception instead of waiting asynchronously.
|
|
*
|
|
* @param int $floodTimeout Flood timeout: if FLOOD_WAIT_ time is bigger than this, throw exception instead of waiting asynchronously
|
|
*
|
|
* @return self
|
|
*/
|
|
public function setFloodTimeout(int $floodTimeout): self
|
|
{
|
|
$this->floodTimeout = $floodTimeout;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Get maximum number of messages to be stored in the incoming queue.
|
|
*
|
|
* @return int
|
|
*/
|
|
public function getLimitIncoming(): int
|
|
{
|
|
return $this->limitIncoming;
|
|
}
|
|
|
|
/**
|
|
* Set maximum number of messages to be stored in the incoming queue.
|
|
*
|
|
* @param int $limitIncoming Maximum number of messages to be stored in the incoming queue
|
|
*
|
|
* @return self
|
|
*/
|
|
public function setLimitIncoming(int $limitIncoming): self
|
|
{
|
|
$this->limitIncoming = $limitIncoming;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Get maximum number of messages to be stored in the outgoing queue.
|
|
*
|
|
* @return int
|
|
*/
|
|
public function getLimitOutgoing(): int
|
|
{
|
|
return $this->limitOutgoing;
|
|
}
|
|
|
|
/**
|
|
* Set maximum number of messages to be stored in the outgoing queue.
|
|
*
|
|
* @param int $limitOutgoing Maximum number of messages to be stored in the outgoing queue
|
|
*
|
|
* @return self
|
|
*/
|
|
public function setLimitOutgoing(int $limitOutgoing): self
|
|
{
|
|
$this->limitOutgoing = $limitOutgoing;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Get maximum number of messages to consider when using call queues.
|
|
*
|
|
* @return int
|
|
*/
|
|
public function getLimitCallQueue(): int
|
|
{
|
|
return $this->limitCallQueue;
|
|
}
|
|
|
|
/**
|
|
* Set maximum number of messages to consider when using call queues.
|
|
*
|
|
* @param int $limitCallQueue Maximum number of messages to consider when using call queues
|
|
*
|
|
* @return self
|
|
*/
|
|
public function setLimitCallQueue(int $limitCallQueue): self
|
|
{
|
|
$this->limitCallQueue = $limitCallQueue;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Get encode payload with GZIP if bigger than.
|
|
*
|
|
* @return int
|
|
*/
|
|
public function getGzipEncodeIfGt(): int
|
|
{
|
|
return $this->gzipEncodeIfGt;
|
|
}
|
|
|
|
/**
|
|
* Set encode payload with GZIP if bigger than.
|
|
*
|
|
* @param int $gzipEncodeIfGt Encode payload with GZIP if bigger than
|
|
*
|
|
* @return self
|
|
*/
|
|
public function setGzipEncodeIfGt(int $gzipEncodeIfGt): self
|
|
{
|
|
$this->gzipEncodeIfGt = $gzipEncodeIfGt;
|
|
|
|
return $this;
|
|
}
|
|
}
|