Example #1
0
        /// <summary>
        /// Deserialize a DynamicSchema record stored as binary data.
        /// </summary>
        /// <param name="binary">raw binary record data</param>
        /// <returns>dictionary of field ID to field value</returns>
        public static Dictionary <int, object> DeserializeRecord(byte[] binary)
        {
            using (MemoryStream ms = new MemoryStream(binary))
            {
                using (BinaryReader br = getBinaryReader(ms))
                {
                    // Read version code
                    byte serializerVersionCode          = br.ReadByte();
                    SerializerVersion serializerVersion = (SerializerVersion)serializerVersionCode;

                    // Determine the correct deserializer
                    DynamicSchemaDeserializer deserializer = null;
                    switch (serializerVersion)
                    {
                    case SerializerVersion.VER_3_12:
                        deserializer = new Deserializers.Deserializer0312();
                        break;
                    }

                    if (deserializer == null)
                    {
                        throw new NotSupportedException(String.Format("Serializer version {0} not supported", serializerVersionCode));
                    }

                    // Perform deserialization
                    return(deserializer.DeserializeRecord(br));
                }
            }
        }
Example #2
0
        /// <summary>
        /// Deserialize a DynamicSchema field stored as binary data.
        /// </summary>
        /// <param name="br">binary data reader</param>
        /// <returns>deserialized field data</returns>
        public static object DeserializeField(BinaryReader br)
        {
            // Read version code
            byte serializerVersionCode          = br.ReadByte();
            SerializerVersion serializerVersion = (SerializerVersion)serializerVersionCode;

            // Determine the correct deserializer
            DynamicSchemaDeserializer deserializer = null;

            switch (serializerVersion)
            {
            case SerializerVersion.VER_3_12:
                deserializer = new Deserializers.Deserializer0312();
                break;
            }

            if (deserializer == null)
            {
                throw new NotSupportedException(String.Format("Serializer version {0} not supported", serializerVersionCode));
            }

            // Perform deserialization
            return(deserializer.DeserializeField(br));
        }