Ejemplo n.º 1
0
        public BlobChunkVerificationResultInfo OpenForWrite(Stream baseStream,
                                                            long startPosition        = 0, long length = TypeExtensions.kNoneInt64,
                                                            Shell.EndianFormat endian = Shell.EndianFormat.Big)
        {
            Contract.Requires(IsClosed);
            Contract.Requires <ArgumentNullException>(baseStream != null);
            Contract.Requires <ArgumentException>(baseStream.CanSeek);
            Contract.Requires <ArgumentException>(baseStream.HasPermissions(FileAccess.Write));
            Contract.Requires(length.IsNoneOrPositive());
            var result = BlobChunkVerificationResultInfo.ValidResult;

            OpenUnderlyingStream(baseStream, FileAccess.Write, endian);
            OpenStartPosition(baseStream, startPosition);

            EndPosition = length.IsNotNone()
                                ? StartPosition + length
                                : length;
            mFooterPosition             = TypeExtensions.kNoneInt64;
            UnderlyingStream.StreamMode = FileAccess.Write;

            if (EndPosition.IsNotNone())
            {
                OpenVerifyAssumedStreamSize(ref result);
            }

            return(result);
        }