Ignore:
Timestamp:
Mar 4, 2013, 4:01:38 AM (10 years ago)
Author:
livings124
Message:

cleanup and GCD-ing of the rpc methods

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/macosx/Controller.m

    r13988 r14039  
    47444744        if (torrentStruct != NULL && (type != TR_RPC_TORRENT_ADDED && type != TR_RPC_SESSION_CHANGED && type != TR_RPC_SESSION_CLOSE))
    47454745        {
    4746             for (torrent in fTorrents)
    4747                 if (torrentStruct == [torrent torrentStruct])
    4748                 {
    4749                     [torrent retain];
    4750                     break;
    4751                 }
    4752            
    4753             if (!torrent)
     4746            const NSUInteger index = [fTorrents indexOfObjectWithOptions:NSEnumerationConcurrent passingTest: ^BOOL(Torrent * checkTorrent, NSUInteger idx, BOOL * stop) {
     4747                return torrentStruct == [checkTorrent torrentStruct];
     4748            }];
     4749           
     4750            if (index == NSNotFound)
    47544751            {
    47554752                NSLog(@"No torrent found matching the given torrent struct from the RPC callback!");
    47564753                return;
    47574754            }
    4758         }
    4759        
    4760         switch (type)
    4761         {
    4762             case TR_RPC_TORRENT_ADDED:
    4763                 [self performSelectorOnMainThread: @selector(rpcAddTorrentStruct:) withObject:
    4764                     [[NSValue valueWithPointer: torrentStruct] retain] waitUntilDone: NO];
    4765                 break;
    4766            
    4767             case TR_RPC_TORRENT_STARTED:
    4768             case TR_RPC_TORRENT_STOPPED:
    4769                 [self performSelectorOnMainThread: @selector(rpcStartedStoppedTorrent:) withObject: torrent waitUntilDone: NO];
    4770                 break;
    4771            
    4772             case TR_RPC_TORRENT_REMOVING:
    4773                 [self performSelectorOnMainThread: @selector(rpcRemoveTorrent:) withObject: torrent waitUntilDone: NO];
    4774                 break;
    4775            
    4776             case TR_RPC_TORRENT_TRASHING:
    4777                 [self performSelectorOnMainThread: @selector(rpcRemoveTorrentDeleteData:) withObject: torrent waitUntilDone: NO];
    4778                 break;
    4779            
    4780             case TR_RPC_TORRENT_CHANGED:
    4781                 [self performSelectorOnMainThread: @selector(rpcChangedTorrent:) withObject: torrent waitUntilDone: NO];
    4782                 break;
    4783            
    4784             case TR_RPC_TORRENT_MOVED:
    4785                 [self performSelectorOnMainThread: @selector(rpcMovedTorrent:) withObject: torrent waitUntilDone: NO];
    4786                 break;
    4787            
    4788             case TR_RPC_SESSION_QUEUE_POSITIONS_CHANGED:
    4789                 [self performSelectorOnMainThread: @selector(rpcUpdateQueue) withObject: nil waitUntilDone: NO];
    4790                 break;
    4791            
    4792             case TR_RPC_SESSION_CHANGED:
    4793                 [fPrefsController performSelectorOnMainThread: @selector(rpcUpdatePrefs) withObject: nil waitUntilDone: NO];
    4794                 break;
    4795            
    4796             case TR_RPC_SESSION_CLOSE:
    4797                 fQuitRequested = YES;
    4798                 [NSApp performSelectorOnMainThread: @selector(terminate:) withObject: self waitUntilDone: NO];
    4799                 break;
    4800            
    4801             default:
    4802                 NSAssert1(NO, @"Unknown RPC command received: %d", type);
    4803                 [torrent release];
    4804         }
    4805     }
    4806 }
    4807 
    4808 - (void) rpcAddTorrentStruct: (NSValue *) torrentStructPtr
    4809 {
    4810     tr_torrent * torrentStruct = (tr_torrent *)[torrentStructPtr pointerValue];
    4811     [torrentStructPtr release];
    4812    
     4755            torrent = [fTorrents objectAtIndex: index];
     4756        }
     4757       
     4758        dispatch_async(dispatch_get_main_queue(), ^{
     4759            switch (type)
     4760            {
     4761                case TR_RPC_TORRENT_ADDED:
     4762                    [self rpcAddTorrentStruct: torrentStruct];
     4763                    break;
     4764                   
     4765                case TR_RPC_TORRENT_STARTED:
     4766                case TR_RPC_TORRENT_STOPPED:
     4767                    [self rpcStartedStoppedTorrent: torrent];
     4768                    break;
     4769                   
     4770                case TR_RPC_TORRENT_REMOVING:
     4771                    [self rpcRemoveTorrent: torrent];
     4772                    break;
     4773                   
     4774                case TR_RPC_TORRENT_TRASHING:
     4775                    [self rpcRemoveTorrentDeleteData: torrent];
     4776                    break;
     4777                   
     4778                case TR_RPC_TORRENT_CHANGED:
     4779                    [self rpcChangedTorrent: torrent];
     4780                    break;
     4781                   
     4782                case TR_RPC_TORRENT_MOVED:
     4783                    [self rpcMovedTorrent: torrent];
     4784                    break;
     4785                   
     4786                case TR_RPC_SESSION_QUEUE_POSITIONS_CHANGED:
     4787                    [self rpcUpdateQueue];
     4788                    break;
     4789                   
     4790                case TR_RPC_SESSION_CHANGED:
     4791                    [fPrefsController rpcUpdatePrefs];
     4792                    break;
     4793                   
     4794                case TR_RPC_SESSION_CLOSE:
     4795                    fQuitRequested = YES;
     4796                    [NSApp terminate: self];
     4797                    break;
     4798                   
     4799                default:
     4800                    NSAssert1(NO, @"Unknown RPC command received: %d", type);
     4801            }
     4802        });
     4803    }
     4804}
     4805
     4806- (void) rpcAddTorrentStruct: (struct tr_torrent *) torrentStruct
     4807{
    48134808    NSString * location = nil;
    48144809    if (tr_torrentGetDownloadDir(torrentStruct) != NULL)
     
    48384833{
    48394834    [self confirmRemoveTorrents: @[ torrent ] deleteData: NO];
    4840     [torrent release];
    48414835}
    48424836
     
    48444838{
    48454839    [self confirmRemoveTorrents: @[ torrent ] deleteData: YES];
    4846     [torrent release];
    48474840}
    48484841
     
    48504843{
    48514844    [torrent update];
    4852     [torrent release];
    48534845   
    48544846    [self updateUI];
     
    48664858        [fInfoController updateOptions];
    48674859    }
    4868    
    4869     [torrent release];
    48704860}
    48714861
     
    48774867    if ([[fTableView selectedTorrents] containsObject: torrent])
    48784868        [fInfoController updateInfoStats];
    4879    
    4880     [torrent release];
    48814869}
    48824870
     
    48864874        [torrent update];
    48874875   
    4888     NSArray * selectedValues = [fTableView selectedValues];
    4889    
    48904876    NSSortDescriptor * descriptor = [NSSortDescriptor sortDescriptorWithKey: @"queuePosition" ascending: YES];
    48914877    NSArray * descriptors = [NSArray arrayWithObject: descriptor];
    4892    
    48934878    [fTorrents sortUsingDescriptors: descriptors];
    48944879   
    4895     [self fullUpdateUI];
    4896    
    4897     [fTableView selectValues: selectedValues];
     4880    [self sortTorrents: YES];
    48984881}
    48994882
Note: See TracChangeset for help on using the changeset viewer.