- (id)initWithPithos:(ASIPithos *)aPithos {
if ((self = [super init])) {
- self.pithos = aPithos;
+ pithos = [aPithos retain];
}
return self;
}
pithos = [aPithos retain];
[url release];
url = nil;
+ [accountRequest clearDelegatesAndCancel];
+ [accountRequest release];
+ accountRequest = nil;
+ [refreshMetadataAccountRequest clearDelegatesAndCancel];
+ [refreshMetadataAccountRequest release];
+ refreshMetadataAccountRequest = nil;
+ [applyMetadataAccountRequest clearDelegatesAndCancel];
+ [applyMetadataAccountRequest release];
+ applyMetadataAccountRequest = nil;
+ reset = YES;
}
}
- (NSArray *)children {
@synchronized(self) {
+ if (reset) {
+ [accountRequest clearDelegatesAndCancel];
+ [accountRequest release];
+ accountRequest = nil;
+ [refreshMetadataAccountRequest clearDelegatesAndCancel];
+ [refreshMetadataAccountRequest release];
+ refreshMetadataAccountRequest = nil;
+ [applyMetadataAccountRequest clearDelegatesAndCancel];
+ [applyMetadataAccountRequest release];
+ applyMetadataAccountRequest = nil;
+ [children release];
+ children = nil;
+ [newChildren release];
+ newChildren = nil;
+ self.pithosAccount = nil;
+ freshness = PithosNodeStateRefreshNeeded;
+ forcedRefresh = YES;
+ reset = NO;
+ [self postChildrenUpdatedNotificationName];
+ }
switch (freshness) {
case PithosNodeStateFresh:
break;
- (void)accountRequestFailed:(ASIPithosAccountRequest *)request {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+ NSString *message;
+ NSError *error = [accountRequest error];
+ if (error)
+ message = [NSString stringWithFormat:@"Account listing %@ failed: %@", accountRequest.url, [error localizedDescription]];
+ else
+ message = [NSString stringWithFormat:@"Account listing %@ failed: (%d) %@",
+ accountRequest.url, accountRequest.responseStatusCode, accountRequest.responseStatusMessage];
+ dispatch_async(dispatch_get_main_queue(), ^{
+ [[PithosActivityFacility defaultPithosActivityFacility] startAndEndActivityWithType:PithosActivityOther message:message];
+ });
NSUInteger retries = [[accountRequest.userInfo objectForKey:@"retries"] unsignedIntegerValue];
if (retries > 0) {
ASIPithosAccountRequest *newAccountRequest = (ASIPithosAccountRequest *)[PithosUtilities copyRequest:accountRequest];
accountRequest = newAccountRequest;
[[PithosUtilities prepareRequest:accountRequest priority:[[accountRequest.userInfo objectForKey:@"priority"] integerValue]] startAsynchronous];
} else {
- NSString *message;
- NSError *error = [accountRequest error];
- if (error)
- message = [NSString stringWithFormat:@"Account listing failed: %@", error];
- else
- message = [NSString stringWithFormat:@"Account listing failed: (%d) %@",
- accountRequest.responseStatusCode, accountRequest.responseStatusMessage];
- dispatch_async(dispatch_get_main_queue(), ^{
- [[PithosActivityFacility defaultPithosActivityFacility] startAndEndActivityWithType:PithosActivityOther message:message];
- });
[newChildren release];
newChildren = nil;
[accountRequest release];