private void RaiseServerSourceRestoreEvent(ServerSourceRestoreEvent e) { if (OnServerSourceRestore == null) { return; } try { OnServerSourceRestore(this, e); } catch (Exception ex) { _logger.Warn("Error occurred while raising ServerSourceRestoreEvent.", ex, _loadBalancerContext.AdditionalInfo); } }
public List <LoadBalancerRoute> Restore() { lock (this) { FileStream fileStream = null; try { string dataFolder = GetDataFolder(); string fileName = GetBackupFileName(dataFolder); if (string.IsNullOrWhiteSpace(fileName)) { _logger.Info("Back up file name is null or empty! Backup canceled.", _loadBalancerContext.AdditionalInfo); return(new List <LoadBalancerRoute>()); } if (!File.Exists(fileName)) { _logger.Info("Back up file(" + fileName + ") is not exist! Restore canceled.", _loadBalancerContext.AdditionalInfo); return(new List <LoadBalancerRoute>()); } fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); var routes = (List <LoadBalancerRoute>)_serializer.ReadObject(fileStream); routes = routes.FilterInvalidEntities(_logger, _loadBalancerContext.AdditionalInfo); ServerSourceRestoreEvent e = new ServerSourceRestoreEvent(routes); RaiseServerSourceRestoreEvent(e); return(e.Routes); } catch (Exception ex) { _logger.Info("Error occurred while restoring server source data", ex, _loadBalancerContext.AdditionalInfo); return(new List <LoadBalancerRoute>()); } finally { if (fileStream != null) { fileStream.Close(); } } } }