boost::shared_ptr<ClassDefinition> ClassDefinitionWriter::createNestedClassDef(const Portable& portable) { int version = pimpl::PortableVersionHelper::getVersion(&portable, context.getVersion()); ClassDefinitionBuilder definitionBuilder(portable.getFactoryId(), portable.getClassId(), version); ClassDefinitionWriter nestedWriter(context, definitionBuilder); PortableWriter portableWriter(&nestedWriter); portable.writePortable(portableWriter); return context.registerClassDefinition(definitionBuilder.build()); }
void DefaultPortableWriter::checkPortableAttributes(const FieldDefinition& fd, const Portable& portable) { if (fd.getFactoryId() != portable.getFactoryId()) { std::stringstream errorMessage; errorMessage << "Wrong Portable type! Templated portable types are not supported! " << " Expected factory-id: " << fd.getFactoryId() << ", Actual factory-id: " << portable.getFactoryId(); throw exception::HazelcastSerializationException("DefaultPortableWriter::::checkPortableAttributes", errorMessage.str()); } if (fd.getClassId() != portable.getClassId()) { std::stringstream errorMessage; errorMessage << "Wrong Portable type! Templated portable types are not supported! " << "Expected class-id: " << fd.getClassId() << ", Actual class-id: " << portable.getClassId(); throw exception::HazelcastSerializationException("DefaultPortableWriter::::checkPortableAttributes", errorMessage.str()); } }