public void Run() { saveAsBin.Sync(); saveAsBin.Close(); try { File4.Copy(oldUri, newUri); } catch (Exception e) { _enclosing.ReopenOldConfiguration(saveAsBin, oldConfiguration, newUri, e); } var newConfiguration = _enclosing.PointToNewUri(oldConfiguration , newUri); try { var newBin = _enclosing._storage.Open(newConfiguration); saveAsBin.DelegateTo(newBin); _enclosing._binRecords.Remove(oldUri); _enclosing._binRecords.Put(newUri, new BinRecord(newConfiguration , saveAsBin)); } catch (Exception e) { _enclosing.ReopenOldConfiguration(saveAsBin, oldConfiguration, newUri, e); } }
private void ReopenOldConfiguration(SaveAsBin saveAsBin, BinConfiguration config, string newUri, Exception e) { var safeBin = _storage.Open(config); saveAsBin.DelegateTo(safeBin); throw new Db4oException("Copying to " + newUri + " failed. Reopened " + config.Uri (), e); }
private void ReopenOldConfiguration(SaveAsBin saveAsBin, BinConfiguration config, string newUri, Exception e) { var safeBin = _storage.Open(config); saveAsBin.DelegateTo(safeBin); throw new Db4oException("Copying to " + newUri + " failed. Reopened " + config.Uri (), e); }