mirror of
https://github.com/VTECRM/vtenext.git
synced 2026-02-26 16:18:47 +00:00
91 lines
1.9 KiB
PHP
91 lines
1.9 KiB
PHP
<?php
|
|
|
|
namespace PhpAmqpLib\Wire;
|
|
|
|
use PhpAmqpLib\Helper\BigInteger;
|
|
|
|
class AbstractClient
|
|
{
|
|
/** @var bool */
|
|
const PLATFORM_64BIT = PHP_INT_SIZE === 8;
|
|
|
|
/** @var BigInteger[][] */
|
|
protected static $bigIntegers = array();
|
|
|
|
/**
|
|
* @var bool
|
|
*/
|
|
protected static $isLittleEndian;
|
|
|
|
/**
|
|
* Converts byte-string between native and network byte order, in both directions
|
|
*
|
|
* @param string $bytes
|
|
* @return string
|
|
*/
|
|
protected function correctEndianness($bytes)
|
|
{
|
|
return self::isLittleEndian() ? $this->convertByteOrder($bytes) : $bytes;
|
|
}
|
|
|
|
/**
|
|
* @param string $bytes
|
|
* @return string
|
|
*/
|
|
protected function convertByteOrder($bytes)
|
|
{
|
|
return strrev($bytes);
|
|
}
|
|
|
|
/**
|
|
* @param int $longInt
|
|
* @return bool
|
|
*/
|
|
protected function getLongMSB($longInt)
|
|
{
|
|
return (bool) ($longInt & 0x80000000);
|
|
}
|
|
|
|
/**
|
|
* @param string $bytes
|
|
* @return bool
|
|
*/
|
|
protected function getMSB($bytes)
|
|
{
|
|
return ord($bytes[0]) > 127;
|
|
}
|
|
|
|
/**
|
|
* @return bool
|
|
*/
|
|
protected static function isLittleEndian()
|
|
{
|
|
if (self::$isLittleEndian === null) {
|
|
$tmp = unpack('S', "\x01\x00"); // to maintain 5.3 compatibility
|
|
self::$isLittleEndian = $tmp[1] === 1;
|
|
}
|
|
|
|
return self::$isLittleEndian;
|
|
}
|
|
|
|
/**
|
|
* @param string $value
|
|
* @param int $base
|
|
* @return BigInteger
|
|
*/
|
|
protected static function getBigInteger($value, $base = 10)
|
|
{
|
|
if (!isset(self::$bigIntegers[$base])) {
|
|
self::$bigIntegers[$base] = array();
|
|
}
|
|
if (isset(self::$bigIntegers[$base][$value])) {
|
|
return self::$bigIntegers[$base][$value];
|
|
}
|
|
|
|
$integer = new BigInteger($value, $base);
|
|
self::$bigIntegers[$base][$value] = $integer;
|
|
|
|
return $integer;
|
|
}
|
|
}
|