protected function packPayload()
{
$payload = '';
foreach ($this->values as $nameData => $valueData) {
$nameLength = strlen($nameData);
$valueLength = strlen($valueData);
$isLongName = $nameLength > 127;
$isLongValue = $valueLength > 127;
$formatParts = array($isLongName ? 'N' : 'C', $isLongValue ? 'N' : 'C', "a{$nameLength}", "a{$valueLength}");
$format = join('', $formatParts);
$payload .= pack($format, $isLongName ? $nameLength | 0x80000000 : $nameLength, $isLongValue ? $valueLength | 0x80000000 : $valueLength, $nameData, $valueData);
}
return $payload;
}