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)); }