org.gudy.azureus2.core3.disk
Interface DiskManager

All Known Subinterfaces:
DiskManagerHelper
All Known Implementing Classes:
DiskManagerImpl, LWSDiskManager

public interface DiskManager

Author:
MjrTom 2005/Oct/08: Priority, getPieces done, etc changes for new piece-picking

Nested Class Summary
static interface DiskManager.GettingThere
           
static interface DiskManager.OperationStatus
           
 
Field Summary
static int ALLOCATING
           
static int BLOCK_SIZE
           
static int BLOCK_SIZE_KB
           
static int CHECKING
           
static int ET_INSUFFICIENT_SPACE
           
static int ET_NONE
           
static int ET_OTHER
           
static int FAULTY
           
static int INITIALIZING
           
static int READY
           
 
Method Summary
 void addListener(DiskManagerListener l)
           
 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 sensible
 boolean checkBlockConsistencyForWrite(String originator, int pieceNumber, int offset, DirectByteBuffer data)
          method for checking that the block details are sensible
 DiskManagerCheckRequest createCheckRequest(int pieceNumber, Object user_data)
          Create a request to check a particular piece
 DiskManagerReadRequest createReadRequest(int pieceNumber, int offset, int length)
           
 DiskManagerWriteRequest createWriteRequest(int pieceNumber, int offset, DirectByteBuffer data, Object user_data)
           
 void downloadEnded(DiskManager.OperationStatus op_status)
           
 void downloadRemoved()
           
 void enqueueCheckRequest(DiskManagerCheckRequest request, DiskManagerCheckRequestListener listener)
          enqueue an asynchronous single piece check
 void enqueueCompleteRecheckRequest(DiskManagerCheckRequest request, DiskManagerCheckRequestListener listener)
          recheck the entire torrent asynchronously, reporting each piece to the listener
 void enqueueReadRequest(DiskManagerReadRequest request, DiskManagerReadRequestListener listener)
          Enqueue an async disk read request.
 void enqueueWriteRequest(DiskManagerWriteRequest request, DiskManagerWriteRequestListener listener)
          enqueue an async write request
 boolean filesExist()
           
 void generateEvidence(IndentWriter writer)
           
 int getCacheMode()
           
 int getCompleteRecheckStatus()
          returns -1 if no recheck in progress, percentage complete in 1000 notation otherwise
 String getErrorMessage()
           
 int getErrorType()
           
 DiskManagerFileInfo[] getFiles()
           
 DiskManagerFileInfoSet getFileSet()
           
 int getMoveProgress()
          When a download's data is moving (for completion or removal events) this gives the progress in 1000 notation.
 int getNbPieces()
           
 int getPercentDone()
          Get the percentage done during checking, allocation or initializing
 int getPercentDoneExcludingDND()
           
 DiskManagerPiece getPiece(int PieceNumber)
           
 int getPieceLength()
           
 int getPieceLength(int piece_number)
           
 DMPieceList getPieceList(int pieceNumber)
           
 DMPieceMap getPieceMap()
          DON'T CACHE the DMPieceMap - as it is designed to be discarded when not in use
 DiskManagerPiece[] getPieces()
           
 long getPriorityChangeMarker()
           
 long[] getReadStats()
           
 long getRemaining()
          Get remaining bytes to completion *including* DND files
 long getRemainingExcludingDND()
           
 File getSaveLocation()
           
 long getSizeExcludingDND()
           
 int getState()
           
 TOTorrent getTorrent()
           
 long getTotalLength()
           
 boolean hasListener(DiskManagerListener l)
           
 boolean hasOutstandingCheckRequestForPiece(int piece_number)
           
 boolean hasOutstandingReadRequestForPiece(int piece_number)
           
 boolean hasOutstandingWriteRequestForPiece(int piece_number)
           
 boolean isDone(int pieceNumber)
           
 boolean isInteresting(int pieceNumber)
           
 boolean isStopped()
           
 void moveDataFiles(File new_parent_dir, String dl_name, DiskManager.OperationStatus op_status)
           
 DirectByteBuffer readBlock(int pieceNumber, int offset, int length)
           
 void removeListener(DiskManagerListener l)
           
 void saveResumeData(boolean interim_save)
           
 void saveState()
          Save the individual file priorities map to DownloadManager.getData( "file_priorities" ).
 void setPieceCheckingEnabled(boolean enabled)
           
 void start()
          Start checking/allocating
 boolean stop(boolean closing)
          Stop can go async if the download is in a 'starting' state - if so this method returns true
 

Field Detail

INITIALIZING

static final int INITIALIZING
See Also:
Constant Field Values

ALLOCATING

static final int ALLOCATING
See Also:
Constant Field Values

CHECKING

static final int CHECKING
See Also:
Constant Field Values

READY

static final int READY
See Also:
Constant Field Values

FAULTY

static final int FAULTY
See Also:
Constant Field Values

ET_NONE

static final int ET_NONE
See Also:
Constant Field Values

ET_OTHER

static final int ET_OTHER
See Also:
Constant Field Values

ET_INSUFFICIENT_SPACE

static final int ET_INSUFFICIENT_SPACE
See Also:
Constant Field Values

BLOCK_SIZE_KB

static final int BLOCK_SIZE_KB
See Also:
Constant Field Values

BLOCK_SIZE

static final int BLOCK_SIZE
See Also:
Constant Field Values
Method Detail

start

void start()
Start checking/allocating


stop

boolean stop(boolean closing)
Stop can go async if the download is in a 'starting' state - if so this method returns true

