private IEnumerable <KeyValuePair <string, long> > DoDelete(LocalDeleteDatabase db, BackendManager backend, List <IRemoteVolume> deleteableVolumes, System.Data.IDbTransaction transaction) { foreach (var f in db.GetDeletableVolumes(deleteableVolumes, transaction)) { if (!m_options.Dryrun) { backend.Delete(f.Name, f.Size); } else { m_result.AddDryrunMessage(string.Format("Would delete remote file: {0}, size: {1}", f.Name, Library.Utility.Utility.FormatSizeString(f.Size))); } yield return(new KeyValuePair <string, long>(f.Name, f.Size)); } deleteableVolumes.Clear(); }
private IEnumerable <KeyValuePair <string, long> > DoDelete(LocalDeleteDatabase db, BackendManager backend, IEnumerable <IRemoteVolume> deleteableVolumes, ref System.Data.IDbTransaction transaction) { // Mark all volumes as disposable foreach (var f in deleteableVolumes) { db.UpdateRemoteVolume(f.Name, RemoteVolumeState.Deleting, f.Size, f.Hash, transaction); } // Before we commit the current state, make sure the backend has caught up backend.WaitForEmpty(db, transaction); if (!m_options.Dryrun) { transaction.Commit(); transaction = db.BeginTransaction(); } return(PerformDelete(backend, db.GetDeletableVolumes(deleteableVolumes, transaction))); }