Class TRTrackerBTAnnouncerImpl
- java.lang.Object
-
- com.biglybt.core.tracker.client.impl.bt.TRTrackerBTAnnouncerImpl
-
- All Implemented Interfaces:
TRTrackerAnnouncerHelper
,TRTrackerAnnouncer
public class TRTrackerBTAnnouncerImpl extends java.lang.Object implements TRTrackerAnnouncerHelper
This class handles communication with the tracker
-
-
Field Summary
-
Fields inherited from interface com.biglybt.core.tracker.client.TRTrackerAnnouncer
AZ_TRACKER_VERSION_1, AZ_TRACKER_VERSION_2, AZ_TRACKER_VERSION_3, AZ_TRACKER_VERSION_CURRENT, DEFAULT_PEERS_TO_CACHE, REFRESH_MINIMUM_SECS, TS_COMPLETED, TS_DOWNLOADING, TS_INITIALISED, TS_STOPPED
-
-
Constructor Summary
Constructors Constructor Description TRTrackerBTAnnouncerImpl(HashWrapper _torrent_hash_override, TOTorrent _torrent, TOTorrentAnnounceURLSet[] _announce_urls, java.lang.String[] _peer_networks, boolean _manual, TRTrackerAnnouncerImpl.Helper _helper)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addListener(TRTrackerAnnouncerListener l)
(package private) static void
analyseTimerEvents()
(package private) static void
analyseTimerEvents(Timer timer)
private java.lang.String
announceHTTP(java.net.URL[] tracker_url, java.net.URL original_reqUrl, java.io.ByteArrayOutputStream message, boolean first_effort)
private java.lang.String
announceHTTPSupport(java.net.URL[] tracker_url, java.net.URL original_reqUrl, java.net.Proxy proxy, boolean first_effort, java.io.ByteArrayOutputStream message)
protected java.lang.String
announceUDP(java.net.URL original_reqUrl, java.io.ByteArrayOutputStream message, boolean is_probe)
protected int
calculateNumWant()
void
clearIPOverride()
void
cloneFrom(TRTrackerBTAnnouncerImpl other)
void
complete(boolean already_reported)
protected TRTrackerAnnouncerResponseImpl
completeSupport()
private TRTrackerAnnouncerRequestImpl
constructRequest(java.lang.String evt, java.net.URL _url)
private void
constructTrackerUrlLists(boolean shuffle)
protected TRTrackerAnnouncerResponseImpl
decodeTrackerResponse(java.net.URL url, byte[] data)
void
destroy()
protected java.lang.String
exceptionToString(java.lang.Throwable e)
protected java.lang.String
exceptionToString(java.net.HttpURLConnection con, java.lang.Throwable e)
void
generateEvidence(IndentWriter writer)
protected long
getAdjustedSecsToWait()
TOTorrentAnnounceURLSet[]
getAnnounceSets()
TRTrackerAnnouncer
getBestAnnouncer()
TrackerPeerSource
getCacheTrackerPeerSource()
protected int
getErrorRetryInterval()
Retrieve the retry interval to use on announce errors.long
getInterval()
TRTrackerAnnouncerResponse
getLastResponse()
int
getLastUpdateTime()
Last Update Time in secondsprivate java.lang.Long
getLong(java.util.Map map, java.lang.String key)
protected long
getLongURLParam(java.lang.String url, java.lang.String param)
long
getMinInterval()
byte[]
getPeerId()
int
getStatus()
java.lang.String
getStatusString()
int
getTimeUntilNextUpdate()
TOTorrent
getTorrent()
TrackerPeerSource
getTrackerPeerSource(TOTorrentAnnounceURLSet set)
Gets a delegate tracker peer source for reporting againstjava.util.Map
getTrackerResponseCache()
returns a Map containing "bencoded" entries representing a cache of tracker responses.java.net.URL
getTrackerURL()
protected java.lang.String
getURLParam(java.lang.String url, java.lang.String param)
protected void
informURLChange(java.net.URL old_url, java.net.URL new_url, boolean explicit)
protected void
informURLRefresh()
boolean
isManual()
boolean
isUpdating()
void
refreshListeners()
This method forces all listeners to get an explicit "urlChanged" event to get them to re-examine the trackervoid
removeFromTrackerResponseCache(java.lang.String ip, int tcpPort)
remove a specific entry from the cache if presentvoid
removeListener(TRTrackerAnnouncerListener l)
protected void
requestUpdate()
protected long
requestUpdateSupport()
void
resetTrackerUrl(boolean shuffle)
void
setAnnounceDataProvider(TRTrackerAnnouncerDataProvider _provider)
void
setAnnounceResult(DownloadAnnounceResult result)
void
setIPOverride(java.lang.String override)
void
setRefreshDelayOverrides(int percentage)
void
setTrackerResponseCache(java.util.Map map)
sets the response cache.void
setTrackerURL(java.net.URL new_url)
protected TRTrackerAnnouncerResponseImpl
startSupport()
void
stop(boolean for_queue)
protected TRTrackerAnnouncerResponseImpl
stopSupport()
protected java.lang.String
trackerURLListToString()
void
update(boolean force)
private TRTrackerAnnouncerResponseImpl
update(java.lang.String evt)
private TRTrackerAnnouncerResponseImpl
update2(java.lang.String evt)
private TRTrackerAnnouncerResponseImpl
update2Support(java.lang.String evt)
private byte[]
updateOld(java.net.URL[] tracker_url, java.net.URL reqUrl)
protected TRTrackerAnnouncerResponseImpl
updateSupport()
-
-
-
Field Detail
-
LOGID
public static final LogIDs LOGID
-
OVERRIDE_PERIOD
private static final int OVERRIDE_PERIOD
- See Also:
- Constant Field Values
-
tracker_timer_public
private static final Timer tracker_timer_public
-
tracker_timer_private
private static final Timer tracker_timer_private
-
all_trackers
private static final AllTrackersManager.AllTrackers all_trackers
-
UDP_REALM
public static final java.lang.String UDP_REALM
- See Also:
- Constant Field Values
-
userMinInterval
private static int userMinInterval
-
userMaxNumwant
private static int userMaxNumwant
-
tcpAnnounceEnabled
private static boolean tcpAnnounceEnabled
-
udpAnnounceEnabled
private static boolean udpAnnounceEnabled
-
udpProbeEnabled
private static boolean udpProbeEnabled
-
class_mon
private static final AEMonitor class_mon
-
tracker_report_map
private static final java.util.Map tracker_report_map
-
tracker_timer
private final Timer tracker_timer
-
torrent
private final TOTorrent torrent
-
announce_urls
private final TOTorrentAnnounceURLSet[] announce_urls
-
helper
private TRTrackerAnnouncerImpl.Helper helper
-
current_timer_event
private TimerEvent current_timer_event
-
timer_event_action
private TimerEventPerformer timer_event_action
-
tracker_state
protected int tracker_state
-
tracker_status_str
private java.lang.String tracker_status_str
-
last_response
private TRTrackerAnnouncerResponseImpl last_response
-
last_update_time_secs
private long last_update_time_secs
-
current_time_to_wait_secs
private long current_time_to_wait_secs
-
manual_control
private final boolean manual_control
-
tracker_interval
private long tracker_interval
-
tracker_min_interval
private long tracker_min_interval
-
min_interval
private long min_interval
-
failure_added_time
private int failure_added_time
-
failure_time_last_updated
private long failure_time_last_updated
-
stopped
private boolean stopped
-
stopped_for_queue
private boolean stopped_for_queue
-
completed
private boolean completed
-
complete_reported
private boolean complete_reported
-
update_in_progress
private boolean update_in_progress
-
rd_last_override
private long rd_last_override
-
rd_override_percentage
private int rd_override_percentage
-
min_interval_override
private long min_interval_override
-
trackerUrlLists
private java.util.List<java.util.List<java.net.URL>> trackerUrlLists
-
lastUsedUrl
private java.net.URL lastUsedUrl
-
lastAZTrackerCheckedURL
private java.net.URL lastAZTrackerCheckedURL
-
torrent_hash_actual
private final HashWrapper torrent_hash_actual
-
torrent_hash_target
private final HashWrapper torrent_hash_target
-
last_tracker_message
private java.lang.String last_tracker_message
-
info_hash
private java.lang.String info_hash
-
tracker_peer_id
private byte[] tracker_peer_id
-
tracker_peer_id_str
private java.lang.String tracker_peer_id_str
-
data_peer_id
private byte[] data_peer_id
-
announceCount
private int announceCount
-
announceFailCount
private int announceFailCount
-
autoUDPprobeEvery
private byte autoUDPprobeEvery
-
autoUDPProbeSuccessCount
private int autoUDPProbeSuccessCount
-
tracker_id
private java.lang.String tracker_id
-
ip_override
private java.lang.String ip_override
-
peer_networks
private final java.lang.String[] peer_networks
-
announce_data_provider
private TRTrackerAnnouncerDataProvider announce_data_provider
-
this_mon
protected final AEMonitor this_mon
-
az_tracker
private boolean az_tracker
-
enable_sni_hack
private boolean enable_sni_hack
-
internal_error_hack
private boolean internal_error_hack
-
dh_hack
private boolean dh_hack
-
destroyed
private boolean destroyed
-
-
Constructor Detail
-
TRTrackerBTAnnouncerImpl
public TRTrackerBTAnnouncerImpl(HashWrapper _torrent_hash_override, TOTorrent _torrent, TOTorrentAnnounceURLSet[] _announce_urls, java.lang.String[] _peer_networks, boolean _manual, TRTrackerAnnouncerImpl.Helper _helper) throws TRTrackerAnnouncerException
- Throws:
TRTrackerAnnouncerException
-
-
Method Detail
-
analyseTimerEvents
static void analyseTimerEvents()
-
analyseTimerEvents
static void analyseTimerEvents(Timer timer)
-
cloneFrom
public void cloneFrom(TRTrackerBTAnnouncerImpl other)
-
getAdjustedSecsToWait
protected long getAdjustedSecsToWait()
-
getStatus
public int getStatus()
- Specified by:
getStatus
in interfaceTRTrackerAnnouncer
-
getStatusString
public java.lang.String getStatusString()
- Specified by:
getStatusString
in interfaceTRTrackerAnnouncer
-
getBestAnnouncer
public TRTrackerAnnouncer getBestAnnouncer()
- Specified by:
getBestAnnouncer
in interfaceTRTrackerAnnouncer
-
setRefreshDelayOverrides
public void setRefreshDelayOverrides(int percentage)
- Specified by:
setRefreshDelayOverrides
in interfaceTRTrackerAnnouncer
-
isUpdating
public boolean isUpdating()
- Specified by:
isUpdating
in interfaceTRTrackerAnnouncerHelper
-
getInterval
public long getInterval()
- Specified by:
getInterval
in interfaceTRTrackerAnnouncerHelper
-
getMinInterval
public long getMinInterval()
- Specified by:
getMinInterval
in interfaceTRTrackerAnnouncerHelper
-
getTimeUntilNextUpdate
public int getTimeUntilNextUpdate()
- Specified by:
getTimeUntilNextUpdate
in interfaceTRTrackerAnnouncer
- Specified by:
getTimeUntilNextUpdate
in interfaceTRTrackerAnnouncerHelper
-
getLastUpdateTime
public int getLastUpdateTime()
Description copied from interface:TRTrackerAnnouncer
Last Update Time in seconds- Specified by:
getLastUpdateTime
in interfaceTRTrackerAnnouncer
-
update
public void update(boolean force)
- Specified by:
update
in interfaceTRTrackerAnnouncer
-
complete
public void complete(boolean already_reported)
- Specified by:
complete
in interfaceTRTrackerAnnouncer
-
stop
public void stop(boolean for_queue)
- Specified by:
stop
in interfaceTRTrackerAnnouncer
-
requestUpdate
protected void requestUpdate()
-
requestUpdateSupport
protected long requestUpdateSupport()
-
startSupport
protected TRTrackerAnnouncerResponseImpl startSupport()
-
completeSupport
protected TRTrackerAnnouncerResponseImpl completeSupport()
-
stopSupport
protected TRTrackerAnnouncerResponseImpl stopSupport()
-
updateSupport
protected TRTrackerAnnouncerResponseImpl updateSupport()
-
update
private TRTrackerAnnouncerResponseImpl update(java.lang.String evt)
-
update2
private TRTrackerAnnouncerResponseImpl update2(java.lang.String evt)
-
update2Support
private TRTrackerAnnouncerResponseImpl update2Support(java.lang.String evt)
-
updateOld
private byte[] updateOld(java.net.URL[] tracker_url, java.net.URL reqUrl) throws java.lang.Exception
- Throws:
java.lang.Exception
-
announceHTTP
private java.lang.String announceHTTP(java.net.URL[] tracker_url, java.net.URL original_reqUrl, java.io.ByteArrayOutputStream message, boolean first_effort) throws java.lang.Exception
- Throws:
java.lang.Exception
-
announceHTTPSupport
private java.lang.String announceHTTPSupport(java.net.URL[] tracker_url, java.net.URL original_reqUrl, java.net.Proxy proxy, boolean first_effort, java.io.ByteArrayOutputStream message) throws java.io.IOException
- Throws:
java.io.IOException
-
announceUDP
protected java.lang.String announceUDP(java.net.URL original_reqUrl, java.io.ByteArrayOutputStream message, boolean is_probe) throws java.io.IOException
- Throws:
java.io.IOException
-
getLongURLParam
protected long getLongURLParam(java.lang.String url, java.lang.String param)
-
getURLParam
protected java.lang.String getURLParam(java.lang.String url, java.lang.String param)
-
exceptionToString
protected java.lang.String exceptionToString(java.lang.Throwable e)
-
exceptionToString
protected java.lang.String exceptionToString(java.net.HttpURLConnection con, java.lang.Throwable e)
-
constructRequest
private TRTrackerAnnouncerRequestImpl constructRequest(java.lang.String evt, java.net.URL _url) throws java.lang.Exception
- Throws:
java.lang.Exception
-
calculateNumWant
protected int calculateNumWant()
-
getPeerId
public byte[] getPeerId()
- Specified by:
getPeerId
in interfaceTRTrackerAnnouncer
-
setAnnounceDataProvider
public void setAnnounceDataProvider(TRTrackerAnnouncerDataProvider _provider)
- Specified by:
setAnnounceDataProvider
in interfaceTRTrackerAnnouncer
-
getTorrent
public TOTorrent getTorrent()
- Specified by:
getTorrent
in interfaceTRTrackerAnnouncer
-
getTrackerURL
public java.net.URL getTrackerURL()
- Specified by:
getTrackerURL
in interfaceTRTrackerAnnouncer
-
setTrackerURL
public void setTrackerURL(java.net.URL new_url)
- Specified by:
setTrackerURL
in interfaceTRTrackerAnnouncer
-
getAnnounceSets
public TOTorrentAnnounceURLSet[] getAnnounceSets()
- Specified by:
getAnnounceSets
in interfaceTRTrackerAnnouncerHelper
-
resetTrackerUrl
public void resetTrackerUrl(boolean shuffle)
- Specified by:
resetTrackerUrl
in interfaceTRTrackerAnnouncer
-
refreshListeners
public void refreshListeners()
Description copied from interface:TRTrackerAnnouncer
This method forces all listeners to get an explicit "urlChanged" event to get them to re-examine the tracker- Specified by:
refreshListeners
in interfaceTRTrackerAnnouncer
-
setIPOverride
public void setIPOverride(java.lang.String override)
- Specified by:
setIPOverride
in interfaceTRTrackerAnnouncer
-
clearIPOverride
public void clearIPOverride()
- Specified by:
clearIPOverride
in interfaceTRTrackerAnnouncer
-
constructTrackerUrlLists
private void constructTrackerUrlLists(boolean shuffle)
-
trackerURLListToString
protected java.lang.String trackerURLListToString()
-
decodeTrackerResponse
protected TRTrackerAnnouncerResponseImpl decodeTrackerResponse(java.net.URL url, byte[] data)
-
getLong
private java.lang.Long getLong(java.util.Map map, java.lang.String key)
-
informURLChange
protected void informURLChange(java.net.URL old_url, java.net.URL new_url, boolean explicit)
-
informURLRefresh
protected void informURLRefresh()
-
getLastResponse
public TRTrackerAnnouncerResponse getLastResponse()
- Specified by:
getLastResponse
in interfaceTRTrackerAnnouncer
-
isManual
public boolean isManual()
- Specified by:
isManual
in interfaceTRTrackerAnnouncer
-
destroy
public void destroy()
- Specified by:
destroy
in interfaceTRTrackerAnnouncer
-
getErrorRetryInterval
protected int getErrorRetryInterval()
Retrieve the retry interval to use on announce errors.
-
setAnnounceResult
public void setAnnounceResult(DownloadAnnounceResult result)
- Specified by:
setAnnounceResult
in interfaceTRTrackerAnnouncer
-
addListener
public void addListener(TRTrackerAnnouncerListener l)
- Specified by:
addListener
in interfaceTRTrackerAnnouncer
-
removeListener
public void removeListener(TRTrackerAnnouncerListener l)
- Specified by:
removeListener
in interfaceTRTrackerAnnouncer
-
setTrackerResponseCache
public void setTrackerResponseCache(java.util.Map map)
Description copied from interface:TRTrackerAnnouncer
sets the response cache. This may be used by the tracker client to return peer details when the tracker is offline- Specified by:
setTrackerResponseCache
in interfaceTRTrackerAnnouncer
-
removeFromTrackerResponseCache
public void removeFromTrackerResponseCache(java.lang.String ip, int tcpPort)
Description copied from interface:TRTrackerAnnouncer
remove a specific entry from the cache if present- Specified by:
removeFromTrackerResponseCache
in interfaceTRTrackerAnnouncer
-
getTrackerResponseCache
public java.util.Map getTrackerResponseCache()
Description copied from interface:TRTrackerAnnouncer
returns a Map containing "bencoded" entries representing a cache of tracker responses.- Specified by:
getTrackerResponseCache
in interfaceTRTrackerAnnouncer
- Returns:
-
getTrackerPeerSource
public TrackerPeerSource getTrackerPeerSource(TOTorrentAnnounceURLSet set)
Description copied from interface:TRTrackerAnnouncer
Gets a delegate tracker peer source for reporting against- Specified by:
getTrackerPeerSource
in interfaceTRTrackerAnnouncer
- Returns:
-
getCacheTrackerPeerSource
public TrackerPeerSource getCacheTrackerPeerSource()
- Specified by:
getCacheTrackerPeerSource
in interfaceTRTrackerAnnouncer
-
generateEvidence
public void generateEvidence(IndentWriter writer)
- Specified by:
generateEvidence
in interfaceTRTrackerAnnouncer
-
-