Package com.biglybt.plugin.extseed.impl
Class ExternalSeedReaderImpl
- java.lang.Object
-
- com.biglybt.plugin.extseed.impl.ExternalSeedReaderImpl
-
- All Implemented Interfaces:
PeerManagerListener2
,ExternalSeedReader
- Direct Known Subclasses:
ExternalSeedReaderGetRight
,ExternalSeedReaderWebSeed
public abstract class ExternalSeedReaderImpl extends java.lang.Object implements ExternalSeedReader, PeerManagerListener2
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static class
ExternalSeedReaderImpl.MutableInteger
-
Field Summary
-
Constructor Summary
Constructors Modifier Constructor Description protected
ExternalSeedReaderImpl(ExternalSeedPlugin _plugin, Torrent _torrent, java.lang.String _host, java.util.Map _params)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
addListener(ExternalSeedReaderListener l)
void
addRequests(java.util.List<PeerReadRequest> new_requests)
void
calculatePriorityOffsets(PeerManager peer_manager, int[] base_priorities)
void
cancelAllRequests()
void
cancelRequest(PeerReadRequest request)
boolean
checkActivation(PeerManager peer_manager, Peer peer)
void
deactivate(java.lang.String reason)
void
eventOccurred(PeerManagerEvent event)
protected boolean
getBooleanParam(java.util.Map map, java.lang.String name, boolean def)
java.util.List<PeerReadRequest>
getExpiredRequests()
protected int
getFailureCount()
protected int
getIntParam(java.util.Map map, java.lang.String name, int def)
java.lang.String
getIP()
protected long
getLastFailTime()
int
getMaximumNumberOfRequests()
int
getOutgoingRequestCount()
int[]
getOutgoingRequestedPieceNumbers()
int
getPercentDoneOfCurrentIncomingRequest()
int
getPermittedBytes()
protected abstract int
getPieceGroupSize()
int[]
getPriorityOffsets()
protected abstract boolean
getRequestCanSpanPieces()
int
getRequestCount()
java.util.List<PeerReadRequest>
getRequests()
java.lang.String
getStatus()
protected long
getSystemTime()
Torrent
getTorrent()
protected java.lang.String
getUserAgent()
protected void
informCancelled(PeerReadRequest request)
protected void
informComplete(PeerReadRequest request, byte[] buffer)
protected void
informFailed(PeerReadRequest request)
boolean
isActive()
boolean
isPermanentlyUnavailable()
boolean
isTransient()
protected void
log(java.lang.String str)
protected void
processRequests()
protected void
processRequests(java.util.List<PeerReadRequest> requests)
byte[]
read(int piece_number, int piece_offset, int length, int timeout)
int
readBytes(int max)
Rate handlingprotected abstract void
readData(int piece_number, int piece_offset, int length, ExternalSeedHTTPDownloaderListener listener)
protected void
readData(ExternalSeedReaderRequest request)
protected boolean
readyToActivate(PeerManager peer_manager, Peer peer, long time_since_start)
protected boolean
readyToDeactivate(PeerManager peer_manager, Peer peer)
void
removeListener(ExternalSeedReaderListener l)
void
reportBytesRead(int num)
protected int
selectRequests(java.util.List<PeerReadRequest> requests)
protected void
setActive(PeerManager _peer_manager, boolean _active)
protected void
setActiveSupport(PeerManager _peer_manager, boolean _active)
protected void
setReconnectDelay(int delay, boolean reset_failures)
-
-
-
Field Detail
-
RECONNECT_DEFAULT
public static final int RECONNECT_DEFAULT
- See Also:
- Constant Field Values
-
INITIAL_DELAY
public static final int INITIAL_DELAY
- See Also:
- Constant Field Values
-
STALLED_DOWNLOAD_SPEED
public static final int STALLED_DOWNLOAD_SPEED
- See Also:
- Constant Field Values
-
STALLED_PEER_SPEED
public static final int STALLED_PEER_SPEED
- See Also:
- Constant Field Values
-
TOP_PIECE_PRIORITY
public static final int TOP_PIECE_PRIORITY
- See Also:
- Constant Field Values
-
use_avail_to_activate
private static boolean use_avail_to_activate
-
min_download_speed_default
private static int min_download_speed_default
-
plugin
private ExternalSeedPlugin plugin
-
torrent
private Torrent torrent
-
host
private final java.lang.String host
-
host_net
private final java.lang.String host_net
-
ip_use_accessor
private java.lang.String ip_use_accessor
-
status
private java.lang.String status
-
active
private boolean active
-
permanent_fail
private boolean permanent_fail
-
last_failed_read
private long last_failed_read
-
consec_failures
private int consec_failures
-
user_agent
private java.lang.String user_agent
-
peer_manager_change_time
private long peer_manager_change_time
-
current_manager
private volatile PeerManager current_manager
-
requests
private java.util.List<PeerReadRequest> requests
-
dangling_requests
private java.util.List<PeerReadRequest> dangling_requests
-
request_thread
private java.lang.Thread request_thread
-
request_sem
private Semaphore request_sem
-
requests_mon
private Monitor requests_mon
-
active_read_request
private ExternalSeedReaderRequest active_read_request
-
priority_offsets
private int[] priority_offsets
-
ws_fast_activate
private boolean ws_fast_activate
-
ws_min_availability
private int ws_min_availability
-
ws_min_download_speed
private int ws_min_download_speed
-
ws_max_peer_speed
private int ws_max_peer_speed
-
ws_valid_until
private long ws_valid_until
-
transient_seed
private boolean transient_seed
-
reconnect_delay
private int reconnect_delay
-
current_request
private volatile ExternalSeedReaderRequest current_request
-
listeners
private java.util.List listeners
-
rate_sem
private AESemaphore rate_sem
-
rate_bytes_read
private int rate_bytes_read
-
rate_bytes_permitted
private int rate_bytes_permitted
-
bad_pieces
private volatile CopyOnWriteSet<ExternalSeedReaderImpl.MutableInteger> bad_pieces
-
-
Constructor Detail
-
ExternalSeedReaderImpl
protected ExternalSeedReaderImpl(ExternalSeedPlugin _plugin, Torrent _torrent, java.lang.String _host, java.util.Map _params)
-
-
Method Detail
-
getIP
public java.lang.String getIP()
- Specified by:
getIP
in interfaceExternalSeedReader
-
getTorrent
public Torrent getTorrent()
- Specified by:
getTorrent
in interfaceExternalSeedReader
-
getStatus
public java.lang.String getStatus()
- Specified by:
getStatus
in interfaceExternalSeedReader
-
isTransient
public boolean isTransient()
- Specified by:
isTransient
in interfaceExternalSeedReader
-
log
protected void log(java.lang.String str)
-
getUserAgent
protected java.lang.String getUserAgent()
-
getSystemTime
protected long getSystemTime()
-
getFailureCount
protected int getFailureCount()
-
getLastFailTime
protected long getLastFailTime()
-
isPermanentlyUnavailable
public boolean isPermanentlyUnavailable()
- Specified by:
isPermanentlyUnavailable
in interfaceExternalSeedReader
-
setReconnectDelay
protected void setReconnectDelay(int delay, boolean reset_failures)
-
eventOccurred
public void eventOccurred(PeerManagerEvent event)
- Specified by:
eventOccurred
in interfacePeerManagerListener2
-
readyToActivate
protected boolean readyToActivate(PeerManager peer_manager, Peer peer, long time_since_start)
-
readyToDeactivate
protected boolean readyToDeactivate(PeerManager peer_manager, Peer peer)
-
checkActivation
public boolean checkActivation(PeerManager peer_manager, Peer peer)
- Specified by:
checkActivation
in interfaceExternalSeedReader
-
deactivate
public void deactivate(java.lang.String reason)
- Specified by:
deactivate
in interfaceExternalSeedReader
-
setActive
protected void setActive(PeerManager _peer_manager, boolean _active)
-
setActiveSupport
protected void setActiveSupport(PeerManager _peer_manager, boolean _active)
-
isActive
public boolean isActive()
- Specified by:
isActive
in interfaceExternalSeedReader
-
processRequests
protected void processRequests()
-
readBytes
public int readBytes(int max)
Rate handling- Specified by:
readBytes
in interfaceExternalSeedReader
-
getPermittedBytes
public int getPermittedBytes() throws ExternalSeedException
- Throws:
ExternalSeedException
-
reportBytesRead
public void reportBytesRead(int num)
-
getPercentDoneOfCurrentIncomingRequest
public int getPercentDoneOfCurrentIncomingRequest()
- Specified by:
getPercentDoneOfCurrentIncomingRequest
in interfaceExternalSeedReader
-
getMaximumNumberOfRequests
public int getMaximumNumberOfRequests()
- Specified by:
getMaximumNumberOfRequests
in interfaceExternalSeedReader
-
calculatePriorityOffsets
public void calculatePriorityOffsets(PeerManager peer_manager, int[] base_priorities)
- Specified by:
calculatePriorityOffsets
in interfaceExternalSeedReader
-
getPieceGroupSize
protected abstract int getPieceGroupSize()
-
getRequestCanSpanPieces
protected abstract boolean getRequestCanSpanPieces()
-
getPriorityOffsets
public int[] getPriorityOffsets()
- Specified by:
getPriorityOffsets
in interfaceExternalSeedReader
-
selectRequests
protected int selectRequests(java.util.List<PeerReadRequest> requests)
-
read
public byte[] read(int piece_number, int piece_offset, int length, int timeout) throws ExternalSeedException
- Specified by:
read
in interfaceExternalSeedReader
- Throws:
ExternalSeedException
-
readData
protected void readData(ExternalSeedReaderRequest request) throws ExternalSeedException
- Throws:
ExternalSeedException
-
readData
protected abstract void readData(int piece_number, int piece_offset, int length, ExternalSeedHTTPDownloaderListener listener) throws ExternalSeedException
- Throws:
ExternalSeedException
-
processRequests
protected void processRequests(java.util.List<PeerReadRequest> requests)
-
addRequests
public void addRequests(java.util.List<PeerReadRequest> new_requests)
- Specified by:
addRequests
in interfaceExternalSeedReader
-
cancelRequest
public void cancelRequest(PeerReadRequest request)
- Specified by:
cancelRequest
in interfaceExternalSeedReader
-
cancelAllRequests
public void cancelAllRequests()
- Specified by:
cancelAllRequests
in interfaceExternalSeedReader
-
getRequestCount
public int getRequestCount()
- Specified by:
getRequestCount
in interfaceExternalSeedReader
-
getExpiredRequests
public java.util.List<PeerReadRequest> getExpiredRequests()
- Specified by:
getExpiredRequests
in interfaceExternalSeedReader
-
getRequests
public java.util.List<PeerReadRequest> getRequests()
- Specified by:
getRequests
in interfaceExternalSeedReader
-
getOutgoingRequestedPieceNumbers
public int[] getOutgoingRequestedPieceNumbers()
- Specified by:
getOutgoingRequestedPieceNumbers
in interfaceExternalSeedReader
-
getOutgoingRequestCount
public int getOutgoingRequestCount()
- Specified by:
getOutgoingRequestCount
in interfaceExternalSeedReader
-
informComplete
protected void informComplete(PeerReadRequest request, byte[] buffer)
-
informCancelled
protected void informCancelled(PeerReadRequest request)
-
informFailed
protected void informFailed(PeerReadRequest request)
-
addListener
public void addListener(ExternalSeedReaderListener l)
- Specified by:
addListener
in interfaceExternalSeedReader
-
removeListener
public void removeListener(ExternalSeedReaderListener l)
- Specified by:
removeListener
in interfaceExternalSeedReader
-
getIntParam
protected int getIntParam(java.util.Map map, java.lang.String name, int def)
-
getBooleanParam
protected boolean getBooleanParam(java.util.Map map, java.lang.String name, boolean def)
-
-