Просмотр исходного кода

Improvement system verify re upload/download

Marino Faggiana 7 лет назад
Родитель
Сommit
beca98512c

+ 10 - 2
iOSClient/AppDelegate.m

@@ -321,11 +321,19 @@
     NSString *autoUploadPath = [[NCManageDatabase sharedInstance] getAccountAutoUploadPath:_activeUrl];
     if ([autoUploadPath length] > 0)
         [[CCSynchronize sharedSynchronize] synchronizedFolder:autoUploadPath selector:selectorReadFolder];
-
-    // Execute : after 1 sec.
     
+    // Execute : after 1 sec.
     dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
+    
+        // verify Download
+        [[CCNetworking sharedNetworking] verifyDownloadInProgress];
+        if (_activeMain)
+            [[CCNetworking sharedNetworking] verifyDownloadInError:self.activeMain];
         
+        // verify Upload
+        [[CCNetworking sharedNetworking] verifyUploadInProgress];
+        [[CCNetworking sharedNetworking] verifyUploadInError];
+
         if (_activeMain) {
             NSLog(@"[LOG] Request Server Capabilities");
             [_activeMain requestServerCapabilities];

+ 4 - 6
iOSClient/AutoUpload/NCAutoUpload.m

@@ -559,13 +559,11 @@
         }
     }
     
-    // verify Download/Upload 
-    if (counterNewUpload == 0) {
-        
-        [[CCNetworking sharedNetworking] verifyDownloadInProgress];
-        [[CCNetworking sharedNetworking] verifyUploadInProgress];
+    // In background verify Upload in error
+    if ([[UIApplication sharedApplication] applicationState] == UIApplicationStateBackground) {
+        [[CCNetworking sharedNetworking] verifyUploadInError];
     }
-
+    
     // Start Timer
     app.timerProcessAutoUpload = [NSTimer scheduledTimerWithTimeInterval:k_timerProcessAutoUpload target:app selector:@selector(processAutoUpload) userInfo:nil repeats:YES];
 }

+ 3 - 1
iOSClient/Networking/CCNetworking.h

@@ -66,9 +66,11 @@
 - (void)uploadTemplate:(NSString *)fileNamePrint fileNameCrypto:(NSString *)fileNameCrypto serverUrl:(NSString *)serverUrl session:(NSString *)session taskStatus:(NSInteger)taskStatus selector:(NSString *)selector selectorPost:(NSString *)selectorPost errorCode:(NSInteger)errorCode delegate:(id)delegate;
 - (void)uploadFileMetadata:(tableMetadata *)metadata taskStatus:(NSInteger)taskStatus;
 
-// Verify
+// Verify Download/Upload
 - (void)verifyDownloadInProgress;
+- (void)verifyDownloadInError:(id)delegate;
 - (void)verifyUploadInProgress;
+- (void)verifyUploadInError;
 
 @end
 

+ 47 - 58
iOSClient/Networking/CCNetworking.m

@@ -1541,12 +1541,6 @@
 
 - (void)verifyDownloadInProgress
 {
-#ifndef EXTENSION
-        
-    // No in background
-    if ([[UIApplication sharedApplication] applicationState] == UIApplicationStateBackground)
-        return;
-    
     NSArray *dataSourceDownload = [[NCManageDatabase sharedInstance] getTableMetadataDownload];
     NSArray *dataSourceDownloadWWan = [[NCManageDatabase sharedInstance] getTableMetadataDownloadWWan];
     
@@ -1606,14 +1600,15 @@
             });
         }];
     }
