/// <summary> /// Constructor. /// </summary> /// <param name="type">Type.</param> /// <param name="typeId">Type ID.</param> /// <param name="typeName">Type name.</param> /// <param name="userType">User type flag.</param> /// <param name="nameMapper">Name converter.</param> /// <param name="idMapper">Mapper.</param> /// <param name="serializer">Serializer.</param> /// <param name="keepDeserialized">Whether to cache deserialized value in IBinaryObject</param> /// <param name="affKeyFieldName">Affinity field key name.</param> /// <param name="isEnum">Enum flag.</param> /// <param name="isRegistered">Registered flag.</param> public BinaryFullTypeDescriptor( Type type, int typeId, string typeName, bool userType, IBinaryNameMapper nameMapper, IBinaryIdMapper idMapper, IBinarySerializerInternal serializer, bool keepDeserialized, string affKeyFieldName, bool isEnum, bool isRegistered = true) { _type = type; _typeId = typeId; _typeName = typeName; _userType = userType; _nameMapper = nameMapper; _idMapper = idMapper; _serializer = serializer; _keepDeserialized = keepDeserialized; _affKeyFieldName = affKeyFieldName; _isEnum = isEnum; _isRegistered = isRegistered; _schema = new BinaryObjectSchema(); }
/// <summary> /// Reads the schema according to this header data. /// </summary> /// <param name="stream">The stream.</param> /// <param name="position">The position.</param> /// <param name="hdr">The header.</param> /// <param name="schema">The schema.</param> /// <param name="ignite">The ignite.</param> /// <returns> /// Schema. /// </returns> public static BinaryObjectSchemaField[] ReadSchema(IBinaryStream stream, int position, BinaryObjectHeader hdr, BinaryObjectSchema schema, IIgniteInternal ignite) { Debug.Assert(stream != null); Debug.Assert(schema != null); return(ReadSchema(stream, position, hdr, () => GetFieldIds(hdr, schema, ignite))); }
/// <summary> /// Reads the schema according to this header data. /// </summary> /// <param name="stream">The stream.</param> /// <param name="position">The position.</param> /// <param name="hdr">The header.</param> /// <param name="schema">The schema.</param> /// <param name="marsh">The marshaller.</param> /// <returns> /// Schema. /// </returns> public static BinaryObjectSchemaField[] ReadSchema(IBinaryStream stream, int position, BinaryObjectHeader hdr, BinaryObjectSchema schema, Marshaller marsh) { Debug.Assert(stream != null); Debug.Assert(schema != null); Debug.Assert(marsh != null); return(ReadSchema(stream, position, hdr, () => GetFieldIds(hdr, schema, marsh))); }
/// <summary> /// Reads the schema according to this header data. /// </summary> /// <param name="stream">The stream.</param> /// <param name="position">The position.</param> /// <param name="hdr">The header.</param> /// <param name="schema">The schema.</param> /// <param name="marsh">The marshaller.</param> /// <returns> /// Schema. /// </returns> public static BinaryObjectSchemaField[] ReadSchema(IBinaryStream stream, int position, BinaryObjectHeader hdr, BinaryObjectSchema schema, Marshaller marsh) { Debug.Assert(stream != null); Debug.Assert(schema != null); Debug.Assert(marsh != null); return ReadSchema(stream, position, hdr, () => GetFieldIds(hdr, schema, marsh)); }
/// <summary> /// Initializes a new instance of the <see cref="BinaryFullTypeDescriptor"/> class, /// copying values from specified descriptor. /// </summary> /// <param name="desc">The descriptor to copy from.</param> /// <param name="type">Type.</param> /// <param name="serializer">Serializer.</param> /// <param name="isRegistered">Registered flag.</param> public BinaryFullTypeDescriptor(BinaryFullTypeDescriptor desc, Type type, IBinarySerializerInternal serializer, bool isRegistered) { _type = type; _typeId = desc._typeId; _typeName = desc._typeName; _userType = desc._userType; _nameMapper = desc._nameMapper; _idMapper = desc._idMapper; _serializer = serializer; _keepDeserialized = desc._keepDeserialized; _affKeyFieldName = desc._affKeyFieldName; _isEnum = desc._isEnum; _isRegistered = isRegistered; _schema = desc._schema; _writerTypeStruct = desc._writerTypeStruct; _readerTypeStructure = desc._readerTypeStructure; }
/// <summary> /// Gets the field ids. /// </summary> private static int[] GetFieldIds(BinaryObjectHeader hdr, BinaryObjectSchema schema, Marshaller marsh) { var fieldIds = schema.Get(hdr.SchemaId); if (fieldIds == null) { if (marsh.Ignite != null) { fieldIds = marsh.Ignite.BinaryProcessor.GetSchema(hdr.TypeId, hdr.SchemaId); } if (fieldIds == null) { throw new BinaryObjectException("Cannot find schema for object with compact footer [" + "typeId=" + hdr.TypeId + ", schemaId=" + hdr.SchemaId + ']'); } } return(fieldIds); }
/// <summary> /// Constructor. /// </summary> /// <param name="type">Type.</param> /// <param name="typeId">Type ID.</param> /// <param name="typeName">Type name.</param> /// <param name="userType">User type flag.</param> /// <param name="nameMapper">Name converter.</param> /// <param name="idMapper">Mapper.</param> /// <param name="serializer">Serializer.</param> /// <param name="keepDeserialized">Whether to cache deserialized value in IBinaryObject</param> /// <param name="affKeyFieldName">Affinity field key name.</param> /// <param name="isEnum">Enum flag.</param> /// <param name="comparer">Equality comparer.</param> /// <param name="isRegistered">Registered flag.</param> public BinaryFullTypeDescriptor( Type type, int typeId, string typeName, bool userType, IBinaryNameMapper nameMapper, IBinaryIdMapper idMapper, IBinarySerializerInternal serializer, bool keepDeserialized, string affKeyFieldName, bool isEnum, IEqualityComparer <IBinaryObject> comparer, bool isRegistered = true) { _type = type; _typeId = typeId; _typeName = typeName; _userType = userType; _nameMapper = nameMapper; _idMapper = idMapper; _serializer = serializer; _keepDeserialized = keepDeserialized; _affKeyFieldName = affKeyFieldName; _isEnum = isEnum; _equalityComparer = comparer as IBinaryEqualityComparer; if (comparer != null && _equalityComparer == null) { throw new IgniteException(string.Format("Unsupported IEqualityComparer<IBinaryObject> " + "implementation: {0}. Only predefined implementations " + "are supported.", comparer.GetType())); } _isRegistered = isRegistered; _schema = new BinaryObjectSchema(); }
/// <summary> /// Gets the field ids. /// </summary> private static int[] GetFieldIds(BinaryObjectHeader hdr, BinaryObjectSchema schema, IIgniteInternal ignite) { return(schema.Get(hdr.SchemaId) ?? GetFieldIds(hdr, ignite)); }
/// <summary> /// Gets the field ids. /// </summary> private static int[] GetFieldIds(BinaryObjectHeader hdr, BinaryObjectSchema schema, Marshaller marsh) { var fieldIds = schema.Get(hdr.SchemaId); if (fieldIds == null) { if (marsh.Ignite != null) fieldIds = marsh.Ignite.ClusterGroup.GetSchema(hdr.TypeId, hdr.SchemaId); if (fieldIds == null) throw new BinaryObjectException("Cannot find schema for object with compact footer [" + "typeId=" + hdr.TypeId + ", schemaId=" + hdr.SchemaId + ']'); } return fieldIds; }