⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 diskmanagerutil.java

📁 java 文件下载器。可自定义
💻 JAVA
字号:
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space 
// Source File Name:   DiskManagerUtil.java

package org.gudy.azureus2.core3.disk.impl;

import java.io.File;
import org.gudy.azureus2.core3.config.COConfigurationManager;
import org.gudy.azureus2.core3.config.ParameterListener;
import org.gudy.azureus2.core3.disk.*;
import org.gudy.azureus2.core3.disk.impl.resume.RDResumeHandler;
import org.gudy.azureus2.core3.download.DownloadManager;
import org.gudy.azureus2.core3.logging.*;

// Referenced classes of package org.gudy.azureus2.core3.disk.impl:
//			DiskManagerImpl

public class DiskManagerUtil
{

	private static final LogIDs LOGID;
	protected static int max_read_block_size;

	public DiskManagerUtil()
	{
	}

	public static boolean checkBlockConsistencyForHint(DiskManager dm, String originator, int pieceNumber, int offset, int length)
	{
		if (length <= 0)
		{
			if (Logger.isEnabled())
				Logger.log(new LogEvent(dm, LOGID, 3, (new StringBuilder()).append("Hint invalid: ").append(originator).append(" length=").append(length).append(" <= 0").toString()));
			return false;
		}
		if (pieceNumber < 0)
		{
			if (Logger.isEnabled())
				Logger.log(new LogEvent(dm, LOGID, 3, (new StringBuilder()).append("Hint invalid: ").append(originator).append(" pieceNumber=").append(pieceNumber).append(" < 0").toString()));
			return false;
		}
		if (pieceNumber >= dm.getNbPieces())
		{
			if (Logger.isEnabled())
				Logger.log(new LogEvent(dm, LOGID, 3, (new StringBuilder()).append("Hint invalid: ").append(originator).append(" pieceNumber=").append(pieceNumber).append(" >= this.nbPieces=").append(dm.getNbPieces()).toString()));
			return false;
		}
		int pLength = dm.getPieceLength(pieceNumber);
		if (offset < 0)
		{
			if (Logger.isEnabled())
				Logger.log(new LogEvent(dm, LOGID, 3, (new StringBuilder()).append("Hint invalid: ").append(originator).append(" offset=").append(offset).append(" < 0").toString()));
			return false;
		}
		if (offset > pLength)
		{
			if (Logger.isEnabled())
				Logger.log(new LogEvent(dm, LOGID, 3, (new StringBuilder()).append("Hint invalid: ").append(originator).append(" offset=").append(offset).append(" > pLength=").append(pLength).toString()));
			return false;
		}
		if (offset + length > pLength)
		{
			if (Logger.isEnabled())
				Logger.log(new LogEvent(dm, LOGID, 3, (new StringBuilder()).append("Hint invalid: ").append(originator).append(" offset=").append(offset).append(" + length=").append(length).append(" > pLength=").append(pLength).toString()));
			return false;
		} else
		{
			return true;
		}
	}

	public static boolean checkBlockConsistencyForRead(DiskManager dm, String originator, int pieceNumber, int offset, int length)
	{
		if (!checkBlockConsistencyForHint(dm, originator, pieceNumber, offset, length))
			return false;
		if (length > max_read_block_size)
		{
			if (Logger.isEnabled())
				Logger.log(new LogEvent(dm, LOGID, 3, (new StringBuilder()).append("Read invalid: ").append(originator).append(" length=").append(length).append(" > ").append(max_read_block_size).toString()));
			return false;
		}
		if (!dm.getPiece(pieceNumber).isDone())
		{
			Logger.log(new LogEvent(dm, LOGID, 3, (new StringBuilder()).append("Read invalid: ").append(originator).append(" piece #").append(pieceNumber).append(" not done").toString()));
			return false;
		} else
		{
			return true;
		}
	}

	public static void doFileExistenceChecks(DiskManagerFileInfoSet fileSet, boolean toCheck[], DownloadManager dm, boolean allowAlloction)
	{
		DiskManagerFileInfo files[] = fileSet.getFiles();
		int lastPieceScanned = -1;
		int windowStart = -1;
		int windowEnd = -1;
		String types[] = DiskManagerImpl.getStorageTypes(dm);
		for (int i = 0; i < files.length; i++)
		{
			int firstPiece = files[i].getFirstPieceNumber();
			int lastPiece = files[i].getLastPieceNumber();
			if (toCheck[i])
			{
				if (lastPieceScanned < firstPiece)
					for (windowStart = firstPiece; i > 0 && files[i - 1].getLastPieceNumber() >= windowStart; i--);
				if (windowEnd < lastPiece)
					windowEnd = lastPiece;
			}
			if ((windowStart > firstPiece || firstPiece > windowEnd) && (windowStart > lastPiece || lastPiece > windowEnd))
				continue;
			File currentFile = files[i].getFile(true);
			if (!RDResumeHandler.fileMustExist(dm, files[i]))
			{
				if (types[i].equals("C"))
					currentFile.delete();
			} else
			if (allowAlloction && types[i].equals("L") && !currentFile.exists())
				dm.setDataAlreadyAllocated(false);
			lastPieceScanned = lastPiece;
		}

	}

	static 
	{
		LOGID = LogIDs.DISK;
		ParameterListener param_listener = new ParameterListener() {

			public void parameterChanged(String str)
			{
				DiskManagerUtil.max_read_block_size = COConfigurationManager.getIntParameter("BT Request Max Block Size");
			}

		};
		COConfigurationManager.addAndFireParameterListener("BT Request Max Block Size", param_listener);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -