Package org.gudy.azureus2.core3.disk.impl

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


  private static DiskManagerFileInfo[] toDMFI(Object[] objects) {
    int count = 0;
    DiskManagerFileInfo[] result = new DiskManagerFileInfo[objects.length];
    for (Object object : objects) {
      if (object instanceof DiskManagerFileInfo) {
        DiskManagerFileInfo fileInfo = (DiskManagerFileInfo) object;
        result[count++] = fileInfo;
      } else if (object instanceof SelectedContent) {
        SelectedContent sc = (SelectedContent) object;
        int fileIndex = sc.getFileIndex();
        if (fileIndex >= 0 && sc.getDownloadManager() != null) {
View Full Code Here


              canStop = true;
            }
          } else {
            DiskManagerFileInfo[] fileInfos = dm.getDiskManagerFileInfo();
            if (fileIndex < fileInfos.length) {
              DiskManagerFileInfo fileInfo = fileInfos[fileIndex];
              if (!canStart && (fileInfo.isSkipped())) {
                canStart = true;
              }
             
              if (!canStop && !fileInfo.isSkipped()) {
                canStop = true;
              }
             
              if (!canRemoveFileInfo && !fileInfo.isSkipped()) {
                int storageType = fileInfo.getStorageType();
                if (storageType == DiskManagerFileInfo.ST_LINEAR
                    || storageType == DiskManagerFileInfo.ST_COMPACT) {
                  canRemoveFileInfo = true;
                }
              }
             
              if (!canRunFileInfo
                  && fileInfo.getAccessMode() == DiskManagerFileInfo.READ
                  && fileInfo.getDownloaded() == fileInfo.getLength()
                  && fileInfo.getFile(true).exists()) {
                canRunFileInfo = true;
              }
            }
          }
        }
View Full Code Here

    DownloadManager dm = (DownloadManager) ds;
    if (rowCore.getSubItemCount() == 0 && dm.getTorrent() != null
        && !dm.getTorrent().isSimpleTorrent() && rowCore.isVisible()
        && dm.getNumFileInfos() > 0) {
      DiskManagerFileInfoSet fileInfos = dm.getDiskManagerFileInfoSet();
      if (fileInfos != null) {
        DiskManagerFileInfo[] files = fileInfos.getFiles();
        boolean copied = false;
        int pos = 0;
        for (int i = 0; i < files.length; i++) {
          DiskManagerFileInfo fileInfo = files[i];
          if (fileInfo.isSkipped()
View Full Code Here

       
        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

   
      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

        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

       
        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

  public static DiskManager
  create(
    TOTorrent    torrent,
    DownloadManager manager)
  {
    DiskManagerImpl dm = new DiskManagerImpl( torrent, manager );
   
    if ( dm.getState() != DiskManager.FAULTY ){
     
      dm.start();
    }
   
    return dm;
  }
View Full Code Here

        }
        CategoryManager.addCategoryManagerListener(MyTorrentsView.this);
        globalManager.addListener(MyTorrentsView.this, false);
        DownloadManager[] dms = (DownloadManager[]) globalManager.getDownloadManagers().toArray(new DownloadManager[0]);
        for (int i = 0; i < dms.length; i++) {
          DownloadManager dm = dms[i];
          dm.addListener(MyTorrentsView.this);
          if (!isOurDownloadManager(dm)) {
            dms[i] = null;
          }
        }
        tv.addDataSources(dms);
View Full Code Here

        }
      }
    });
    Object[] dms = globalManager.getDownloadManagers().toArray();
    for (int i = 0; i < dms.length; i++) {
      DownloadManager dm = (DownloadManager) dms[i];
      dm.removeListener(this);
    }
    if (currentCategory != null) {
      currentCategory.removeCategoryListener(this);
    }
    CategoryManager.removeCategoryManagerListener(this);
View Full Code Here

TOP

Related Classes of org.gudy.azureus2.core3.disk.impl.DiskManagerFileInfoImpl

Copyright © 2018 www.massapicom. 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.