public MetaFrame(EncodingOptions options)
 {
     Name                    = new String();
     Description             = new LocalizedText();
     ConfigurationVersion    = new ConfigurationVersion();
     DiscoveryResponseHeader = new DiscoveryResponseHeader
     {
         ResponseType = 2
     };
 }
        public static MetaFrame Decode(Stream inputStream, EncodingOptions options)
        {
            MetaFrame instance = new MetaFrame();

            if (inputStream == null)
            {
                return(null);
            }
            instance.DiscoveryResponseHeader = DiscoveryResponseHeader.Decode(inputStream);
            bool chunkResult = DeocdeChunk(inputStream, options, ref instance);

            if (chunkResult)
            {
                return(instance);
            }
            return(null);
        }
        /// <summary>
        ///     Encodes just the DataSetMetaData message to the given Stream.
        ///     NetworkMessage Header and DiscoveryResponse are not encoded.
        /// </summary>
        /// <param name="outputStream"></param>
        public void EncodeChunk(Stream outputStream)
        {
            DiscoveryResponseHeader.Encode(outputStream);

            // DataSetWriterID
            BaseType.WriteToStream(outputStream, BitConverter.GetBytes(DataSetWriterID));
            EncodeDataTypeSchemaHeaderStructure(outputStream);

            // Name
            Name.Encode(outputStream);

            // Description
            Description.Encode(outputStream);

            // Fields
            int fieldLength = -1;

            if (FieldMetaDataList != null)
            {
                fieldLength = FieldMetaDataList.Count;
            }
            BaseType.WriteToStream(outputStream, BitConverter.GetBytes(fieldLength));
            for (int i = 0; i < fieldLength; i++)
            {
                // ReSharper disable once PossibleNullReferenceException
                FieldMetaData field = FieldMetaDataList[i] ?? new FieldMetaData(Options);
                field.Encode(outputStream);
            }

            // DataSet Class ID
            BaseType.WriteToStream(outputStream, DataSetClassID.ToByteArray());

            // Version
            ConfigurationVersion.Encode(outputStream);

            // Status Code
            BaseType.WriteToStream(outputStream, BitConverter.GetBytes(StatusCode));
        }