@Override public void perform( TimerEvent event ) { long now = SystemTime.getCurrentTime(); synchronized( torrent_delegates ){ Iterator it = torrent_delegates.keySet().iterator(); while( it.hasNext()){ ((torrentDelegate)it.next()).discardPieces(now,false); } } } });
@Override public void serialiseToBEncodedFile( File target_file ) throws TOTorrentException { // make sure pieces are current try{ getMonitor().enter(); boolean[] restored = restoreState( true, true ); delegate.serialiseToBEncodedFile( target_file ); if ( target_file.equals( file )){ fluff_dirty = false; } if ( restored[0] ){ discardPieces( SystemTime.getCurrentTime(), true ); } if ( restored[1] ){ for (Iterator it = torrentFluffKeyset.iterator(); it.hasNext();){ delegate.setAdditionalMapProperty( (String)it.next(), fluffThombstone ); } } }finally{ getMonitor().exit(); } }
@Override public void setDiscardFluff( boolean discard ) { if ( discard && !torrentFluffKeyset.isEmpty() ){ //System.out.println( "Discarded fluff for " + new String(getName())); try{ getMonitor().enter(); try{ // if file is out of sync with fluff then force a write if ( fluff_dirty ){ boolean[] restored = restoreState( true, true ); delegate.serialiseToBEncodedFile( file ); fluff_dirty = false; if ( restored[0] ){ discardPieces( SystemTime.getCurrentTime(), true ); } } for(Iterator it = torrentFluffKeyset.iterator();it.hasNext();){ delegate.setAdditionalMapProperty( (String)it.next(), fluffThombstone ); } }catch( Throwable e ){ Debug.printStackTrace( e ); } }finally{ getMonitor().exit(); } } }
res.discardPieces( SystemTime.getCurrentTime(), true );
@Override public Map serialiseToMap() throws TOTorrentException { // make sure pieces are current try{ getMonitor().enter(); boolean[] restored = restoreState( true, true ); Map result = delegate.serialiseToMap(); if ( restored[0] ){ discardPieces( SystemTime.getCurrentTime(), true ); } if ( restored[1]){ for (Iterator it = torrentFluffKeyset.iterator(); it.hasNext();){ delegate.setAdditionalMapProperty((String) it.next(), fluffThombstone); } } return( result ); }finally{ getMonitor().exit(); } }
@Override public void serialiseToXMLFile( File target_file ) throws TOTorrentException { // make sure pieces are current try{ getMonitor().enter(); boolean[] restored = restoreState( true, true ); delegate.serialiseToXMLFile( target_file ); if ( restored[0] ){ discardPieces( SystemTime.getCurrentTime(), true ); } if ( restored[1]){ for (Iterator it = torrentFluffKeyset.iterator(); it.hasNext();){ delegate.setAdditionalMapProperty((String) it.next(), fluffThombstone); } } }finally{ getMonitor().exit(); } }