Skip to content
This repository has been archived by the owner on Jul 26, 2024. It is now read-only.

Commit

Permalink
低性能模式改名为单线程模式;线程池设置现在不再需要重启生效;将 ServerInterface 分离出非 GUI 接口和 GUI 接口;将…
Browse files Browse the repository at this point in the history
… AbstractServer 分离出非 GUI 类和 GUI 类。
  • Loading branch information
KasumiNova committed Nov 6, 2022
1 parent a629cfc commit 5a3522a
Show file tree
Hide file tree
Showing 13 changed files with 341 additions and 342 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -155,13 +155,13 @@ private static void init() {
updateSplashProgress(100, "已完成");
MAIN_FRAME.setVisible(true);

loadAutoUpdateFeature();
startUpdateChecker();
}

/**
* 载入自动更新功能
*/
private static void loadAutoUpdateFeature() {
private static void startUpdateChecker() {
//当前是否在检查更新,防止长时间静置未操作弹出多个对话框
AtomicBoolean isCheckingUpdate = new AtomicBoolean(false);
//更新检查线程,每一小时检查一次最新版本
Expand Down Expand Up @@ -231,8 +231,8 @@ private static void loadServerTabbedPaneProperty() {
SERVER_TABBED_PANE.putClientProperty("JTabbedPane.scrollButtonsPlacement", "both");
}

private static void initFileThreadPool() {
if (CONFIG.isLowIOPerformanceMode()) {
public static void initFileThreadPool() {
if (CONFIG.isSingleThreadMode()) {
GLOBAL_FILE_THREAD_POOL.setCorePoolSize(1);
GLOBAL_FILE_THREAD_POOL.setMaximumPoolSize(1);
} else if (CONFIG.getFileThreadPoolSize() > 0) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,10 @@ public class BalloonServerConfig extends Configuration {
@JSONField(ordinal = 5)
private int closeOperation = 0;
/**
* 低性能模式
* 单线程模式
*/
@JSONField(ordinal = 6)
private boolean lowIOPerformanceMode = false;
private boolean singleThreadMode = false;
/**
* 文件线程池大小
*/
Expand Down Expand Up @@ -111,12 +111,12 @@ public BalloonServerConfig setAutoCheckUpdates(boolean autoCheckUpdates) {
return this;
}

public boolean isLowIOPerformanceMode() {
return lowIOPerformanceMode;
public boolean isSingleThreadMode() {
return singleThreadMode;
}

public BalloonServerConfig setLowIOPerformanceMode(boolean lowIOPerformanceMode) {
this.lowIOPerformanceMode = lowIOPerformanceMode;
public BalloonServerConfig setSingleThreadMode(boolean singleThreadMode) {
this.singleThreadMode = singleThreadMode;
return this;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ public static void loadBalloonServerConfigFromFile(String path, BalloonServerCon
.setCloseOperation(config.getCloseOperation())
.setAutoCheckUpdates(config.isAutoCheckUpdates())
.setAutoUpdate(config.isAutoUpdate())
.setLowIOPerformanceMode(config.isLowIOPerformanceMode())
.setSingleThreadMode(config.isSingleThreadMode())
.setFileThreadPoolSize(config.getFileThreadPoolSize());
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import cn.hutool.core.io.IORuntimeException;
import com.formdev.flatlaf.intellijthemes.materialthemeuilite.*;
import github.kasuminova.balloonserver.BalloonServer;
import github.kasuminova.balloonserver.configurations.BalloonServerConfig;
import github.kasuminova.balloonserver.configurations.CloseOperation;
import github.kasuminova.balloonserver.configurations.ConfigurationManager;
Expand Down Expand Up @@ -30,7 +31,7 @@ public class SettingsPanel {
};
private static final JComboBox<CloseOperation> CLOSE_OPERATION_COMBO_BOX = new JComboBox<>(OPERATIONS);
private static final JSpinner FILE_THREAD_POOL_SIZE_SPINNER = new JSpinner();
private static final JCheckBox LOW_IO_PERFORMANCE_MODE = new JCheckBox("低性能模式 (重启生效)");
private static final JCheckBox SINGLE_THREAD_MODE = new JCheckBox("单线程模式");
private static final JCheckBox ENABLE_DEBUG_MODE = new JCheckBox("启用 Debug 模式");
private static final int MAXIMUM_FILE_THREAD_POOL_SIZE = 1024;
public static JPanel createPanel() {
Expand Down Expand Up @@ -70,19 +71,19 @@ public static JPanel createPanel() {
JLabel closeOperationsDesc = new JLabel("此项决定点击 BalloonServer 窗口右上角关闭按钮后程序的操作.");
closeOperationsDesc.setForeground(ModernColors.BLUE);

//低性能模式
JLabel lowIOPerformanceModeDesc0 = new JLabel("此项选中后, 将会限制生成缓存的线程数至单线程, 对于机械盘等低 IO 性能的服务器可能会有性能提升.");
lowIOPerformanceModeDesc0.setForeground(ModernColors.BLUE);
JLabel lowIOPerformanceModeDesc1 = new JLabel("此项会覆盖 \"文件计算线程池大小\" 配置.");
lowIOPerformanceModeDesc1.setForeground(ModernColors.YELLOW);
//单线程模式
JLabel singleThreadModeDesc0 = new JLabel("此项选中后, 将会限制生成缓存的线程数至单线程, 对于机械盘等低 IO 性能的服务器可能会有性能提升.");
singleThreadModeDesc0.setForeground(ModernColors.BLUE);
JLabel singleThreadModeDesc1 = new JLabel("此项会覆盖 \"文件计算线程池大小\" 配置.");
singleThreadModeDesc1.setForeground(ModernColors.YELLOW);

//文件线程池大小
Box fileThreadPoolSizeBox = Box.createHorizontalBox();
SpinnerNumberModel fileThreadPoolSizeSpinnerModel = new SpinnerNumberModel(0, 0, MAXIMUM_FILE_THREAD_POOL_SIZE, 1);
FILE_THREAD_POOL_SIZE_SPINNER.setModel(fileThreadPoolSizeSpinnerModel);
JSpinner.NumberEditor portSpinnerEditor = new JSpinner.NumberEditor(FILE_THREAD_POOL_SIZE_SPINNER, "#");
FILE_THREAD_POOL_SIZE_SPINNER.setEditor(portSpinnerEditor);
fileThreadPoolSizeBox.add(new JLabel("文件计算线程池大小 (重启生效): "));
fileThreadPoolSizeBox.add(new JLabel("文件计算线程池大小: "));
fileThreadPoolSizeBox.add(FILE_THREAD_POOL_SIZE_SPINNER);
JLabel fileThreadPoolSizeDesc0 = new JLabel("此项决定在生成资源缓存时同时计算文件校验码的线程数, 默认为 0, 即为逻辑处理器数量 * 2.");
fileThreadPoolSizeDesc0.setForeground(ModernColors.BLUE);
Expand All @@ -106,9 +107,9 @@ public static JPanel createPanel() {
settingsPanel.add(autoUpdateDesc);
settingsPanel.add(closeOperationBox);
settingsPanel.add(closeOperationsDesc);
settingsPanel.add(LOW_IO_PERFORMANCE_MODE);
settingsPanel.add(lowIOPerformanceModeDesc0);
settingsPanel.add(lowIOPerformanceModeDesc1);
settingsPanel.add(SINGLE_THREAD_MODE);
settingsPanel.add(singleThreadModeDesc0);
settingsPanel.add(singleThreadModeDesc1);
settingsPanel.add(fileThreadPoolSizeBox);
settingsPanel.add(fileThreadPoolSizeDesc0);
settingsPanel.add(fileThreadPoolSizeDesc1);
Expand Down Expand Up @@ -152,7 +153,7 @@ public static void applyConfiguration()
AUTO_CHECK_UPDATES.setSelected(CONFIG.isAutoCheckUpdates());
AUTO_UPDATE.setSelected(CONFIG.isAutoUpdate());
CLOSE_OPERATION_COMBO_BOX.setSelectedIndex(CONFIG.getCloseOperation());
LOW_IO_PERFORMANCE_MODE.setSelected(CONFIG.isLowIOPerformanceMode());
SINGLE_THREAD_MODE.setSelected(CONFIG.isSingleThreadMode());
FILE_THREAD_POOL_SIZE_SPINNER.setValue(CONFIG.getFileThreadPoolSize());
ENABLE_DEBUG_MODE.setSelected(CONFIG.isDebugMode());
}
Expand All @@ -167,10 +168,13 @@ private static void saveConfiguration()
CONFIG.setAutoCheckUpdates(AUTO_CHECK_UPDATES.isSelected());
CONFIG.setAutoUpdate(AUTO_UPDATE.isSelected());
CONFIG.setCloseOperation(CLOSE_OPERATION_COMBO_BOX.getSelectedIndex());
CONFIG.setLowIOPerformanceMode(LOW_IO_PERFORMANCE_MODE.isSelected());
CONFIG.setSingleThreadMode(SINGLE_THREAD_MODE.isSelected());
CONFIG.setFileThreadPoolSize((int) FILE_THREAD_POOL_SIZE_SPINNER.getValue());
CONFIG.setDebugMode(ENABLE_DEBUG_MODE.isSelected());

//重载文件线程池大小
BalloonServer.initFileThreadPool();

try {
ConfigurationManager.saveConfigurationToFile(CONFIG, "./", "balloonserver");
GLOBAL_LOGGER.info("成功保存主程序配置文件.");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import cn.hutool.core.io.file.FileReader;
import com.alibaba.fastjson2.JSONArray;
import github.kasuminova.balloonserver.BalloonServer;
import github.kasuminova.balloonserver.servers.ServerInterface;
import github.kasuminova.balloonserver.servers.GUIServerInterface;
import github.kasuminova.balloonserver.servers.localserver.IntegratedServerInterface;
import github.kasuminova.balloonserver.servers.remoteserver.RemoteClientInterface;
import github.kasuminova.balloonserver.utils.GUILogger;
Expand All @@ -24,10 +24,10 @@
public class RuleEditorActionListener implements ActionListener {
protected final JList<String> ruleList;
protected final List<String> rules;
protected final ServerInterface serverInterface;
protected final GUIServerInterface serverInterface;
protected final GUILogger logger;

public RuleEditorActionListener(JList<String> ruleList, List<String> rules, ServerInterface serverInterface, GUILogger logger) {
public RuleEditorActionListener(JList<String> ruleList, List<String> rules, GUIServerInterface serverInterface, GUILogger logger) {
this.ruleList = ruleList;
this.rules = rules;
this.serverInterface = serverInterface;
Expand Down
Loading

0 comments on commit 5a3522a

Please sign in to comment.