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_CHANNEL_MSG_RECV_V3:
|
||||
case CoreProtocol::RESP_CODE_CHANNEL_MSG_RECV:
|
||||
return $payload;
|
||||
return self::parseMsg($payload);
|
||||
case CoreProtocol::PUSH_CODE_ADVERT:
|
||||
case CoreProtocol::PUSH_CODE_NEW_ADVERT:
|
||||
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 {
|
||||
$data = [
|
||||
'code'=>ord($payload[0]),
|
||||
|
||||
Reference in New Issue
Block a user