/* whether or not we've ever scraped to this tracker */
tr_bool hasScraped;
- /* ex: legaltorrents.com */
+ /* ex: http://www.legaltorrents.com:7070 */
char host[1024];
/* the full announce URL */
descriptors = [[NSArray alloc] initWithObjects: progressDescriptor, ratioProgressDescriptor, ratioDescriptor,
nameDescriptor, nil];
}
- #warning broken
else if ([sortType isEqualToString: SORT_TRACKER])
{
- NSSortDescriptor * trackerDescriptor = [[[NSSortDescriptor alloc] initWithKey: @"trackerAddressAnnounce" ascending: asc
+ NSSortDescriptor * trackerDescriptor = [[[NSSortDescriptor alloc] initWithKey: @"trackerSortKey" ascending: asc
selector: @selector(localizedCaseInsensitiveCompare:)] autorelease];
descriptors = [[NSArray alloc] initWithObjects: trackerDescriptor, nameDescriptor, nil];
break;
case SORT_ACTIVITY_TAG:
sortType = SORT_ACTIVITY;
+ break;
default:
NSAssert1(NO, @"Unknown sort tag received: %d", [menuItem tag]);
+ return;
}
[menuItem setState: [sortType isEqualToString: [fDefaults stringForKey: @"Sort"]] ? NSOnState : NSOffState];
if (!torrent)
{
- [pool release];
+ [pool drain];
NSLog(@"No torrent found matching the given torrent struct from the RPC callback!");
return;
return 2;
}
+- (NSString *) trackerSortKey
+{
+ int count;
+ tr_tracker_stat * stats = tr_torrentTrackers(fHandle, &count);
+
+ NSString * best = nil;
+
+ for (int i=0; i < count; ++i)
+ {
+ NSString * tracker = [NSString stringWithUTF8String: stats[i].host];
+ if (!best || [tracker localizedCaseInsensitiveCompare: best] == NSOrderedAscending)
+ best = tracker;
+ }
+
+ tr_torrentTrackersFree(stats, count);
+ return best;
+}
+
- (tr_torrent *) torrentStruct
{
return fHandle;