in src/Apache/Ignite/Data/BinaryObject.php [326:362]
public function write(BinaryCommunicator $communicator, MessageBuffer $buffer): void
{
if ($this->buffer && !$this->modified) {
$buffer->writeBuffer($this->buffer, $this->startPos, $this->length);
} else {
$this->typeBuilder->finalize($communicator);
$this->startPos = $buffer->getPosition();
$buffer->setPosition($this->startPos + BinaryObject::HEADER_LENGTH);
$this->hasSchema = count($this->fields) > 0;
if ($this->hasSchema) {
// write fields
$field = null;
foreach ($this->fields as $field) {
$field->writeValue($communicator, $buffer, ($this->typeBuilder->getField($field->getId()))->getTypeCode());
}
$this->schemaOffset = $buffer->getPosition() - $this->startPos;
$this->offsetType = $field->getOffsetType($this->startPos);
// write schema
foreach ($this->fields as $field) {
$field->writeOffset($buffer, $this->startPos, $this->offsetType);
}
} else {
$this->schemaOffset = 0;
}
$this->length = $buffer->getPosition() - $this->startPos;
$this->buffer = $buffer;
// write header
$this->writeHeader();
$this->buffer->setPosition($this->startPos + $this->length);
$this->modified = false;
}
if (Logger::isDebug()) {
Logger::logDebug('BinaryObject::write');
Logger::logBuffer($this->buffer, $this->startPos, $this->length);
}
}