MaybeThrowIOException() private method

private MaybeThrowIOException ( ) : void
return void
コード例 #1
0
        public override void  WriteBytes(byte[] b, int offset, int len)
        {
            long freeSpace = dir.maxSize - dir.SizeInBytes();
            long realUsage = 0;

            // If MockRAMDir crashed since we were opened, then
            // don't write anything:
            if (dir.crashed)
            {
                throw new System.IO.IOException("MockRAMDirectory was crashed; cannot write to " + name);
            }

            // Enforce disk full:
            if (dir.maxSize != 0 && freeSpace <= len)
            {
                // Compute the real disk free.  This will greatly slow
                // down our test but makes it more accurate:
                realUsage = dir.GetRecomputedActualSizeInBytes();
                freeSpace = dir.maxSize - realUsage;
            }

            if (dir.maxSize != 0 && freeSpace <= len)
            {
                if (freeSpace > 0 && freeSpace < len)
                {
                    realUsage += freeSpace;
                    base.WriteBytes(b, offset, (int)freeSpace);
                }
                if (realUsage > dir.maxUsedSize)
                {
                    dir.maxUsedSize = realUsage;
                }
                throw new System.IO.IOException("fake disk full at " + dir.GetRecomputedActualSizeInBytes() + " bytes when writing " + name);
            }
            else
            {
                base.WriteBytes(b, offset, len);
            }

            dir.MaybeThrowDeterministicException();

            if (first)
            {
                // Maybe throw random exception; only do this on first
                // write to a new file:
                first = false;
                dir.MaybeThrowIOException();
            }
        }