本文整理汇总了PHP中raklib\Binary::readLTriad方法的典型用法代码示例。如果您正苦于以下问题:PHP Binary::readLTriad方法的具体用法?PHP Binary::readLTriad怎么用?PHP Binary::readLTriad使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类raklib\Binary
的用法示例。
在下文中一共展示了Binary::readLTriad方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: fromBinary
/**
* @param string $binary
* @param bool $internal
* @param int &$offset
*
* @return EncapsulatedPacket
*/
public static function fromBinary($binary, $internal = false, &$offset = null)
{
$packet = new EncapsulatedPacket();
$flags = ord($binary[0]);
$packet->reliability = $reliability = ($flags & 0b11100000) >> 5;
$packet->hasSplit = $hasSplit = ($flags & 0b10000) > 0;
if ($internal) {
$length = Binary::readInt(substr($binary, 1, 4));
$packet->identifierACK = Binary::readInt(substr($binary, 5, 4));
$offset = 9;
} else {
$length = (int) ceil(Binary::readShort(substr($binary, 1, 2)) / 8);
$offset = 3;
$packet->identifierACK = null;
}
/*
* From http://www.jenkinssoftware.com/raknet/manual/reliabilitytypes.html
*
* Default: 0b010 (2) or 0b011 (3)
*
* 0: UNRELIABLE
* 1: UNRELIABLE_SEQUENCED
* 2: RELIABLE
* 3: RELIABLE_ORDERED
* 4: RELIABLE_SEQUENCED
* 5: UNRELIABLE_WITH_ACK_RECEIPT
* 6: RELIABLE_WITH_ACK_RECEIPT
* 7: RELIABLE_ORDERED_WITH_ACK_RECEIPT
*/
if ($reliability === 2 or $reliability === 3 or $reliability === 4 or $reliability === 6 or $reliability === 7) {
$packet->messageIndex = Binary::readLTriad(substr($binary, $offset, 3));
$offset += 3;
} else {
$packet->messageIndex = null;
}
if ($reliability === 1 or $reliability === 3 or $reliability === 4 or $reliability === 7) {
$packet->orderIndex = Binary::readLTriad(substr($binary, $offset, 3));
$offset += 3;
$packet->orderChannel = ord($binary[$offset++]);
} else {
$packet->orderIndex = null;
$packet->orderChannel = null;
}
if ($hasSplit) {
$packet->splitCount = Binary::readInt(substr($binary, $offset, 4));
$offset += 4;
$packet->splitID = Binary::readShort(substr($binary, $offset, 2));
$offset += 2;
$packet->splitIndex = Binary::readInt(substr($binary, $offset, 4));
$offset += 4;
} else {
$packet->splitCount = null;
$packet->splitID = null;
$packet->splitIndex = null;
}
$packet->buffer = substr($binary, $offset, $length);
$offset += $length;
return $packet;
}
示例2: fromBinary
/**
* @param string $binary
* @param bool $internal
* @param int &$offset
*
* @return EncapsulatedPacket
*/
public static function fromBinary($binary, $internal = false, &$offset = null)
{
$packet = new EncapsulatedPacket();
$flags = ord($binary[0]);
$packet->reliability = $reliability = ($flags & 0b11100000) >> 5;
$packet->hasSplit = $hasSplit = ($flags & 0b10000) > 0;
if ($internal) {
$length = Binary::readInt(substr($binary, 1, 4));
$packet->identifierACK = Binary::readInt(substr($binary, 5, 4));
$offset = 9;
} else {
$length = (int) ceil(Binary::readShort(substr($binary, 1, 2)) / 8);
$offset = 3;
$packet->identifierACK = null;
}
if ($reliability > PacketReliability::UNRELIABLE) {
if ($reliability >= PacketReliability::RELIABLE and $reliability !== PacketReliability::UNRELIABLE_WITH_ACK_RECEIPT) {
$packet->messageIndex = Binary::readLTriad(substr($binary, $offset, 3));
$offset += 3;
}
if ($reliability <= PacketReliability::RELIABLE_SEQUENCED and $reliability !== PacketReliability::RELIABLE) {
$packet->orderIndex = Binary::readLTriad(substr($binary, $offset, 3));
$offset += 3;
$packet->orderChannel = ord($binary[$offset++]);
}
}
if ($hasSplit) {
$packet->splitCount = Binary::readInt(substr($binary, $offset, 4));
$offset += 4;
$packet->splitID = Binary::readShort(substr($binary, $offset, 2));
$offset += 2;
$packet->splitIndex = Binary::readInt(substr($binary, $offset, 4));
$offset += 4;
}
$packet->buffer = substr($binary, $offset, $length);
$offset += $length;
return $packet;
}
示例3: getLTriad
protected function getLTriad()
{
return Binary::readLTriad($this->get(3));
}