com.aelitis.azureus.plugins.extseed.impl
Class ExternalSeedReaderImpl

java.lang.Object
  extended by com.aelitis.azureus.plugins.extseed.impl.ExternalSeedReaderImpl
All Implemented Interfaces:
ExternalSeedReader, PeerManagerListener2
Direct Known Subclasses:
ExternalSeedReaderGetRight, ExternalSeedReaderWebSeed

public abstract class ExternalSeedReaderImpl
extends Object
implements ExternalSeedReader, PeerManagerListener2


Nested Class Summary
protected static class ExternalSeedReaderImpl.MutableInteger
           
 
Field Summary
static int INITIAL_DELAY
           
static int RECONNECT_DEFAULT
           
static int STALLED_DOWNLOAD_SPEED
           
static int STALLED_PEER_SPEED
           
static int TOP_PIECE_PRIORITY
           
 
Constructor Summary
protected ExternalSeedReaderImpl(ExternalSeedPlugin _plugin, Torrent _torrent, String _host, Map _params)
           
 
Method Summary
 void addListener(ExternalSeedReaderListener l)
           
 void addRequests(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(String reason)
           
 void eventOccurred(PeerManagerEvent event)
           
protected  boolean getBooleanParam(Map map, String name, boolean def)
           
 List<PeerReadRequest> getExpiredRequests()
           
protected  int getFailureCount()
           
protected  int getIntParam(Map map, String name, int def)
           
 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()
           
 List<PeerReadRequest> getRequests()
           
 String getStatus()
           
protected  long getSystemTime()
           
 Torrent getTorrent()
           
protected  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(String str)
           
protected  void processRequests()
           
protected  void processRequests(List<PeerReadRequest> requests)
           
 byte[] read(int piece_number, int piece_offset, int length, int timeout)
           
 int readBytes(int max)
          Rate handling
protected  void readData(ExternalSeedReaderRequest request)
           
protected abstract  void readData(int piece_number, int piece_offset, int length, ExternalSeedHTTPDownloaderListener listener)
           
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(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)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface com.aelitis.azureus.plugins.extseed.ExternalSeedReader
getName, getPort, getType, getURL, sameAs
 

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
Constructor Detail

ExternalSeedReaderImpl

protected ExternalSeedReaderImpl(ExternalSeedPlugin _plugin,
                                 Torrent _torrent,
                                 String _host,
                                 Map _params)
Method Detail

getIP

public String getIP()
Specified by:
getIP in interface ExternalSeedReader

getTorrent

public Torrent getTorrent()
Specified by:
getTorrent in interface ExternalSeedReader

getStatus

public String getStatus()
Specified by:
getStatus in interface ExternalSeedReader

isTransient

public boolean isTransient()
Specified by:
isTransient in interface ExternalSeedReader

log

protected void log(String str)

getUserAgent

protected String getUserAgent()

getSystemTime

protected long getSystemTime()

getFailureCount

protected int getFailureCount()

getLastFailTime

protected long getLastFailTime()

isPermanentlyUnavailable

public boolean isPermanentlyUnavailable()
Specified by:
isPermanentlyUnavailable in interface ExternalSeedReader

setReconnectDelay

protected void setReconnectDelay(int delay,
                                 boolean reset_failures)

eventOccurred

public void eventOccurred(PeerManagerEvent event)
Specified by:
eventOccurred in interface PeerManagerListener2

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 interface ExternalSeedReader

deactivate

public void deactivate(String reason)
Specified by:
deactivate in interface ExternalSeedReader

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 interface ExternalSeedReader

processRequests

protected void processRequests()

readBytes

public int readBytes(int max)
Rate handling

Specified by:
readBytes in interface ExternalSeedReader

getPermittedBytes

public int getPermittedBytes()
                      throws ExternalSeedException
Throws:
ExternalSeedException

reportBytesRead

public void reportBytesRead(int num)

getPercentDoneOfCurrentIncomingRequest

public int getPercentDoneOfCurrentIncomingRequest()
Specified by:
getPercentDoneOfCurrentIncomingRequest in interface ExternalSeedReader

getMaximumNumberOfRequests

public int getMaximumNumberOfRequests()
Specified by:
getMaximumNumberOfRequests in interface ExternalSeedReader

calculatePriorityOffsets

public void calculatePriorityOffsets(PeerManager peer_manager,
                                     int[] base_priorities)
Specified by:
calculatePriorityOffsets in interface ExternalSeedReader

getPieceGroupSize

protected abstract int getPieceGroupSize()

getRequestCanSpanPieces

protected abstract boolean getRequestCanSpanPieces()

getPriorityOffsets

public int[] getPriorityOffsets()
Specified by:
getPriorityOffsets in interface ExternalSeedReader

selectRequests

protected int selectRequests(List<PeerReadRequest> requests)

read

public byte[] read(int piece_number,
                   int piece_offset,
                   int length,
                   int timeout)
            throws ExternalSeedException
Specified by:
read in interface ExternalSeedReader
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(List<PeerReadRequest> requests)

addRequests

public void addRequests(List<PeerReadRequest> new_requests)
Specified by:
addRequests in interface ExternalSeedReader

cancelRequest

public void cancelRequest(PeerReadRequest request)
Specified by:
cancelRequest in interface ExternalSeedReader

cancelAllRequests

public void cancelAllRequests()
Specified by:
cancelAllRequests in interface ExternalSeedReader

getRequestCount

public int getRequestCount()
Specified by:
getRequestCount in interface ExternalSeedReader

getExpiredRequests

public List<PeerReadRequest> getExpiredRequests()
Specified by:
getExpiredRequests in interface ExternalSeedReader

getRequests

public List<PeerReadRequest> getRequests()
Specified by:
getRequests in interface ExternalSeedReader

getOutgoingRequestedPieceNumbers

public int[] getOutgoingRequestedPieceNumbers()
Specified by:
getOutgoingRequestedPieceNumbers in interface ExternalSeedReader

getOutgoingRequestCount

public int getOutgoingRequestCount()
Specified by:
getOutgoingRequestCount in interface ExternalSeedReader

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 interface ExternalSeedReader

removeListener

public void removeListener(ExternalSeedReaderListener l)
Specified by:
removeListener in interface ExternalSeedReader

getIntParam

protected int getIntParam(Map map,
                          String name,
                          int def)

getBooleanParam

protected boolean getBooleanParam(Map map,
                                  String name,
                                  boolean def)