Package com.biglybt.core.lws
Class LWSDiskManager
java.lang.Object
com.biglybt.core.lws.LWSDiskManager
- All Implemented Interfaces:
DiskManager
,DiskManagerHelper
-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from interface com.biglybt.core.disk.DiskManager
DiskManager.DownloadEndedProgress
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final BitFlags
private DMChecker
private final DiskAccessController
private final DownloadManagerState
private String
private int
private DiskManagerFileInfoImpl[]
private String
private final LightWeightSeed
private static final LWSDiskManager.sePiece
private DMPieceMap
private DMPieceMapper
private final LWSDiskManager.sePiece[]
private DMReader
private final File
private boolean
private int
Fields inherited from interface com.biglybt.core.disk.DiskManager
ALLOCATING, BLOCK_SIZE, BLOCK_SIZE_KB, CHECKING, ET_FILE_MISSING, ET_INSUFFICIENT_SPACE, ET_NONE, ET_OTHER, ET_READ_ERROR, ET_STOP_DURING_INIT, ET_WRITE_ERROR, FAULTY, INITIALIZING, READY, SNAPSHOT
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
boolean
checkBlockConsistencyForHint
(String originator, int pieceNumber, int offset, int length) boolean
checkBlockConsistencyForRead
(String originator, boolean peer_request, int pieceNumber, int offset, int length) method for checking that the block details are sensibleboolean
checkBlockConsistencyForWrite
(String originator, int pieceNumber, int offset, DirectByteBuffer data) method for checking that the block details are sensiblecreateCheckRequest
(int pieceNumber, Object user_data) Create a request to check a particular piececreateReadRequest
(int pieceNumber, int offset, int length) createWriteRequest
(int pieceNumber, int offset, DirectByteBuffer data, Object user_data) downloadEnded
(boolean start_of_day) void
void
enqueueCheckRequest
(DiskManagerCheckRequest request, DiskManagerCheckRequestListener listener) enqueue an asynchronous single piece checkvoid
enqueueCompleteRecheckRequest
(DiskManagerCheckRequest request, DiskManagerCheckRequestListener listener) recheck the entire torrent asynchronously, reporting each piece to the listenervoid
enqueueReadRequest
(DiskManagerReadRequest request, DiskManagerReadRequestListener listener) Enqueue an async disk read request.void
enqueueWriteRequest
(DiskManagerWriteRequest request, DiskManagerWriteRequestListener listener) enqueue an async write requestboolean
void
generateEvidence
(IndentWriter writer) int
protected DMChecker
int
returns -1 if no recheck in progress, percentage complete in 1000 notation otherwiseint
protected DiskManagerFileInfoImpl[]
getFileInfo
(DMPieceMapperFile[] pm_files, File save_location) getFiles()
int
long[]
When a download's data is moving (for completion or removal events) this gives the [progress in 1000 notation,total_size] null if nothing's going ongetName()
int
int
int
Get the percentage done during checking, allocation or initializingint
getPiece
(int index) byte[]
getPieceHash
(int piece_number) int
int
getPieceLength
(int piece_number) getPieceList
(int piece_number) DON'T CACHE the DMPieceMap - as it is designed to be discarded when not in uselong
long[]
boolean
long
Get remaining bytes to completion *including* DND fileslong
long
int
getState()
getStorageType
(int fileIndex) Returns the storage type for file atfileIndex
.String[]
Returns the storage type for all files.long
long[]
boolean
boolean
hasOutstandingCheckRequestForPiece
(int piece_number) boolean
hasOutstandingReadRequestForPiece
(int piece_number) boolean
hasOutstandingWriteRequestForPiece
(int piece_number) boolean
isDone
(int piece_num) boolean
isInteresting
(int piece_num) boolean
void
moveDataFiles
(File new_parent_dir, String new_name) void
readBlock
(int pieceNumber, int offset, int length) void
void
saveResumeData
(boolean interim_save) void
saveState
(boolean interim) Save the individual file priorities map to DownloadManager.getData( "file_priorities" ).void
Stops the disk manager and informs the download manager that things have gone wrong.void
setFailedAndRecheck
(DiskManagerFileInfo file, String reason) void
setMoveState
(int state) void
setPieceCheckingEnabled
(boolean enabled) void
setPieceDone
(DiskManagerPieceImpl dmPiece, boolean done) void
void
start()
Start checking/allocatingboolean
stop
(boolean closing) Stop can go async if the download is in a 'starting' state - if so this method returns truevoid
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface com.biglybt.core.disk.DiskManager
getAllocationTask, getLatency
-
Field Details
-
piece
-
lws
-
disk_access_controller
-
save_file
-
reader
-
checker_use_accessor
-
piece_mapper
-
piece_map_use_accessor
-
pieces
-
availability
-
files
-
internal_name
-
download_state
-
started
private boolean started -
state
private int state -
error_message
-
error_type
private int error_type
-
-
Constructor Details
-
LWSDiskManager
-
-
Method Details
-
getName
-
getDisplayName
- Specified by:
getDisplayName
in interfaceDiskManagerHelper
-
getDownload
- Specified by:
getDownload
in interfaceDiskManager
- Returns:
- MAY BE NULL
-
getCacheMode
public int getCacheMode()- Specified by:
getCacheMode
in interfaceDiskManager
-
getReadStats
public long[] getReadStats()- Specified by:
getReadStats
in interfaceDiskManager
-
getWriteStats
public long[] getWriteStats()- Specified by:
getWriteStats
in interfaceDiskManager
-
start
public void start()Description copied from interface:DiskManager
Start checking/allocating- Specified by:
start
in interfaceDiskManager
-
getFileInfo
-
setPieceDone
- Specified by:
setPieceDone
in interfaceDiskManagerHelper
-
stop
public boolean stop(boolean closing) Description copied from interface:DiskManager
Stop can go async if the download is in a 'starting' state - if so this method returns true- Specified by:
stop
in interfaceDiskManager
- Returns:
-
isStopped
public boolean isStopped()- Specified by:
isStopped
in interfaceDiskManager
-
filesExist
public boolean filesExist()- Specified by:
filesExist
in interfaceDiskManager
- Returns:
- whether all files exist and sizes match
-
createWriteRequest
public DiskManagerWriteRequest createWriteRequest(int pieceNumber, int offset, DirectByteBuffer data, Object user_data) - Specified by:
createWriteRequest
in interfaceDiskManager
-
enqueueWriteRequest
public void enqueueWriteRequest(DiskManagerWriteRequest request, DiskManagerWriteRequestListener listener) Description copied from interface:DiskManager
enqueue an async write request- Specified by:
enqueueWriteRequest
in interfaceDiskManager
-
hasOutstandingWriteRequestForPiece
public boolean hasOutstandingWriteRequestForPiece(int piece_number) - Specified by:
hasOutstandingWriteRequestForPiece
in interfaceDiskManager
-
hasOutstandingReadRequestForPiece
public boolean hasOutstandingReadRequestForPiece(int piece_number) - Specified by:
hasOutstandingReadRequestForPiece
in interfaceDiskManager
-
hasOutstandingCheckRequestForPiece
public boolean hasOutstandingCheckRequestForPiece(int piece_number) - Specified by:
hasOutstandingCheckRequestForPiece
in interfaceDiskManager
-
readBlock
- Specified by:
readBlock
in interfaceDiskManager
-
createReadRequest
- Specified by:
createReadRequest
in interfaceDiskManager
-
enqueueReadRequest
public void enqueueReadRequest(DiskManagerReadRequest request, DiskManagerReadRequestListener listener) Description copied from interface:DiskManager
Enqueue an async disk read request.- Specified by:
enqueueReadRequest
in interfaceDiskManager
-
createCheckRequest
Description copied from interface:DiskManager
Create a request to check a particular piece- Specified by:
createCheckRequest
in interfaceDiskManager
- Parameters:
pieceNumber
- -1 for a complete recheck request- Returns:
-
enqueueCheckRequest
public void enqueueCheckRequest(DiskManagerCheckRequest request, DiskManagerCheckRequestListener listener) Description copied from interface:DiskManager
enqueue an asynchronous single piece check- Specified by:
enqueueCheckRequest
in interfaceDiskManager
-
enqueueCompleteRecheckRequest
public void enqueueCompleteRecheckRequest(DiskManagerCheckRequest request, DiskManagerCheckRequestListener listener) Description copied from interface:DiskManager
recheck the entire torrent asynchronously, reporting each piece to the listener- Specified by:
enqueueCompleteRecheckRequest
in interfaceDiskManager
-
setPieceCheckingEnabled
public void setPieceCheckingEnabled(boolean enabled) - Specified by:
setPieceCheckingEnabled
in interfaceDiskManager
-
saveResumeData
public void saveResumeData(boolean interim_save) - Specified by:
saveResumeData
in interfaceDiskManager
-
getPieces
- Specified by:
getPieces
in interfaceDiskManager
-
getAvailability
- Specified by:
getAvailability
in interfaceDiskManager
-
getPiece
- Specified by:
getPiece
in interfaceDiskManager
-
isInteresting
public boolean isInteresting(int piece_num) - Specified by:
isInteresting
in interfaceDiskManager
- Returns:
- true if the pieceNumber is Needed and not Done
-
isDone
public boolean isDone(int piece_num) - Specified by:
isDone
in interfaceDiskManager
-
getNbPieces
public int getNbPieces()- Specified by:
getNbPieces
in interfaceDiskManager
-
getFiles
- Specified by:
getFiles
in interfaceDiskManager
-
getFileSet
- Specified by:
getFileSet
in interfaceDiskManager
-
getState
public int getState()- Specified by:
getState
in interfaceDiskManager
-
getTotalLength
public long getTotalLength()- Specified by:
getTotalLength
in interfaceDiskManager
-
getPieceLength
public int getPieceLength()- Specified by:
getPieceLength
in interfaceDiskManager
-
getPieceLength
public int getPieceLength(int piece_number) - Specified by:
getPieceLength
in interfaceDiskManager
-
getLastPieceLength
public int getLastPieceLength() -
getRemaining
public long getRemaining()Description copied from interface:DiskManager
Get remaining bytes to completion *including* DND files- Specified by:
getRemaining
in interfaceDiskManager
-
getRemainingExcludingDND
public long getRemainingExcludingDND()- Specified by:
getRemainingExcludingDND
in interfaceDiskManager
-
getPercentDone
public int getPercentDone()Description copied from interface:DiskManager
Get the percentage done during checking, allocation or initializing- Specified by:
getPercentDone
in interfaceDiskManager
- Returns:
- percent done * 1000 (1000 = 100%)
-
getPercentAllocated
public int getPercentAllocated()- Specified by:
getPercentAllocated
in interfaceDiskManager
-
getPercentDoneExcludingDND
public int getPercentDoneExcludingDND()- Specified by:
getPercentDoneExcludingDND
in interfaceDiskManager
-
getSizeExcludingDND
public long getSizeExcludingDND()- Specified by:
getSizeExcludingDND
in interfaceDiskManager
-
getErrorMessage
- Specified by:
getErrorMessage
in interfaceDiskManager
-
getErrorType
public int getErrorType()- Specified by:
getErrorType
in interfaceDiskManager
-
downloadEnded
- Specified by:
downloadEnded
in interfaceDiskManager
-
moveDataFiles
- Specified by:
moveDataFiles
in interfaceDiskManager
-
getCompleteRecheckStatus
public int getCompleteRecheckStatus()Description copied from interface:DiskManager
returns -1 if no recheck in progress, percentage complete in 1000 notation otherwise- Specified by:
getCompleteRecheckStatus
in interfaceDiskManager
- Returns:
-
getRecheckCancelled
public boolean getRecheckCancelled()- Specified by:
getRecheckCancelled
in interfaceDiskManager
-
getMoveProgress
public long[] getMoveProgress()Description copied from interface:DiskManager
When a download's data is moving (for completion or removal events) this gives the [progress in 1000 notation,total_size] null if nothing's going on- Specified by:
getMoveProgress
in interfaceDiskManager
- Returns:
-
getMoveSubTask
- Specified by:
getMoveSubTask
in interfaceDiskManager
-
setMoveState
public void setMoveState(int state) - Specified by:
setMoveState
in interfaceDiskManager
-
checkBlockConsistencyForWrite
public boolean checkBlockConsistencyForWrite(String originator, int pieceNumber, int offset, DirectByteBuffer data) Description copied from interface:DiskManager
method for checking that the block details are sensible- Specified by:
checkBlockConsistencyForWrite
in interfaceDiskManager
- Returns:
-
checkBlockConsistencyForRead
public boolean checkBlockConsistencyForRead(String originator, boolean peer_request, int pieceNumber, int offset, int length) Description copied from interface:DiskManager
method for checking that the block details are sensible- Specified by:
checkBlockConsistencyForRead
in interfaceDiskManager
- Returns:
-
checkBlockConsistencyForHint
public boolean checkBlockConsistencyForHint(String originator, int pieceNumber, int offset, int length) - Specified by:
checkBlockConsistencyForHint
in interfaceDiskManager
-
addListener
- Specified by:
addListener
in interfaceDiskManager
-
removeListener
- Specified by:
removeListener
in interfaceDiskManager
-
hasListener
- Specified by:
hasListener
in interfaceDiskManager
-
saveState
public void saveState(boolean interim) Description copied from interface:DiskManager
Save the individual file priorities map to DownloadManager.getData( "file_priorities" ).- Specified by:
saveState
in interfaceDiskManager
-
getDiskAccessController
- Specified by:
getDiskAccessController
in interfaceDiskManagerHelper
-
getPieceMap
Description copied from interface:DiskManager
DON'T CACHE the DMPieceMap - as it is designed to be discarded when not in use- Specified by:
getPieceMap
in interfaceDiskManager
- Returns:
-
getPieceList
- Specified by:
getPieceList
in interfaceDiskManager
- Specified by:
getPieceList
in interfaceDiskManagerHelper
-
getChecker
-
getPieceHash
- Specified by:
getPieceHash
in interfaceDiskManagerHelper
- Throws:
TOTorrentException
-
getRecheckScheduler
- Specified by:
getRecheckScheduler
in interfaceDiskManagerHelper
-
downloadRemoved
public void downloadRemoved()- Specified by:
downloadRemoved
in interfaceDiskManager
-
setFailed
Description copied from interface:DiskManagerHelper
Stops the disk manager and informs the download manager that things have gone wrong.- Specified by:
setFailed
in interfaceDiskManagerHelper
-
setFailedAndRecheck
- Specified by:
setFailedAndRecheck
in interfaceDiskManagerHelper
-
getTorrent
- Specified by:
getTorrent
in interfaceDiskManager
- Specified by:
getTorrent
in interfaceDiskManagerHelper
-
getStorageTypes
Description copied from interface:DiskManagerHelper
Returns the storage type for all files. According toDiskManagerUtil.convertDMStorageTypeFromString(String)
, values are:
"R"DiskManagerFileInfo.ST_REORDER
"L"DiskManagerFileInfo.ST_LINEAR
"C"DiskManagerFileInfo.ST_COMPACT
"X"DiskManagerFileInfo.ST_REORDER_COMPACT
- Specified by:
getStorageTypes
in interfaceDiskManagerHelper
-
getStorageType
Description copied from interface:DiskManagerHelper
Returns the storage type for file atfileIndex
. According toDiskManagerUtil.convertDMStorageTypeFromString(String)
, values are:
"R"DiskManagerFileInfo.ST_REORDER
"L"DiskManagerFileInfo.ST_LINEAR
"C"DiskManagerFileInfo.ST_COMPACT
"X"DiskManagerFileInfo.ST_REORDER_COMPACT
- Specified by:
getStorageType
in interfaceDiskManagerHelper
-
skippedFileSetChanged
- Specified by:
skippedFileSetChanged
in interfaceDiskManagerHelper
-
priorityChanged
- Specified by:
priorityChanged
in interfaceDiskManagerHelper
-
storageTypeChanged
- Specified by:
storageTypeChanged
in interfaceDiskManagerHelper
-
getSaveLocation
- Specified by:
getSaveLocation
in interfaceDiskManager
-
getInternalName
- Specified by:
getInternalName
in interfaceDiskManagerHelper
-
getDownloadState
- Specified by:
getDownloadState
in interfaceDiskManagerHelper
-
getPriorityChangeMarker
public long getPriorityChangeMarker()- Specified by:
getPriorityChangeMarker
in interfaceDiskManager
-
generateEvidence
- Specified by:
generateEvidence
in interfaceDiskManager
-