#pragma mark -
#pragma mark Properties
+- (void)setPithos:(ASIPithos *)aPithos {
+ if (aPithos && ![aPithos isEqualTo:pithos]) {
+ [pithos release];
+ pithos = [aPithos retain];
+ [url release];
+ url = nil;
+ }
+}
+
- (NSString *)url {
if (url == nil)
url = [[NSString alloc] initWithFormat:@"%@/%@%@",
- (void)containerMetadataRequestFailed:(ASIPithosContainerRequest *)request {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- if ([request isEqualTo:applyMetadataContainerRequest]) {
- [PithosUtilities httpRequestErrorAlertWithRequest:applyMetadataContainerRequest];
- @synchronized(self) {
- [applyMetadataContainerRequest release];
- applyMetadataContainerRequest = nil;
+ NSUInteger retries = [[request.userInfo objectForKey:@"retries"] unsignedIntegerValue];
+ if (retries > 0) {
+ ASIPithosContainerRequest *newRequest = (ASIPithosContainerRequest *)[PithosUtilities copyRequest:request];
+ [(NSMutableDictionary *)(newRequest.userInfo)setObject:[NSNumber numberWithUnsignedInteger:(--retries)] forKey:@"retries"];
+ if ([request isEqualTo:applyMetadataContainerRequest]) {
+ @synchronized(self) {
+ [applyMetadataContainerRequest release];
+ applyMetadataContainerRequest = newRequest;
+ }
+ } else if ([request isEqualTo:refreshMetadataContainerRequest]) {
+ @synchronized(self) {
+ [refreshMetadataContainerRequest release];
+ refreshMetadataContainerRequest = newRequest;
+ }
}
- } else if ([request isEqualTo:refreshMetadataContainerRequest]) {
- [PithosUtilities httpRequestErrorAlertWithRequest:refreshMetadataContainerRequest];
- @synchronized(self) {
- [refreshMetadataContainerRequest release];
- refreshMetadataContainerRequest = nil;
+ [[PithosUtilities prepareRequest:newRequest priority:[[newRequest.userInfo objectForKey:@"priority"] integerValue]] startAsynchronous];
+ } else {
+ if ([request isEqualTo:applyMetadataContainerRequest]) {
+ dispatch_async(dispatch_get_main_queue(), ^{
+ [PithosUtilities httpRequestErrorAlertWithRequest:applyMetadataContainerRequest];
+ });
+ @synchronized(self) {
+ [applyMetadataContainerRequest release];
+ applyMetadataContainerRequest = nil;
+ }
+ } else if ([request isEqualTo:refreshMetadataContainerRequest]) {
+ dispatch_async(dispatch_get_main_queue(), ^{
+ [PithosUtilities httpRequestErrorAlertWithRequest:refreshMetadataContainerRequest];
+ });
+ @synchronized(self) {
+ [refreshMetadataContainerRequest release];
+ refreshMetadataContainerRequest = nil;
+ }
}
}
[pool drain];