コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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();
                    }
                }
            }
        }