/** * <inheritdoc/> */ public void WriteData(BigBinaryWriter dos) { dos.Write(GetID()); MemoryStream memStream = new MemoryStream(); BigBinaryWriter writer = new BigBinaryWriter(memStream); writer.Write((short)Encoding.UTF8.GetByteCount(name)); writer.Write(Encoding.UTF8.GetBytes(name)); string compressorName = ODSUtil.GetCompressorName(compressor); if (compressorName == null) { throw new ODSException("Unable to find compressor: " + compressor); } // Write the data for the compressor into the temp writer. writer.Write((short)Encoding.UTF8.GetByteCount(compressorName)); writer.Write(Encoding.UTF8.GetBytes(compressorName)); // Temporary Compression Stream MemoryStream memStreamTemp = new MemoryStream(); Stream compressedStream = compressor.GetCompressStream(memStreamTemp); BigBinaryWriter writerTemp = new BigBinaryWriter(compressedStream); foreach (ITag tag in value) { tag.WriteData(writerTemp); } writerTemp.Close(); writer.Write(memStreamTemp.ToArray()); dos.Write((int)writer.BaseStream.Length); writer.Close(); dos.Write(memStream.ToArray()); }