Changeset 4783

Show
Ignore:
Timestamp:
05/20/07 14:29:26 (2 years ago)
Author:
morris
Message:

When checking to see if transfer already exists, only look at transfers that haven't been finished

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • WiredClient/trunk/WCTransfers.m

    r4775 r4783  
    6161 
    6262- (WCTransfer *)_selectedTransfer; 
    63 - (WCTransfer *)_transferWithPath:(NSString *)path; 
     63- (WCTransfer *)_unfinishedTransferWithPath:(NSString *)path; 
    6464- (WCTransfer *)_transferWithState:(WCTransferState)state; 
    6565- (WCTransfer *)_transferWithState:(WCTransferState)state type:(WCTransferType)type; 
     
    228228 
    229229 
    230 - (WCTransfer *)_transferWithPath:(NSString *)path { 
     230- (WCTransfer *)_unfinishedTransferWithPath:(NSString *)path { 
    231231        NSEnumerator            *enumerator; 
    232         WCTransfer                      *eachTransfer, *transfer = NULL
     232        WCTransfer                      *transfer
    233233 
    234234        enumerator = [_transfers objectEnumerator]; 
    235235 
    236         while((eachTransfer = [enumerator nextObject])) { 
    237                 if([eachTransfer isFolder]) { 
    238                         if([[eachTransfer virtualPath] isEqualToString:path] || 
    239                            [path hasPrefix:[[eachTransfer virtualPath] stringByAppendingString:@"/"]]) 
    240                                 transfer = eachTransfer; 
    241                 } else { 
    242                         if([eachTransfer containsFile:[WCFile fileWithPath:path]]) 
    243                                 transfer = eachTransfer; 
    244                 } 
    245                  
    246                 if(transfer) 
    247                         break; 
    248         } 
    249  
    250         return transfer; 
     236        while((transfer = [enumerator nextObject])) { 
     237                if([transfer state] != WCTransferFinished) { 
     238                        if([transfer isFolder]) { 
     239                                if([[transfer virtualPath] isEqualToString:path] || 
     240                                   [path hasPrefix:[[transfer virtualPath] stringByAppendingString:@"/"]]) 
     241                                        return transfer; 
     242                        } else { 
     243                                if([transfer containsFile:[WCFile fileWithPath:path]]) 
     244                                        return transfer; 
     245                        } 
     246                } 
     247        } 
     248 
     249        return NULL; 
    251250} 
    252251 
     
    255254- (WCTransfer *)_transferWithState:(WCTransferState)state { 
    256255        NSEnumerator            *enumerator; 
    257         WCTransfer                      *eachTransfer, *transfer = NULL
     256        WCTransfer                      *transfer
    258257 
    259258        enumerator = [_transfers objectEnumerator]; 
    260259 
    261         while((eachTransfer = [enumerator nextObject])) { 
    262                 if([eachTransfer state] == state) { 
    263                         transfer = eachTransfer; 
    264  
    265                         break; 
    266                 } 
    267         } 
    268  
    269         return transfer; 
     260        while((transfer = [enumerator nextObject])) { 
     261                if([transfer state] == state) 
     262                        return transfer; 
     263        } 
     264 
     265        return NULL; 
    270266} 
    271267 
     
    274270- (WCTransfer *)_transferWithState:(WCTransferState)state type:(WCTransferType)type { 
    275271        NSEnumerator            *enumerator; 
    276         WCTransfer                      *eachTransfer, *transfer = NULL
     272        WCTransfer                      *transfer
    277273 
    278274        enumerator = [_transfers objectEnumerator]; 
    279275 
    280         while((eachTransfer = [enumerator nextObject])) { 
    281                 if([eachTransfer state] == state && [eachTransfer type] == type) { 
    282                         transfer = eachTransfer; 
    283  
    284                         break; 
    285                 } 
    286         } 
    287  
    288         return transfer; 
     276        while((transfer = [enumerator nextObject])) { 
     277                if([transfer state] == state && [transfer type] == type) 
     278                        return transfer; 
     279        } 
     280 
     281        return NULL; 
    289282} 
    290283 
     
    557550        unsigned int            count; 
    558551 
    559         if([self _transferWithPath:[file path]]) { 
     552        if([self _unfinishedTransferWithPath:[file path]]) { 
    560553                error = [WCError errorWithDomain:WCWiredClientErrorDomain code:WCWiredClientTransferExists argument:[file path]]; 
    561554                [self _presentError:error]; 
     
    639632        remotePath = [[destination path] stringByAppendingPathComponent:[path lastPathComponent]]; 
    640633 
    641         if([self _transferWithPath:remotePath]) { 
     634        if([self _unfinishedTransferWithPath:remotePath]) { 
    642635                error = [WCError errorWithDomain:WCWiredClientErrorDomain code:WCWiredClientTransferExists argument:remotePath]; 
    643636                [self _presentError:error]; 
     
    12061199        hash            = [fields safeObjectAtIndex:2]; 
    12071200         
    1208         transfer        = [self _transferWithPath:path]; 
     1201        transfer        = [self _unfinishedTransferWithPath:path]; 
    12091202         
    12101203        if(!transfer) 
     
    12341227        queue           = [fields safeObjectAtIndex:1]; 
    12351228 
    1236         transfer        = [self _transferWithPath:path]; 
     1229        transfer        = [self _unfinishedTransferWithPath:path]; 
    12371230 
    12381231        if(!transfer) 
     
    12541247         
    12551248        file            = [WCFile fileWithInfoArguments:[[notification userInfo] objectForKey:WCArgumentsKey]]; 
    1256         transfer        = [self _transferWithPath:[file path]]; 
     1249        transfer        = [self _unfinishedTransferWithPath:[file path]]; 
    12571250         
    12581251        if(!transfer) 
     
    12891282         
    12901283        file            = [WCFile fileWithListArguments:[[notification userInfo] objectForKey:WCArgumentsKey]]; 
    1291         transfer        = [self _transferWithPath:[file path]]; 
     1284        transfer        = [self _unfinishedTransferWithPath:[file path]]; 
    12921285         
    12931286        if(!transfer) 
     
    13291322        free            = [fields safeObjectAtIndex:1]; 
    13301323         
    1331         transfer        = [self _transferWithPath:path]; 
     1324        transfer        = [self _unfinishedTransferWithPath:path]; 
    13321325         
    13331326        if(!transfer) 
     
    13641357         
    13651358        file            = [WCFile fileWithListArguments:[[notification userInfo] objectForKey:WCArgumentsKey]]; 
    1366         transfer        = [self _transferWithPath:[file path]]; 
     1359        transfer        = [self _unfinishedTransferWithPath:[file path]]; 
    13671360         
    13681361        if(!transfer) 
     
    13881381        path            = [fields safeObjectAtIndex:0]; 
    13891382        free            = [fields safeObjectAtIndex:1]; 
    1390         transfer        = [self _transferWithPath:path]; 
     1383        transfer        = [self _unfinishedTransferWithPath:path]; 
    13911384         
    13921385        if(!transfer)