-    
-    /* Verify Download In Error */
-    
+}
+
+- (void)verifyDownloadInError:(id)delegate
+{
     NSMutableSet *serversUrl = [NSMutableSet new];
     
     NSArray *metadatas = [[NCManageDatabase sharedInstance] getMetadatasWithPredicate:[NSPredicate predicateWithFormat:@"account = %@ AND session CONTAINS 'download' AND (sessionTaskIdentifier = %i OR sessionTaskIdentifierPlist = %i)", _activeAccount, k_taskIdentifierError, k_taskIdentifierError] sorted:nil ascending:NO];
     
-    NSLog(@"[LOG] Verify re download n. %lu", (unsigned long)[metadatas count]);
+    NSLog(@"[LOG] Verify re download in error n. %lu", (unsigned long)[metadatas count]);
     
     for (tableMetadata *metadata in metadatas) {
         
@@ -1621,13 +1616,13 @@
         if (!serverUrl) continue;
         
         if (metadata.sessionTaskIdentifier == k_taskIdentifierError)
-            [self downloadFile:metadata.fileID serverUrl:serverUrl downloadData:YES downloadPlist:NO selector:metadata.sessionSelector selectorPost:nil session:k_download_session taskStatus: k_taskStatusResume delegate:app.activeMain];
-            
+            [self downloadFile:metadata.fileID serverUrl:serverUrl downloadData:YES downloadPlist:NO selector:metadata.sessionSelector selectorPost:nil session:k_download_session taskStatus: k_taskStatusResume delegate:delegate];
+        
         if (metadata.sessionTaskIdentifierPlist == k_taskIdentifierError)
-            [self downloadFile:metadata.fileID serverUrl:serverUrl downloadData:NO downloadPlist:YES selector:metadata.sessionSelector selectorPost:nil session:k_download_session taskStatus: k_taskStatusResume delegate:app.activeMain];
-            
+            [self downloadFile:metadata.fileID serverUrl:serverUrl downloadData:NO downloadPlist:YES selector:metadata.sessionSelector selectorPost:nil session:k_download_session taskStatus: k_taskStatusResume delegate:delegate];
+        
         [serversUrl addObject:serverUrl];
-            
+        
         NSLog(@"[LOG] Re download file : %@ - %@ [%li %li]", metadata.fileName, metadata.fileNamePrint, (long)metadata.sessionTaskIdentifier, (long)metadata.sessionTaskIdentifierPlist);
     }
     
@@ -1636,7 +1631,6 @@
             if ([self.delegate respondsToSelector:@selector(reloadDatasource:)])
                 [self.delegate reloadDatasource:serverUrl];
     });
-#endif
 }
 
 #pragma --------------------------------------------------------------------------------------------
