parse messages
This commit is contained in:
+36
-1
@@ -59,7 +59,7 @@ class CoreParser {
|
|||||||
case CoreProtocol::RESP_CODE_CONTACT_MSG_RECV_V3:
|
case CoreProtocol::RESP_CODE_CONTACT_MSG_RECV_V3:
|
||||||
case CoreProtocol::RESP_CODE_CHANNEL_MSG_RECV_V3:
|
case CoreProtocol::RESP_CODE_CHANNEL_MSG_RECV_V3:
|
||||||
case CoreProtocol::RESP_CODE_CHANNEL_MSG_RECV:
|
case CoreProtocol::RESP_CODE_CHANNEL_MSG_RECV:
|
||||||
return $payload;
|
return self::parseMsg($payload);
|
||||||
case CoreProtocol::PUSH_CODE_ADVERT:
|
case CoreProtocol::PUSH_CODE_ADVERT:
|
||||||
case CoreProtocol::PUSH_CODE_NEW_ADVERT:
|
case CoreProtocol::PUSH_CODE_NEW_ADVERT:
|
||||||
return self::parseAdvert($payload);
|
return self::parseAdvert($payload);
|
||||||
@@ -69,6 +69,41 @@ class CoreParser {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected static function parseMsg(string $payload): mixed {
|
||||||
|
$idx = 0;
|
||||||
|
|
||||||
|
$data = [
|
||||||
|
'code'=>ord($payload[$idx])
|
||||||
|
];
|
||||||
|
$idx++;
|
||||||
|
|
||||||
|
if( ord($payload[0]) == CoreProtocol::RESP_CODE_CHANNEL_MSG_RECV_V3 ) {
|
||||||
|
$alt = [
|
||||||
|
'snr'=>unpack('V', substr($payload, 1, 4))[1],
|
||||||
|
'reserved1'=>0,
|
||||||
|
'reserved2'=>0
|
||||||
|
];
|
||||||
|
|
||||||
|
$data = array_merge($data, $alt);
|
||||||
|
$idx = 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
$remains = [
|
||||||
|
'channel_idx'=>ord($payload[$idx]),
|
||||||
|
'path_len'=>ord($payload[$idx+1]),
|
||||||
|
'type'=>ord($payload[$idx+2]),
|
||||||
|
'timestamp'=>unpack('V', substr($payload, $idx+3, 4))[1],
|
||||||
|
'message'=>substr($payload, $idx+7)
|
||||||
|
];
|
||||||
|
|
||||||
|
return array_merge($data, $remains);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param string $payload
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
protected static function parseAdvert(string $payload): mixed {
|
protected static function parseAdvert(string $payload): mixed {
|
||||||
$data = [
|
$data = [
|
||||||
'code'=>ord($payload[0]),
|
'code'=>ord($payload[0]),
|
||||||
|
|||||||
Reference in New Issue
Block a user