public function writeObject()

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);
        }
    }