Improve handling of node requests
[pithos-macos] / pithos-macos / PithosAccountNode.m
index 42a210b..329b610 100644 (file)
@@ -49,7 +49,7 @@
 static NSImage *sharedIcon = nil;
 
 @implementation PithosAccountNode
-@synthesize pithos, pithosAccount, translatedGroups;
+@synthesize pithos, pithosAccount, accountRequest, applyMetadataAccountRequest, refreshMetadataAccountRequest, translatedGroups;
 
 + (void)initialize {
        if (self == [PithosAccountNode class])
@@ -111,11 +111,11 @@ static NSImage *sharedIcon = nil;
         pithos = aPithos;
         url = nil;
         [accountRequest clearDelegatesAndCancel];
-        accountRequest = nil;
+        self.accountRequest = nil;
         [refreshMetadataAccountRequest clearDelegatesAndCancel];
-        refreshMetadataAccountRequest = nil;
+        self.refreshMetadataAccountRequest = nil;
         [applyMetadataAccountRequest clearDelegatesAndCancel];
-        applyMetadataAccountRequest = nil;
+        self.applyMetadataAccountRequest = nil;
         reset = YES;
     }
 }
@@ -139,11 +139,11 @@ static NSImage *sharedIcon = nil;
     @synchronized(self) {
         if (reset) {
             [accountRequest clearDelegatesAndCancel];
-            accountRequest = nil;
+            self.accountRequest = nil;
             [refreshMetadataAccountRequest clearDelegatesAndCancel];
-            refreshMetadataAccountRequest = nil;
+            self.refreshMetadataAccountRequest = nil;
             [applyMetadataAccountRequest clearDelegatesAndCancel];
-            applyMetadataAccountRequest = nil;
+            self.applyMetadataAccountRequest = nil;
             children = nil;
             newChildren = nil;
             self.pithosAccount = nil;
@@ -157,11 +157,11 @@ static NSImage *sharedIcon = nil;
                 break;
             case PithosNodeStateRefreshNeeded:
                 freshness = PithosNodeStateRefreshing;
-                accountRequest = [ASIPithosAccountRequest listContainersRequestWithPithos:pithos 
-                                                                                     limit:0 
-                                                                                    marker:nil 
-                                                                                    shared:shared 
-                                                                                     until:nil];
+                self.accountRequest = [ASIPithosAccountRequest listContainersRequestWithPithos:pithos
+                                                                                         limit:0
+                                                                                        marker:nil
+                                                                                        shared:shared
+                                                                                         until:nil];
                 if (sharingAccount)
                     [accountRequest setRequestUserFromDefaultTo:sharingAccount withPithos:pithos];
                 else if (!forcedRefresh)
@@ -230,11 +230,11 @@ static NSImage *sharedIcon = nil;
         if (retries > 0) {
             ASIPithosAccountRequest *newAccountRequest = (ASIPithosAccountRequest *)[PithosUtilities copyRequest:accountRequest];
             [(NSMutableDictionary *)(newAccountRequest.userInfo)setObject:[NSNumber numberWithUnsignedInteger:(--retries)] forKey:@"retries"];
-            accountRequest = newAccountRequest;
+            self.accountRequest = newAccountRequest;
             [[PithosUtilities prepareRequest:accountRequest priority:[[accountRequest.userInfo objectForKey:@"priority"] integerValue]] startAsynchronous];
         } else {
             newChildren = nil;
-            accountRequest = nil;
+            self.accountRequest = nil;
             forcedRefresh = NO;
             @synchronized(self) {
                 freshness = PithosNodeStateRefreshNeeded;
@@ -290,7 +290,7 @@ static NSImage *sharedIcon = nil;
                     }]] makeObjectsPerformSelector:@selector(pithosNodeWillBeRemoved)];
                 }
                 // Else cache was used and all results were fetched during this request, so existing children can be reused
