Lucene.Net.Store.MockRAMOutputStream.WriteBytes C# (CSharp) Method

WriteBytes() public method

public WriteBytes ( byte b, int offset, int len ) : void
b byte
offset int
len int
return void
		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();
			}
		}
	}