| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- <?php
- namespace Easemob\Agora;
- /**
- * @ignore
- * @final
- */
- final class Util
- {
- public static function assertEqual($expected, $actual)
- {
- $debug = debug_backtrace();
- $info = "\n- File:" . basename($debug[1]["file"]) . ", Func:" . $debug[1]["function"] . ", Line:" . $debug[1]["line"];
- if ($expected != $actual) {
- echo $info . "\n Assert failed" . "\n Expected :" . $expected . "\n Actual :" . $actual;
- } else {
- echo $info . "\n Assert ok";
- }
- }
- public static function packUint16($x)
- {
- return pack("v", $x);
- }
- public static function unpackUint16(&$data)
- {
- $up = unpack("v", substr($data, 0, 2));
- $data = substr($data, 2);
- return $up[1];
- }
- public static function packUint32($x)
- {
- return pack("V", $x);
- }
- public static function unpackUint32(&$data)
- {
- $up = unpack("V", substr($data, 0, 4));
- $data = substr($data, 4);
- return $up[1];
- }
- public static function packString($str)
- {
- return self::packUint16(strlen($str)) . $str;
- }
- public static function unpackString(&$data)
- {
- $len = self::unpackUint16($data);
- $up = unpack("C*", substr($data, 0, $len));
- $data = substr($data, $len);
- return implode(array_map("chr", $up));
- }
- public static function packMapUint32($arr)
- {
- ksort($arr);
- $kv = "";
- foreach ($arr as $key => $val) {
- $kv .= self::packUint16($key) . self::packUint32($val);
- }
- return self::packUint16(count($arr)) . $kv;
- }
- public static function unpackMapUint32(&$data)
- {
- $len = self::unpackUint16($data);
- $arr = [];
- for ($i = 0; $i < $len; $i++) {
- $arr[self::unpackUint16($data)] = self::unpackUint32($data);
- }
- return $arr;
- }
- }
|