Esempio n. 1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="MultipleStreamReader"/> class.
        /// </summary>
        /// <param name="input">The input.</param>
        /// <param name="args">The args.</param>
        public MultipleStreamReader(Stream input, MultipleStreamCreateArgs args)
        {
            if (input == null)
            {
                throw new ArgumentNullException("input");
            }
            else if (args == null)
            {
                throw new ArgumentNullException("args");
            }

            _input            = input;
            _reader           = new QQnBinaryReader(_input);
            _verificationMode = args.VerificationMode;

            /*_maxCount =*/ _reader.ReadInt32();
            int count = _reader.ReadInt32();

            long nextHeader = _reader.ReadInt64();

            for (int i = 0; i < count; i++)
            {
                _items.Add(new MultiStreamItemHeader(_reader));
            }
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="MultipleStreamWriter"/> class.
        /// </summary>
        /// <param name="output">The output.</param>
        /// <param name="args">The args.</param>
        public MultipleStreamWriter(Stream output, MultipleStreamCreateArgs args)
        {
            if (output == null)
            {
                throw new ArgumentNullException("output");
            }

            _output   = output;
            _writer   = new QQnBinaryWriter(BaseStream);
            _maxCount = args.MaximumNumberOfStreams;

            // sizeof(_maxCount) + sizeof(_items) + sizeof(_nextHeaderPosition) + sizeof(item)*maxItems
            _startPosition = 4 + 4 + 8 + MultiStreamItemHeader.ItemSize * _maxCount;

            WriteHeader();
        }