📄 diskmanagerutil.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 + -