Browse Source

1.备份逻辑优化(代理断点续传可能返回0的情况)

huangxiaodong 1 year ago
parent
commit
514a778559

+ 13 - 1
创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileManager/backupsFileManager.m

@@ -255,6 +255,10 @@ static backupsFileManager * cur_backupsFileShareInstance = nil;
         return;
     }
         
+    _curPhotosBackupsTaskMod.didUploadBytes = 0;
+    _curPhotosBackupsTaskMod.preDidUploadBytes = 0;
+    _curPhotosBackupsTaskMod.totalBytes = 0;
+    
     PHFetchResult *fetchResult = [PHAsset fetchAssetsWithLocalIdentifiers:@[curLocalIdentifier] options:nil];
     PHAsset *curAsset = fetchResult.firstObject;
     
@@ -353,6 +357,8 @@ static backupsFileManager * cur_backupsFileShareInstance = nil;
     _curPhotosBackupsTaskMod.didUploadBytes = 0;
     _curPhotosBackupsTaskMod.totalBytes = [imageData length];
     [[NSNotificationCenter defaultCenter] postNotificationName:backupsFileBeginNotification object:_curPhotosBackupsTaskMod];
+    [self RefreshDatabaseFun];
+    [self changeBackupsFileStateFun];
 }
 
 - (void)deleteVideoFun
@@ -383,6 +389,8 @@ static backupsFileManager * cur_backupsFileShareInstance = nil;
     
     
     [[NSNotificationCenter defaultCenter] postNotificationName:backupsFileBeginNotification object:_curPhotosBackupsTaskMod];
+    [self RefreshDatabaseFun];
+    [self changeBackupsFileStateFun];
 }
 
 - (void)backupsFileDoneFun
@@ -402,7 +410,11 @@ static backupsFileManager * cur_backupsFileShareInstance = nil;
         return;
     }
     
-    [self beginBackupsFileFun];
+    //延时 进度条视觉效果
+    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
+        [self beginBackupsFileFun];
+    });
+    
     
 }
 

+ 16 - 6
创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileView/backupsFileRecordCell.m

@@ -277,11 +277,22 @@
             NSTimeInterval  timers = _curPhotosBackupsTaskModel.curTimeInterval - _curPhotosBackupsTaskModel.preTimeInterval;
             
             if(timers > 0){
-                //long speed= 1*1024*1024 / timers;
-                long speed= EachPieceSzie / timers;
+                //long speed= EachPieceSzie / timers;
+                
+                long curUploadSize = _curPhotosBackupsTaskModel.didUploadBytes - _curPhotosBackupsTaskModel.preDidUploadBytes;
+                if(curUploadSize <0 || curUploadSize> EachPieceSzie){
+                    curUploadSize = EachPieceSzie;
+                }
+                
+                long speed = curUploadSize/timers;
+                
                 NSString * speedStr = nil;
                 NSInteger speed_k = speed / (1024);
-                if(speed_k < 1024){
+                
+                if(speed == 0){
+                    speedStr = @"--";
+                }
+                else if(speed_k < 1024){
                     speedStr = [[NSString alloc] initWithFormat:@"%ldKB/s",speed_k];
                 }
                 else {
@@ -416,13 +427,12 @@
     }
     
     _fileTimelabel.text = [[NSString alloc] initWithFormat:@"%@%@",NSLocalizedString(@"Estimated_time",nil),timeStr];
-    HLog(@"111: %@  222: %@   333: %ld 444:%f 555:%ld 666:%ld",_fileTimelabel.text,timeStr,speed,estimateTime,_curPhotosBackupsTaskModel.totalBytes,_curPhotosBackupsTaskModel.didUploadBytes);
+    HLog(@"%@ 111: %@  222: %@   333: %ld 444:%f total:%ld didUpload:%ld error:%d",_curPhotosBackupsTaskModel.filename,_fileTimelabel.text,timeStr,speed,estimateTime,_curPhotosBackupsTaskModel.totalBytes,_curPhotosBackupsTaskModel.didUploadBytes,_curPhotosBackupsTaskModel.totalBytes>=_curPhotosBackupsTaskModel.didUploadBytes?0:1);
 }
 
 - (void)handlFileProgresslabelFun
 {
-    if(_curPhotosBackupsTaskModel.totalBytes == 0
-       || _curPhotosBackupsTaskModel.didUploadBytes == 0){
+    if(_curPhotosBackupsTaskModel.totalBytes == 0){
         _fileProgresslabel.text = @"";
         return;
     }

+ 28 - 2
创维盒子/双子星云手机/CloudPlayer/PlayerViewController+backupsFile.m

@@ -310,8 +310,34 @@
                         fileLengthNum = data[@"fileLenth"];
                     }
                     
-                    self.curBackupsPostion = [fileLengthNum longValue];
-                    [self handleBackupsingFun:fileLengthNum];
+                    if (fileLengthNum && fileLengthNum.longLongValue >= self.curPhotosBackupsTaskMod.totalBytes)
+                    {//
+                        HLog(@"备份完成");
+                        NSString *commandStr = [RCCommandHelp uploadOrBackupsDoneBy:self.backupsTaskUid withFileName:self.backupsFileName withType:NO];
+                        [self.commandChannelManager rc_sendData:commandStr];
+                        
+                        [[backupsFileManager shareInstance] backupsFileDoneFun];
+                    }
+                    else{
+                        //异常处理
+                        if([fileLengthNum longValue] - self.curBackupsPostion > EachPieceSzie){
+                            HLog(@"发现上传后返回的长度 出错");
+                            
+                            if(self.curPhotosBackupsTaskMod.curUploadFileType == uploadFileTypeVideo)
+                            {//清除已经取出来的数据  后面会根据fileLengthNum 重新拿数据
+                                [self.backupsCutFileDataArr removeAllObjects];
+                            }
+                            else{
+                                NSInteger curIndex = [fileLengthNum longValue] % EachPieceSzie;
+                                //把当前的上传位置指定已经上传的前一片,后续++ 
+                                self.backupsIndexOfUploadFlie = curIndex -1;
+                            }
+                        }
+                        
+                        self.curBackupsPostion = [fileLengthNum longValue];
+                        [self handleBackupsingFun:fileLengthNum];
+                    }
+                    
                 }
             }
         }