in src/Apache/Ignite/Internal/Binary/BinaryCommunicator.php [91:174]
public function writeObject(MessageBuffer $buffer, $object, $objectType = null, bool $writeObjectType = true): void
{
BinaryUtils::checkCompatibility($object, $objectType);
if ($object === null) {
$buffer->writeByte(ObjectType::NULL);
return;
}
$objectType = $objectType ? $objectType : BinaryUtils::calcObjectType($object);
$objectTypeCode = BinaryUtils::getTypeCode($objectType);
if ($writeObjectType) {
$buffer->writeByte($objectTypeCode);
}
switch ($objectTypeCode) {
case ObjectType::BYTE:
case ObjectType::SHORT:
case ObjectType::INTEGER:
case ObjectType::LONG:
case ObjectType::FLOAT:
case ObjectType::DOUBLE:
$buffer->writeNumber($object, $objectTypeCode);
break;
case ObjectType::CHAR:
$buffer->writeChar($object);
break;
case ObjectType::BOOLEAN:
$buffer->writeBoolean($object);
break;
case ObjectType::STRING:
$buffer->writeString($object);
break;
case ObjectType::UUID:
$this->writeUUID($buffer, $object);
break;
case ObjectType::DATE:
$this->writeDate($buffer, $object);
break;
case ObjectType::ENUM:
$this->writeEnum($buffer, $object);
break;
case ObjectType::DECIMAL:
$this->writeDecimal($buffer, $object);
break;
case ObjectType::TIME:
$this->writeTime($buffer, $object);
break;
case ObjectType::TIMESTAMP:
$this->writeTimestamp($buffer, $object);
break;
case ObjectType::BYTE_ARRAY:
case ObjectType::SHORT_ARRAY:
case ObjectType::INTEGER_ARRAY:
case ObjectType::LONG_ARRAY:
case ObjectType::FLOAT_ARRAY:
case ObjectType::DOUBLE_ARRAY:
case ObjectType::CHAR_ARRAY:
case ObjectType::BOOLEAN_ARRAY:
case ObjectType::STRING_ARRAY:
case ObjectType::UUID_ARRAY:
case ObjectType::DATE_ARRAY:
case ObjectType::OBJECT_ARRAY:
case ObjectType::ENUM_ARRAY:
case ObjectType::DECIMAL_ARRAY:
case ObjectType::TIMESTAMP_ARRAY:
case ObjectType::TIME_ARRAY:
$this->writeArray($buffer, $object, $objectType, $objectTypeCode);
break;
case ObjectType::COLLECTION:
$this->writeCollection($buffer, $object, $objectType);
break;
case ObjectType::MAP:
$this->writeMap($buffer, $object, $objectType);
break;
case ObjectType::BINARY_OBJECT:
$this->writeBinaryObject($buffer, $object);
break;
case ObjectType::COMPLEX_OBJECT:
$this->writeComplexObject($buffer, $object, $objectType);
break;
default:
BinaryUtils::unsupportedType($objectType);
}
}