Esempio n. 1
0
        /**
         * <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());
        }