Parameters:
closing -
Returns:

isStopped

boolean isStopped()

filesExist

boolean filesExist()
Returns:
whether all files exist and sizes match

readBlock

DirectByteBuffer readBlock(int pieceNumber,
                           int offset,
                           int length)

createWriteRequest

DiskManagerWriteRequest createWriteRequest(int pieceNumber,
                                           int offset,
                                           DirectByteBuffer data,
                                           Object user_data)

enqueueWriteRequest

void enqueueWriteRequest(DiskManagerWriteRequest request,
                         DiskManagerWriteRequestListener listener)
enqueue an async write request

Parameters:
pieceNumber -
offset -
data -
user_data - this will be provided to the listener when called back
listener -

hasOutstandingWriteRequestForPiece

boolean hasOutstandingWriteRequestForPiece(int piece_number)

createReadRequest

DiskManagerReadRequest createReadRequest(int pieceNumber,
                                         int offset,
                                         int length)

enqueueReadRequest

void enqueueReadRequest(DiskManagerReadRequest request,
                        DiskManagerReadRequestListener listener)
Enqueue an async disk read request.

Parameters:
request -
listener -

hasOutstandingReadRequestForPiece

boolean hasOutstandingReadRequestForPiece(int piece_number)

createCheckRequest

DiskManagerCheckRequest createCheckRequest(int pieceNumber,
                                           Object user_data)
Create a request to check a particular piece

Parameters:
pieceNumber - -1 for a complete recheck request
user_data -
Returns:

enqueueCheckRequest

void enqueueCheckRequest(DiskManagerCheckRequest request,
                         DiskManagerCheckRequestListener listener)
enqueue an asynchronous single piece check

Parameters:
pieceNumber -
listener -
user_data -

hasOutstandingCheckRequestForPiece

boolean hasOutstandingCheckRequestForPiece(int piece_number)

enqueueCompleteRecheckRequest

void enqueueCompleteRecheckRequest(DiskManagerCheckRequest request,
                                   DiskManagerCheckRequestListener listener)
recheck the entire torrent asynchronously, reporting each piece to the listener

Parameters:
listener -
user_data -

setPieceCheckingEnabled

void setPieceCheckingEnabled(boolean enabled)

saveResumeData

void saveResumeData(boolean interim_save)
                    throws Exception
Throws:
Exception

getPieces

DiskManagerPiece[] getPieces()

getNbPieces

int getNbPieces()

getFiles

DiskManagerFileInfo[] getFiles()

getFileSet

DiskManagerFileInfoSet getFileSet()

getPiece

DiskManagerPiece getPiece(int PieceNumber)

getPieceMap

DMPieceMap getPieceMap()
DON'T CACHE the DMPieceMap - as it is designed to be discarded when not in use

Returns:

getPieceList

DMPieceList getPieceList(int pieceNumber)

getState

int getState()

getTotalLength

long getTotalLength()

getPieceLength

int getPieceLength()

getPieceLength

int getPieceLength(int piece_number)

getRemaining

long getRemaining()
Get remaining bytes to completion *including* DND files


getRemainingExcludingDND

long getRemainingExcludingDND()

getPercentDone

int getPercentDone()
Get the percentage done during checking, allocation or initializing

Returns:
percent done * 1000 (1000 = 100%)

getErrorMessage

String getErrorMessage()

getErrorType

int getErrorType()

downloadEnded

void downloadEnded(DiskManager.OperationStatus op_status)

downloadRemoved

void downloadRemoved()

moveDataFiles

void moveDataFiles(File new_parent_dir,
                   String dl_name,
                   DiskManager.OperationStatus op_status)

getCompleteRecheckStatus

int getCompleteRecheckStatus()
returns -1 if no recheck in progress, percentage complete in 1000 notation otherwise

Returns:

getMoveProgress

int getMoveProgress()
When a download's data is moving (for completion or removal events) this gives the progress in 1000 notation. -1 if nothing's going on

Returns:

checkBlockConsistencyForWrite

boolean checkBlockConsistencyForWrite(String originator,
                                      int pieceNumber,
                                      int offset,
                                      DirectByteBuffer data)
method for checking that the block details are sensible

Parameters:
pieceNumber -
offset -
data -
Returns:

checkBlockConsistencyForRead

boolean checkBlockConsistencyForRead(String originator,
                                     boolean peer_request,
                                     int pieceNumber,
                                     int offset,
                                     int length)
method for checking that the block details are sensible

Parameters:
pieceNumber -
offset -
length -
Returns:

checkBlockConsistencyForHint

boolean checkBlockConsistencyForHint(String originator,
                                     int pieceNumber,
                                     int offset,
                                     int length)

getTorrent

TOTorrent getTorrent()

getSaveLocation

File getSaveLocation()

addListener

void addListener(DiskManagerListener l)

removeListener

void removeListener(DiskManagerListener l)

hasListener

boolean hasListener(DiskManagerListener l)

saveState

void saveState()
Save the individual file priorities map to DownloadManager.getData( "file_priorities" ).


isInteresting

boolean isInteresting(int pieceNumber)
Parameters:
pieceNumber -
Returns:
true if the pieceNumber is Needed and not Done

isDone

boolean isDone(int pieceNumber)

getCacheMode

int getCacheMode()

getReadStats

long[] getReadStats()

generateEvidence

void generateEvidence(IndentWriter writer)

getSizeExcludingDND

long getSizeExcludingDND()

getPercentDoneExcludingDND

int getPercentDoneExcludingDND()

getPriorityChangeMarker

long getPriorityChangeMarker()