Examples of DiskManagerFileInfoImpl


Examples of org.gudy.azureus2.core3.disk.impl.DiskManagerFileInfoImpl

       
        for (int i = 0; i < pieceList.size(); i++) {
         
          DMPieceMapEntry piece_entry = pieceList.get(i);
           
          DiskManagerFileInfoImpl  file_info = piece_entry.getFile();
         
          CacheFile  cache_file = file_info.getCacheFile();
         
          if ( cache_file.compareLength( piece_entry.getOffset()) < 0 ){
             
            listener.checkCompleted( request, false );
           
            return;
          }
         
          if ( all_compact ){
           
            int st = cache_file.getStorageType();
           
            if (( st != CacheFile.CT_COMPACT && st != CacheFile.CT_PIECE_REORDER_COMPACT ) || file_info.getNbPieces() <= 2 ){
                   
              all_compact = false;
            }
          }
        }
       
        if ( all_compact ){
       
            // System.out.println( "Piece " + pieceNumber + " is all compact, failing hash check" );
         
          listener.checkCompleted( request, false );
         
          return;
        }
       
      }catch( Throwable e ){
     
          // we can fail here if the disk manager has been stopped as the cache file length access may be being
          // performed on a "closed" (i.e. un-owned) file
       
        listener.checkCancelled( request );

        return;
      }
     
      int this_piece_length = disk_manager.getPieceLength( pieceNumber );

      DiskManagerReadRequest read_request = disk_manager.createReadRequest( pieceNumber, 0, this_piece_length );
     
         try{
           this_mon.enter();
        
        if ( stopped ){
         
          listener.checkCancelled( request );
         
          return;
        }
       
        async_reads++;
          
         }finally{
          
           this_mon.exit();
         }
        
         read_request.setFlush( read_flush );
        
         read_request.setUseCache( !request.isAdHoc());
        
      disk_manager.enqueueReadRequest(
        read_request,
        new DiskManagerReadRequestListener()
        {
          public void
          readCompleted(
            DiskManagerReadRequest   read_request,
            DirectByteBuffer     buffer )
          {
            complete();
           
               try{
                 this_mon.enter();
              
              if ( stopped ){
               
                buffer.returnToPool();
               
                listener.checkCancelled( request );
               
                return;
              }
             
              async_checks++;
                
               }finally{
                
                 this_mon.exit();
               }
           
            try{
                final  DirectByteBuffer  f_buffer  = buffer;
               
                 ConcurrentHasher.getSingleton().addRequest(
                    buffer.getBuffer(DirectByteBuffer.SS_DW),
                  new ConcurrentHasherRequestListener()
                  {
                      public void
                    complete(
                      ConcurrentHasherRequest  hash_request )
                      {
                        int  async_result  = 3; // cancelled
                                               
                        try{
                         
                        byte[] actual_hash = hash_request.getResult();
                                               
                        if ( actual_hash != null ){
                           
                          request.setHash( actual_hash );
                         
                            async_result = 1; // success
                           
                            for (int i = 0; i < actual_hash.length; i++){
                             
                              if ( actual_hash[i] != required_hash[i]){
                               
                                async_result = 2; // failed;
                               
                                break;
                              }
                            }
                        }
                        }finally{
                         
                          try{
                            if ( async_result == 1 ){
                           
                              try{
                                for (int i = 0; i < pieceList.size(); i++) {
                                 
                                  DMPieceMapEntry piece_entry = pieceList.get(i);
                                   
                                  DiskManagerFileInfoImpl  file_info = piece_entry.getFile();
                                 
                                    // edge case here for skipped zero length files that have been deleted
                                 
                                  if ( file_info.getLength() > 0 || !file_info.isSkipped()){

                                    CacheFile  cache_file = file_info.getCacheFile();                   
                                 
                                    cache_file.setPieceComplete( pieceNumber, f_buffer );
                                  }
                                }
                              }catch( Throwable e ){
View Full Code Here

Examples of org.gudy.azureus2.core3.disk.impl.DiskManagerFileInfoImpl

   
      throws CacheFileManagerException
    {
      Object[]  stuff = (Object[])chunks.get( chunk_index++ );

      final DiskManagerFileInfoImpl  file = (DiskManagerFileInfoImpl)stuff[0];
     
      buffer.limit( DirectByteBuffer.SS_DR, ((Integer)stuff[2]).intValue());
           
      if ( file.getAccessMode() == DiskManagerFileInfo.READ ){
       
        if (Logger.isEnabled())
          Logger.log(new LogEvent(disk_manager, LOGID, "Changing "
              + file.getFile(true).getName()
              + " to read/write"));
         
        file.setAccessMode( DiskManagerFileInfo.WRITE );
      }
     
      boolean  handover_buffer  = chunk_index == chunks.size();
     
      DiskAccessRequestListener  delegate_listener =
        new DiskAccessRequestListener()
        {
          public void
          requestComplete(
            DiskAccessRequest  request )
          {
            l.requestComplete( request );
           
            file.dataWritten( request.getOffset(), request.getSize());
          }
         
          public void
          requestCancelled(
            DiskAccessRequest  request )
          {
            l.requestCancelled( request );
          }
         
          public void
          requestFailed(
            DiskAccessRequest  request,
            Throwable      cause )
          {
            l.requestFailed( request, cause );
          }
         
          public int
          getPriority()
          {
            return( -1 );
          }
         
          public void
          requestExecuted(long bytes)
          {             
          }
        };
       
      disk_access.queueWriteRequest(
        file.getCacheFile(),
        ((Long)stuff[1]).longValue(),
        buffer,
        handover_buffer,
        delegate_listener );
    }
View Full Code Here

Examples of org.gudy.azureus2.core3.disk.impl.DiskManagerFileInfoImpl

        final DMPieceList pieceList =pieceMap.getPieceList(dmPiece.getPieceNumber());
        final int pieceListSize =pieceList.size();
        for (int j =0; j <pieceListSize; j++)
        {
          final DiskManagerFileInfoImpl fileInfo =pieceList.get(j).getFile();
          final long downloaded =fileInfo.getDownloaded();
          final long length =fileInfo.getLength();
          if (length >0 &&downloaded <length &&!fileInfo.isSkipped())
          {
            int priority =0;
            // user option "prioritize first and last piece"
            // TODO: should prioritize ~10% from edges of file
            if (firstPiecePriorityL &&fileInfo.getNbPieces() >FIRST_PIECE_MIN_NB)
            {
              /* backed out for the moment - reverting to old first/last piece only
                          int lastFirstPiece = fileInfo.getFirstPieceNumber() + FIRST_PIECE_RANGE_PERCENT * (fileInfo.getLastPieceNumber() - fileInfo.getFirstPieceNumber()) / 100;

                          if ( (i >=fileInfo.getFirstPieceNumber() && i<= lastFirstPiece ) ) {
                                priority +=PRIORITY_W_FIRSTLAST + 10 * (lastFirstPiece - i) ;
            }

                            if( i ==fileInfo.getLastPieceNumber() ) {
                              priority +=PRIORITY_W_FIRSTLAST;
                            }
               */
              if (i == fileInfo.getFirstPieceNumber() ||i == fileInfo.getLastPieceNumber())
                priority +=PRIORITY_W_FIRSTLAST;
            }
            // if the file is high-priority
            // startPriority +=(1000 *fileInfo.getPriority()) /255;
           
            int file_priority = fileInfo.getPriority();
           
            if ( file_priority > 0 ){
             
              int max = Math.max( file_priority, max_file_priority );
           
View Full Code Here

Examples of org.gudy.azureus2.core3.disk.impl.DiskManagerFileInfoImpl

       
        File  relative_file = pm_info.getDataFile();
       
        long target_length = pm_info.getLength();
             
        DiskManagerFileInfoImpl  file_info =
          new DiskManagerFileInfoImpl(
                      this,
                      new File( save_location, relative_file.toString()),
                      i,
                      pm_info.getTorrentFile(),
                      DiskManagerFileInfo.ST_LINEAR );
       
        local_files[i] = file_info;

        CacheFile  cache_file  = file_info.getCacheFile();
        File    data_file  = file_info.getFile(true);
 
        if ( !cache_file.exists()){
           
          throw( new Exception( "File '" + data_file + "' doesn't exist" ));
        }
View Full Code Here

Examples of org.gudy.azureus2.pluginsimpl.local.disk.DiskManagerFileInfoImpl

    if ( info == null ){
     
      return( null );
    }
   
    return( new DiskManagerFileInfoImpl( DownloadManagerImpl.getDownloadStatic( info.getDownloadManager()), info ));
  }
View Full Code Here

Examples of org.gudy.azureus2.pluginsimpl.local.disk.DiskManagerFileInfoImpl

    if (coreDataSource instanceof DiskManagerFileInfo) {
      DiskManagerFileInfo fileInfo = (DiskManagerFileInfo) coreDataSource;
      if (fileInfo != null) {
        try {
          pluginDataSource = new DiskManagerFileInfoImpl(
              DownloadManagerImpl.getDownloadStatic(fileInfo.getDownloadManager()),
              fileInfo);
        } catch (DownloadException e) { /* Ignore */
        }
      }
 
View Full Code Here

Examples of org.gudy.azureus2.pluginsimpl.local.disk.DiskManagerFileInfoImpl

    }
    if (index < 0 || index >= info.length) {
      return null;
    }

    return new DiskManagerFileInfoImpl(this, info[index]);
  }
View Full Code Here

Examples of org.gudy.azureus2.pluginsimpl.local.disk.DiskManagerFileInfoImpl

   
    DiskManagerFileInfo[]  res = new DiskManagerFileInfo[info.length];
   
    for (int i=0;i<res.length;i++){
     
      res[i] = new DiskManagerFileInfoImpl( this, info[i] );
    }
   
    return( res );
  }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.