public void OnFailure(CustomSynchronizationAgent agent, Models.Synchronization sync, Exception exception) { IsRunning = false; var message = string.Format("Synchronization failed: {0}", exception != null ? exception.Message : "Exception not informed"); Error(message); //StatusInfo.Update(SyncStatusLevel.ERROR, message); sync.DidFail(); _daoSynchronization.Update(sync); OnUpdate(new SyncOperationEvent { Status = SyncOperationStatus.Failed, Message = message }); }
public void OnFinish(CustomSynchronizationAgent agent, Models.Synchronization sync, Exception ex = null) { IsRunning = false; switch (CurrentState) { default: { var message = string.Format("Synchronization failed: {0}", ex.Message); Warn(message); //StatusInfo.Update(SyncStatusLevel.WARN, message); Report.AddErrorMessage(ex.Message); Report.OperationStatus = OperationStatus.FAILED; sync.DidFail(); _daoSynchronization.Update(sync); OnUpdate(new SyncOperationEvent { Status = SyncOperationStatus.Failed, Message = message }); break; } case SyncOperationState.FINISHING: { SyncResults.Statistics stats = agent.Results.Stats; var message = string.Format("Synchronization finished! Stats: {0} files", stats.FileCount); Info(message); //StatusInfo.Update(SyncStatusLevel.OK, message); // TODO(jweyrich): Handle overall failure and cancelation during Sync? sync.DidComplete(); _daoSynchronization.Update(sync); OnUpdate(new SyncOperationEvent { Status = SyncOperationStatus.Finished, Message = message }); /* * switch (agent.Results.OverallStatus) * //switch (sync.Status) * { * default: throw new InvalidOperationException("Unexpected TransferStatus"); * case TransferStatus.CANCELED: * Report.OperationStatus = OperationStatus.CANCELED; * sync.WasCanceled(); * _daoSynchronization.Update(sync); * OnUpdate(new SyncOperationEvent { Status = SyncOperationStatus.Canceled, Message = message }); * break; * case TransferStatus.FAILED: * Report.OperationStatus = OperationStatus.FAILED; * sync.DidFail(); * _daoSynchronization.Update(sync); * OnUpdate(new SyncOperationEvent { Status = SyncOperationStatus.Failed, Message = message }); * break; * case TransferStatus.COMPLETED: * Report.OperationStatus = OperationStatus.COMPLETED; * sync.DidComplete(); * _daoSynchronization.Update(sync); * OnUpdate(new SyncOperationEvent { Status = SyncOperationStatus.Finished, Message = message }); * break; * } */ break; } } }