Map<String,byte[]> old_cache = (Map<String,byte[]>)getPersistentMapProperty( PP_OD_STATE_CACHE, new HashMap<String,byte[]>());
Map<String,byte[]> new_cache = new HashMap<String, byte[]>();
GlobalManager gm = core.getGlobalManager();
if ( start_of_day ){
start_of_day = false;
Map<String,Map> xfer_cache = getPersistentMapProperty( PP_OD_XFER_CACHE, new HashMap<String,Map>());
if ( xfer_cache.size() > 0 ){
List<DownloadManager> initial_downloads = gm.getDownloadManagers();
for ( DownloadManager download: initial_downloads ){
if ( download.isForceStart()){
TOTorrent torrent = download.getTorrent();
if ( torrent == null ){
continue;
}
try{
byte[] hash = torrent.getHash();
String hash_str = ByteFormatter.encodeString( hash );
Map m = xfer_cache.get( hash_str );
if ( m != null ){
if ( m.containsKey( "f" )){
log( download, "Resetting force-start" );
download.setForceStart( false );
}
}
}catch( Throwable e ){
Debug.printStackTrace(e);
}
}
}
}
gm.addListener(
new GlobalManagerAdapter()
{
public void
downloadManagerAdded(
DownloadManager dm )
{
freq_lim_updater.dispatch();
}
public void
downloadManagerRemoved(
DownloadManager dm )
{
freq_lim_updater.dispatch();
}
},
false );
}
DeviceManager manager = getManager();
DeviceOfflineDownloaderManager dodm = manager.getOfflineDownlaoderManager();
List<DownloadManager> downloads;
if ( dodm.isOfflineDownloadingEnabled() && isEnabled()){
List<DownloadManager> initial_downloads = gm.getDownloadManagers();
List<DownloadManager> relevant_downloads = new ArrayList<DownloadManager>( initial_downloads.size());
// remove uninteresting ones