-                accountRequest = nil;
+                self.accountRequest = nil;
                 forcedRefresh = NO;
                 @synchronized(self) {
                     freshness = PithosNodeStateRefreshFinished;
@@ -298,11 +298,11 @@ static NSImage *sharedIcon = nil;
                 [self postChildrenUpdatedNotificationName];
             } else {
                 // Do an additional request to fetch more objects
-                accountRequest = [ASIPithosAccountRequest listContainersRequestWithPithos:pithos 
-                                                                                     limit:0 
-                                                                                    marker:[[someContainers lastObject] name] 
-                                                                                    shared:shared 
-                                                                                     until:nil];
+                self.accountRequest = [ASIPithosAccountRequest listContainersRequestWithPithos:pithos
+                                                                                         limit:0
+                                                                                        marker:[[someContainers lastObject] name]
+                                                                                        shared:shared
+                                                                                         until:nil];
                 if (sharingAccount)
                     [accountRequest setRequestUserFromDefaultTo:sharingAccount withPithos:pithos];
                 else if (!forcedRefresh)
@@ -321,7 +321,7 @@ static NSImage *sharedIcon = nil;
             }
         } else if (accountRequest.responseStatusCode == 304) {
             // Account is not modified, so existing children can be reused
-            accountRequest = nil;
+            self.accountRequest = nil;
             forcedRefresh = NO;
             @synchronized(self) {
                 freshness = PithosNodeStateRefreshFinished;
@@ -340,13 +340,13 @@ static NSImage *sharedIcon = nil;
         
         if ([request isEqualTo:applyMetadataAccountRequest]) {
             @synchronized(self) {
-                applyMetadataAccountRequest = nil;
+                self.applyMetadataAccountRequest = nil;
             }
             [self refreshInfo];
         } else if ([request isEqualTo:refreshMetadataAccountRequest]) {
             self.pithosAccount = [refreshMetadataAccountRequest account];
             @synchronized(self) {
-                refreshMetadataAccountRequest = nil;
+                self.refreshMetadataAccountRequest = nil;
             }
         }
     }
@@ -360,11 +360,11 @@ static NSImage *sharedIcon = nil;
             [(NSMutableDictionary *)(newRequest.userInfo)setObject:[NSNumber numberWithUnsignedInteger:(--retries)] forKey:@"retries"];
             if ([request isEqualTo:applyMetadataAccountRequest]) {
                 @synchronized(self) {
-                    applyMetadataAccountRequest = newRequest;
+                    self.applyMetadataAccountRequest = newRequest;
                 }
             } else if ([request isEqualTo:refreshMetadataAccountRequest]) {
                 @synchronized(self) {
-                    refreshMetadataAccountRequest = newRequest;
+                    self.refreshMetadataAccountRequest = newRequest;
                 }
             }
             [[PithosUtilities prepareRequest:newRequest priority:[[newRequest.userInfo objectForKey:@"priority"] integerValue]] startAsynchronous];
@@ -372,12 +372,12 @@ static NSImage *sharedIcon = nil;
             if ([request isEqualTo:applyMetadataAccountRequest]) {
                 [PithosUtilities httpRequestErrorAlertWithRequest:applyMetadataAccountRequest];
                 @synchronized(self) {
-                    applyMetadataAccountRequest = nil;
+                    self.applyMetadataAccountRequest = nil;
                 }
             } else if ([request isEqualTo:refreshMetadataAccountRequest]) {
                 [PithosUtilities httpRequestErrorAlertWithRequest:refreshMetadataAccountRequest];
                 @synchronized(self) {
-                    refreshMetadataAccountRequest = nil;
+                    self.refreshMetadataAccountRequest = nil;
                 }
             }
         }
@@ -484,10 +484,10 @@ static NSImage *sharedIcon = nil;
                 [groups setObject:[NSArray arrayWithObject:@""] forKey:@"group"];
             }
             
-            applyMetadataAccountRequest = [ASIPithosAccountRequest updateAccountMetadataRequestWithPithos:pithos
-                                                                                                    groups:groups 
-                                                                                                  metadata:pithosAccount.metadata 
-                                                                                                    update:NO];
+            self.applyMetadataAccountRequest = [ASIPithosAccountRequest updateAccountMetadataRequestWithPithos:pithos
+                                                                                                        groups:groups
+                                                                                                      metadata:pithosAccount.metadata
+                                                                                                        update:NO];
             applyMetadataAccountRequest.delegate = self;
             applyMetadataAccountRequest.didFinishSelector = @selector(performRequestFinishedDelegateInBackground:);
             applyMetadataAccountRequest.didFailSelector = @selector(performRequestFailedDelegateInBackground:);
@@ -505,7 +505,7 @@ static NSImage *sharedIcon = nil;
 - (void)refreshInfo {
     @synchronized(self) {
         if (refreshMetadataAccountRequest == nil) {
-            refreshMetadataAccountRequest = [ASIPithosAccountRequest accountMetadataRequestWithPithos:pithos];
+            self.refreshMetadataAccountRequest = [ASIPithosAccountRequest accountMetadataRequestWithPithos:pithos];
             refreshMetadataAccountRequest.delegate = self;
             refreshMetadataAccountRequest.didFinishSelector = @selector(performRequestFinishedDelegateInBackground:);
             refreshMetadataAccountRequest.didFailSelector = @selector(performRequestFailedDelegateInBackground:);