in src/Apache/Ignite/Internal/Binary/BinaryCommunicator.php [399:422]
private function writeEnum(MessageBuffer $buffer, EnumItem $enumValue): void
{
$type = $this->typeStorage->getType($enumValue->getTypeId());
if (!$type || !$type->isEnum()) {
BinaryUtils::enumSerializationError(true, sprintf('enum type id "%d" is not registered', $enumValue->getTypeId()));
}
$buffer->writeInteger($enumValue->getTypeId());
if ($enumValue->getOrdinal() !== null) {
$buffer->writeInteger($enumValue->getOrdinal());
return;
} elseif ($enumValue->getName() !== null || $enumValue->getValue() !== null) {
$enumValues = $type->getEnumValues();
if ($enumValues) {
for ($i = 0; $i < count($enumValues); $i++) {
if ($enumValue->getName() === $enumValues[$i][0] ||
$enumValue->getValue() === $enumValues[$i][1]) {
$buffer->writeInteger($i);
return;
}
}
}
}
ArgumentChecker::illegalArgument('Proper ordinal, name or value must be specified for EnumItem');
}