@@ -1645,73 +1639,69 @@
 
 - (void)verifyUploadInProgress
 {
-#ifndef EXTENSION
-    // No in background
-    if ([[UIApplication sharedApplication] applicationState] != UIApplicationStateBackground) {
-
-        NSArray *dataSourceUpload = [[NCManageDatabase sharedInstance] getTableMetadataUpload];
-        NSArray *dataSourceUploadWWan = [[NCManageDatabase sharedInstance] getTableMetadataUploadWWan];
+    NSArray *dataSourceUpload = [[NCManageDatabase sharedInstance] getTableMetadataUpload];
+    NSArray *dataSourceUploadWWan = [[NCManageDatabase sharedInstance] getTableMetadataUploadWWan];
     
-        NSMutableArray *dataSource = [[NSMutableArray alloc] init];
+    NSMutableArray *dataSource = [[NSMutableArray alloc] init];
     
-        [dataSource addObjectsFromArray:dataSourceUpload];
-        [dataSource addObjectsFromArray:dataSourceUploadWWan];
+    [dataSource addObjectsFromArray:dataSourceUpload];
+    [dataSource addObjectsFromArray:dataSourceUploadWWan];
     
-        NSLog(@"[LOG] Verify upload file in progress n. %lu", (unsigned long)[dataSource count]);
+    NSLog(@"[LOG] Verify upload file in progress n. %lu", (unsigned long)[dataSource count]);
     
-        for (tableMetadata *metadata in dataSource) {
+    for (tableMetadata *metadata in dataSource) {
         
-            __block NSString *serverUrl = [[NCManageDatabase sharedInstance] getServerUrl:metadata.directoryID];
-            if (!serverUrl) continue;
+        __block NSString *serverUrl = [[NCManageDatabase sharedInstance] getServerUrl:metadata.directoryID];
+        if (!serverUrl) continue;
         
-            NSURLSession *session = [self getSessionfromSessionDescription:metadata.session];
+        NSURLSession *session = [self getSessionfromSessionDescription:metadata.session];
                 
-            [session getTasksWithCompletionHandler:^(NSArray *dataTasks, NSArray *uploadTasks, NSArray *downloadTasks) {
+        [session getTasksWithCompletionHandler:^(NSArray *dataTasks, NSArray *uploadTasks, NSArray *downloadTasks) {
             
-                BOOL findTask = NO;
-                BOOL findTaskPlist = NO;
+            BOOL findTask = NO;
+            BOOL findTaskPlist = NO;
             
-                // cerchiamo la corrispondenza dei task
-                for (NSURLSessionUploadTask *uploadTask in uploadTasks) {
+            // cerchiamo la corrispondenza dei task
+            for (NSURLSessionUploadTask *uploadTask in uploadTasks) {
                 
-                    NSLog(@"[LOG] Find metadata Tasks [%li %li] = [%lu] state : %lu", (long)metadata.sessionTaskIdentifier, (long)metadata.sessionTaskIdentifierPlist , (unsigned long)uploadTask.taskIdentifier, (unsigned long)[uploadTask state]);
+                NSLog(@"[LOG] Find metadata Tasks [%li %li] = [%lu] state : %lu", (long)metadata.sessionTaskIdentifier, (long)metadata.sessionTaskIdentifierPlist , (unsigned long)uploadTask.taskIdentifier, (unsigned long)[uploadTask state]);
                 
-                    if (metadata.sessionTaskIdentifier == uploadTask.taskIdentifier) findTask = YES;
-                    if (metadata.sessionTaskIdentifierPlist == uploadTask.taskIdentifier) findTaskPlist = YES;
+                if (metadata.sessionTaskIdentifier == uploadTask.taskIdentifier) findTask = YES;
+                if (metadata.sessionTaskIdentifierPlist == uploadTask.taskIdentifier) findTaskPlist = YES;
                 
-                    if (findTask == YES || findTaskPlist == YES) break;
-                }
+                if (findTask == YES || findTaskPlist == YES) break;
+            }
             
-                // se non c'è (ci sono) il relativo uploadTask.taskIdentifier allora chiediamolo
-                if ((metadata.cryptated == YES && findTask == NO && findTaskPlist == NO) || (metadata.cryptated == NO && findTask == NO)) {
+            // se non c'è (ci sono) il relativo uploadTask.taskIdentifier allora chiediamolo
+            if ((metadata.cryptated == YES && findTask == NO && findTaskPlist == NO) || (metadata.cryptated == NO && findTask == NO)) {
                 
-                    NSLog(@"[LOG] Call ReadFileVerifyUpload because this file %@ (criptated %i) is in progress but there is no task : [%li %li]", metadata.fileNamePrint, metadata.cryptated, (long)metadata.sessionTaskIdentifier, (long)metadata.sessionTaskIdentifierPlist);
+                NSLog(@"[LOG] Call ReadFileVerifyUpload because this file %@ (criptated %i) is in progress but there is no task : [%li %li]", metadata.fileNamePrint, metadata.cryptated, (long)metadata.sessionTaskIdentifier, (long)metadata.sessionTaskIdentifierPlist);
                 
-                    if (metadata.sessionTaskIdentifier >= 0) [self readFileVerifyUpload:metadata.fileNameData fileNamePrint:metadata.fileNamePrint serverUrl:serverUrl];
-                    if (metadata.sessionTaskIdentifierPlist >= 0) [self readFileVerifyUpload:metadata.fileName fileNamePrint:metadata.fileNamePrint serverUrl:serverUrl];
-                }
-            }];
+                if (metadata.sessionTaskIdentifier >= 0) [self readFileVerifyUpload:metadata.fileNameData fileNamePrint:metadata.fileNamePrint serverUrl:serverUrl];
+                if (metadata.sessionTaskIdentifierPlist >= 0) [self readFileVerifyUpload:metadata.fileName fileNamePrint:metadata.fileNamePrint serverUrl:serverUrl];
+            }
+        }];
         
-            // Notification change session
-            NSArray *object = [[NSArray alloc] initWithObjects:session, metadata, nil];
-            [[NSNotificationCenter defaultCenter] postNotificationOnMainThreadName:k_networkingSessionNotification object:object];
-        }
+        // Notification change session
+        NSArray *object = [[NSArray alloc] initWithObjects:session, metadata, nil];
+        [[NSNotificationCenter defaultCenter] postNotificationOnMainThreadName:k_networkingSessionNotification object:object];
     }
+}
 
-    /* Verify Upload In Error */
-    
+- (void)verifyUploadInError
+{
     NSMutableSet *directoryIDs = [NSMutableSet new];
     
     NSArray *metadatas = [[NCManageDatabase sharedInstance] getMetadatasWithPredicate:[NSPredicate predicateWithFormat:@"account = %@ AND session CONTAINS 'upload' AND (sessionTaskIdentifier = %i OR sessionTaskIdentifierPlist = %i OR sessionTaskIdentifier = %i OR sessionTaskIdentifierPlist = %i)", _activeAccount, k_taskIdentifierError, k_taskIdentifierError, k_taskIdentifierWaitStart, k_taskIdentifierWaitStart] sorted:nil ascending:NO];
     
-    NSLog(@"[LOG] Verify re upload n. %lu", (unsigned long)[metadatas count]);
+    NSLog(@"[LOG] Verify re upload in error n. %lu", (unsigned long)[metadatas count]);
     
     for (tableMetadata *metadata in metadatas) {
-                
+        
         [self uploadFileMetadata:metadata taskStatus: k_taskStatusResume];
-            
+        
         [directoryIDs addObject:metadata.directoryID];
-            
+        
         NSLog(@"[LOG] Re upload file : %@", metadata.fileName);
     }
     
@@ -1720,7 +1710,6 @@
             if ([self.delegate respondsToSelector:@selector(reloadDatasource:)])
                 [self.delegate reloadDatasource:[[NCManageDatabase sharedInstance] getServerUrl:directoryID]];
     });
-#endif
 }
 
 - (void)readFileVerifyUpload:(NSString *)fileName fileNamePrint:(NSString *)fileNamePrint serverUrl:(NSString *)serverUrl