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