Exemplo n.º 1
0
        /// <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();
        }
Exemplo n.º 2
0
        /// <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));
        }
Exemplo n.º 5
0
        /// <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);
        }
Exemplo n.º 7
0
        /// <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();
        }
Exemplo n.º 8
0
 /// <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;
        }