public void onTransferFinish(MegaSDK api, MTransfer transfer, MError e) { if (_timer != null) { _timer.Dispose(); } if (e.getErrorCode() == MErrorType.API_EGOINGOVERQUOTA || e.getErrorCode() == MErrorType.API_EOVERQUOTA) { //Stop the Camera Upload Service LogService.Log(MLogLevel.LOG_LEVEL_INFO, "Storage quota exceeded ({0}) - Disabling CAMERA UPLOADS service", e.getErrorCode().ToString()); OnStorageQuotaExceeded(EventArgs.Empty); return; } try { if (e.getErrorCode() == MErrorType.API_OK) { ulong mtime = api.getNodeByHandle(transfer.getNodeHandle()).getModificationTime(); DateTime pictureDate = new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Convert.ToDouble(mtime)); SettingsService.SaveSettingToFile <DateTime>("LastUploadDate", pictureDate); // If file upload succeeded. Clear the error information for a clean sheet. ErrorProcessingService.Clear(); } else { // An error occured. Log and process it. switch (e.getErrorCode()) { case MErrorType.API_EFAILED: case MErrorType.API_EEXIST: case MErrorType.API_EARGS: case MErrorType.API_EREAD: case MErrorType.API_EWRITE: { LogService.Log(MLogLevel.LOG_LEVEL_ERROR, e.getErrorString()); ErrorProcessingService.ProcessFileError(transfer.getFileName()); break; } } } } catch (Exception) { // Setting could not be saved. Just continue the run } finally { // Start a new upload action ScheduledAgent.Upload(); } }
public async void onTransferFinish(MegaSDK api, MTransfer transfer, MError e) { _timer?.Dispose(); //Storage overquota error if (e.getErrorCode() == MErrorType.API_EGOINGOVERQUOTA || e.getErrorCode() == MErrorType.API_EOVERQUOTA) { //Stop the Camera Upload Service LogService.Log(MLogLevel.LOG_LEVEL_INFO, string.Format("Storage quota exceeded ({0}) - Disabling CAMERA UPLOADS service", e.getErrorCode().ToString())); OnStorageQuotaExceeded(EventArgs.Empty); _tcs.TrySetResult(e.getErrorString()); return; } try { if (e.getErrorCode() == MErrorType.API_OK) { ulong mtime = api.getNodeByHandle(transfer.getNodeHandle()).getModificationTime(); var fileDate = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddSeconds(Convert.ToDouble(mtime)); await SettingsService.SaveSettingToFileAsync(_dateSetting, fileDate.ToLocalTime()); _tcs.TrySetResult(null); } else { // An error occured. Log and process it. switch (e.getErrorCode()) { case MErrorType.API_EFAILED: case MErrorType.API_EEXIST: case MErrorType.API_EARGS: case MErrorType.API_EREAD: case MErrorType.API_EWRITE: { // Error will be loggend by caller _tcs.TrySetResult(e.getErrorString()); break; } } _tcs.TrySetResult(null); } } catch (Exception ex) { _tcs.TrySetResult(ex.Message); // Setting could not be saved. Just continue the run } }
public void onTransferStart(MegaSDK api, MTransfer transfer) { TransferObjectModel megaTransfer = null; if (transfer.getType() == MTransferType.TYPE_DOWNLOAD) { // If is a public node MNode node = transfer.getPublicMegaNode(); if (node == null) // If not { node = api.getNodeByHandle(transfer.getNodeHandle()); } if (node != null) { megaTransfer = new TransferObjectModel(api, NodeService.CreateNew(api, App.AppInformation, node, ContainerType.CloudDrive), TransferType.Download, transfer.getPath()); } } else { megaTransfer = new TransferObjectModel(api, App.MainPageViewModel.CloudDrive.FolderRootNode, TransferType.Upload, transfer.getPath()); } if (megaTransfer != null) { Deployment.Current.Dispatcher.BeginInvoke(() => { TransfersService.GetTransferAppData(transfer, megaTransfer); megaTransfer.Transfer = transfer; megaTransfer.Status = TransferStatus.Queued; megaTransfer.CancelButtonState = true; megaTransfer.TransferButtonIcon = new Uri("/Assets/Images/cancel transfers.Screen-WXGA.png", UriKind.Relative); megaTransfer.TransferButtonForegroundColor = new SolidColorBrush(Colors.White); megaTransfer.IsBusy = true; megaTransfer.TotalBytes = transfer.getTotalBytes(); megaTransfer.TransferedBytes = transfer.getTransferredBytes(); megaTransfer.TransferSpeed = transfer.getSpeed().ToStringAndSuffixPerSecond(); App.MegaTransfers.Add(megaTransfer); Transfers.Add(megaTransfer); }); } }
/// <summary> /// Create a <see cref="TransferObjectModel"/> from a <see cref="MTransfer"/>. /// </summary> /// <param name="transfer"></param> /// <returns>The new <see cref="TransferObjectModel"/></returns> public static TransferObjectModel CreateTransferObjectModel(MTransfer transfer) { if (transfer == null) { return(null); } try { TransferObjectModel megaTransfer = null; switch (transfer.getType()) { case MTransferType.TYPE_DOWNLOAD: MNode node = transfer.getPublicMegaNode() ?? // If is a public node SdkService.MegaSdk.getNodeByHandle(transfer.getNodeHandle()); // If not if (node == null) { return(null); } megaTransfer = new TransferObjectModel(SdkService.MegaSdk, NodeService.CreateNew(SdkService.MegaSdk, App.AppInformation, node, ContainerType.CloudDrive), MTransferType.TYPE_DOWNLOAD, transfer.getPath()); break; case MTransferType.TYPE_UPLOAD: var parentNode = SdkService.MegaSdk.getNodeByHandle(transfer.getParentHandle()); if (parentNode == null) { return(null); } megaTransfer = new TransferObjectModel(SdkService.MegaSdk, NodeService.CreateNew(SdkService.MegaSdk, App.AppInformation, parentNode, ContainerType.CloudDrive), MTransferType.TYPE_UPLOAD, transfer.getPath()); break; default: throw new ArgumentOutOfRangeException(); } if (megaTransfer != null) { GetTransferAppData(transfer, megaTransfer); megaTransfer.Transfer = transfer; megaTransfer.TransferState = transfer.getState(); megaTransfer.TransferPriority = transfer.getPriority(); megaTransfer.IsBusy = false; megaTransfer.TotalBytes = transfer.getTotalBytes(); megaTransfer.TransferedBytes = transfer.getTransferredBytes(); megaTransfer.TransferSpeed = string.Empty; megaTransfer.TransferMeanSpeed = 0; megaTransfer.TransferState = !SdkService.MegaSdk.areTransfersPaused((int)transfer.getType()) ? MTransferState.STATE_QUEUED : MTransferState.STATE_PAUSED; } return(megaTransfer); } catch (Exception) { return(null); } }