|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object com.aelitis.azureus.core.peermanager.piecepicker.impl.PiecePickerImpl
public class PiecePickerImpl
Nested Class Summary | |
---|---|
protected static class |
PiecePickerImpl.RealTimeData
|
Field Summary | |
---|---|
protected int[] |
availability
periodically updated consistent view of availability for calculating |
protected int[] |
availabilityAsynch
asyncronously updated availability |
protected long |
availabilityChange
|
protected long |
availabilityDrift
indicates availability needs to be recomputed due to detected drift |
protected AEMonitor |
availabilityMon
|
protected static boolean |
completionPriority
|
protected DiskManagerPiece[] |
dmPieces
|
protected long |
filePriorityChange
event # of user file priority settings changes |
protected static boolean |
firstPiecePriority
|
protected boolean |
hasNeededUndonePiece
|
protected int |
nbPieces
|
protected int |
nbPiecesDone
|
protected long |
neededUndonePieceChange
|
protected static long |
paramPriorityChange
event # of user settings controlling priority changes |
protected Map |
peerListeners
|
protected PEPiece[] |
pePieces
|
Fields inherited from interface com.aelitis.azureus.core.peermanager.piecepicker.PiecePicker |
---|
REQUEST_HINT_MAX_LIFE |
Constructor Summary | |
---|---|
PiecePickerImpl(PEPeerControl pc)
|
Method Summary | |
---|---|
protected void |
abandonEndGameMode()
|
void |
addEndGameChunks(PEPiece pePiece)
adds every block from the piece to the list of chuncks to be selected for egm requesting |
void |
addHavePiece(PEPeer peer,
int pieceNumber)
|
void |
addListener(PiecePickerListener listener)
|
void |
addPriorityProvider(PiecePriorityProvider provider)
|
void |
addRTAProvider(PieceRTAProvider provider)
|
void |
allocateRequests()
one reason requests don't stem from the individual peers is so the connections can be sorted by best uploaders, providing some ooprtunity to download the most important (ie; rarest and/or highest priority) pieces faster and more reliably |
protected void |
checkDownloadablePiece()
Early-outs when finds a downloadable piece Either way sets hasNeededUndonePiece and neededUndonePieceChange if necessary |
void |
clearEndGameChunks()
|
void |
destroy()
|
protected int |
findPieceInEndGameMode(PEPeerTransport pt,
int wants)
|
protected int |
findPieceToDownload(PEPeerTransport pt,
int nbWanted)
|
protected boolean |
findRTAPieceToDownload(PEPeerTransport pt,
boolean best_uploader,
long best_uploader_next_block_eta)
|
void |
generateEvidence(IndentWriter writer)
|
int[] |
getAvailability()
|
int |
getAvailability(int pieceNumber)
|
long |
getAvailWentBadTime()
|
float |
getAvgAvail()
|
long |
getBytesUnavailable()
|
int[] |
getGlobalRequestHint()
|
int |
getMaxAvailability()
|
float |
getMinAvailability()
|
float |
getMinAvailability(int fileIndex)
|
int |
getNbPiecesDone()
|
long |
getNeededUndonePieceChange()
|
protected int |
getNextBlockETAFromNow(PEPeerTransport pt)
|
int |
getNumberOfPieces()
|
String |
getPieceString(int piece_number)
|
protected int |
getPieceToStart(BitFlags startCandidates)
|
List |
getPriorityProviders()
|
boolean |
getReverseBlockOrder()
|
List |
getRTAProviders()
|
boolean |
hasDownloadablePiece()
|
boolean |
hasEndGameModeBeenAbandoned()
|
boolean |
isForcePiece(int pieceNumber)
|
boolean |
isInEndGameMode()
|
protected void |
leaveEndGameMode()
|
void |
removeFromEndGameModeChunks(int pieceNumber,
int offset)
|
void |
removeListener(PiecePickerListener listener)
|
void |
removePriorityProvider(PiecePriorityProvider provider)
|
void |
removeRTAProvider(PieceRTAProvider provider)
|
void |
setForcePiece(int pieceNumber,
boolean forced)
|
void |
setGlobalRequestHint(int piece_number,
int start_bytes,
int byte_count)
|
void |
setReverseBlockOrder(boolean is_reverse)
|
void |
updateAvailability()
This methd will compute the pieces' overall availability (including ourself) and the _globalMinOthers & _globalAvail |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected static volatile boolean firstPiecePriority
protected static volatile boolean completionPriority
protected static volatile long paramPriorityChange
protected final Map peerListeners
protected final int nbPieces
protected final DiskManagerPiece[] dmPieces
protected final PEPiece[] pePieces
protected final AEMonitor availabilityMon
protected volatile int nbPiecesDone
protected volatile int[] availabilityAsynch
protected volatile long availabilityDrift
protected volatile int[] availability
protected volatile long availabilityChange
protected volatile long filePriorityChange
protected volatile boolean hasNeededUndonePiece
protected volatile long neededUndonePieceChange
Constructor Detail |
---|
public PiecePickerImpl(PEPeerControl pc)
Method Detail |
---|
public final void addHavePiece(PEPeer peer, int pieceNumber)
addHavePiece
in interface PiecePicker
public final void updateAvailability()
updateAvailability
in interface PiecePicker
public int getNumberOfPieces()
getNumberOfPieces
in interface PiecePicker
public final int[] getAvailability()
getAvailability
in interface PiecePicker
public final int getAvailability(int pieceNumber)
getAvailability
in interface PiecePicker
public final float getMinAvailability()
getMinAvailability
in interface PiecePicker
public float getMinAvailability(int fileIndex)
getMinAvailability
in interface PiecePicker
public final long getBytesUnavailable()
getBytesUnavailable
in interface PiecePicker
public final long getAvailWentBadTime()
getAvailWentBadTime
in interface PiecePicker
public final int getMaxAvailability()
getMaxAvailability
in interface PiecePicker
public final float getAvgAvail()
getAvgAvail
in interface PiecePicker
public int getNbPiecesDone()
getNbPiecesDone
in interface PiecePicker
protected final void checkDownloadablePiece()
public final void allocateRequests()
allocateRequests
in interface PiecePicker
protected int getNextBlockETAFromNow(PEPeerTransport pt)
protected final int findPieceToDownload(PEPeerTransport pt, int nbWanted)
pt
- the PEPeerTransport we're working on
protected final boolean findRTAPieceToDownload(PEPeerTransport pt, boolean best_uploader, long best_uploader_next_block_eta)
protected final int getPieceToStart(BitFlags startCandidates)
startCandidates
- BitFlags of potential candidates to choose from
public final boolean hasDownloadablePiece()
hasDownloadablePiece
in interface PiecePicker
public final long getNeededUndonePieceChange()
getNeededUndonePieceChange
in interface PiecePicker
public final boolean isInEndGameMode()
isInEndGameMode
in interface PiecePicker
public boolean hasEndGameModeBeenAbandoned()
hasEndGameModeBeenAbandoned
in interface PiecePicker
public final void addEndGameChunks(PEPiece pePiece)
addEndGameChunks
in interface PiecePicker
protected final int findPieceInEndGameMode(PEPeerTransport pt, int wants)
public final void removeFromEndGameModeChunks(int pieceNumber, int offset)
removeFromEndGameModeChunks
in interface PiecePicker
public final void clearEndGameChunks()
clearEndGameChunks
in interface PiecePicker
protected void leaveEndGameMode()
protected void abandonEndGameMode()
public void addRTAProvider(PieceRTAProvider provider)
addRTAProvider
in interface PiecePicker
public void removeRTAProvider(PieceRTAProvider provider)
removeRTAProvider
in interface PiecePicker
public List getRTAProviders()
getRTAProviders
in interface PiecePicker
public void addPriorityProvider(PiecePriorityProvider provider)
addPriorityProvider
in interface PiecePicker
public void removePriorityProvider(PiecePriorityProvider provider)
removePriorityProvider
in interface PiecePicker
public List getPriorityProviders()
getPriorityProviders
in interface PiecePicker
public void addListener(PiecePickerListener listener)
addListener
in interface PiecePicker
public void removeListener(PiecePickerListener listener)
removeListener
in interface PiecePicker
public void setForcePiece(int pieceNumber, boolean forced)
setForcePiece
in interface PiecePicker
public boolean isForcePiece(int pieceNumber)
isForcePiece
in interface PiecePicker
public void setGlobalRequestHint(int piece_number, int start_bytes, int byte_count)
setGlobalRequestHint
in interface PiecePicker
public int[] getGlobalRequestHint()
getGlobalRequestHint
in interface PiecePicker
public void setReverseBlockOrder(boolean is_reverse)
setReverseBlockOrder
in interface PiecePicker
public boolean getReverseBlockOrder()
getReverseBlockOrder
in interface PiecePicker
public void destroy()
destroy
in interface PiecePicker
public String getPieceString(int piece_number)
getPieceString
in interface PiecePicker
public void generateEvidence(IndentWriter writer)
generateEvidence
in interface PiecePicker
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |