Add a config option for specifying kcp connection timeout

This commit is contained in:
Melledy
2024-03-24 21:28:21 -07:00
parent bb4342560a
commit 2b5180a651
3 changed files with 15 additions and 2 deletions

View File

@@ -102,10 +102,15 @@ public class Config {
public String name = "Lunar Core";
public String description = "A LunarCore server";
public int kcpInterval = 40;
public Integer kcpTimeout = 30;
public GameServerConfig(int port) {
super(port);
}
public int getKcpTimeout() {
return kcpTimeout.intValue();
}
}
@Getter
@@ -197,4 +202,10 @@ public class Config {
public String ifixUrl = null;
}
public void validate() {
if (this.gameServer.kcpTimeout == null) {
this.gameServer.kcpTimeout = 30;
}
}
}

View File

@@ -190,6 +190,8 @@ public class LunarCore {
// Sanity check
if (LunarCore.getConfig() == null) {
LunarCore.config = new Config();
} else {
LunarCore.getConfig().validate();
}
// Save config

View File

@@ -152,11 +152,11 @@ public class GameServer extends KcpServer {
public void start() {
// Setup config and init server
ChannelConfig channelConfig = new ChannelConfig();
channelConfig.nodelay(true, this.getServerConfig().getKcpInterval(), 2, true);
channelConfig.nodelay(true, getServerConfig().getKcpInterval(), 2, true);
channelConfig.setMtu(1400);
channelConfig.setSndwnd(256);
channelConfig.setRcvwnd(256);
channelConfig.setTimeoutMillis(30 * 1000); // 30s
channelConfig.setTimeoutMillis(getServerConfig().getKcpTimeout() * 1000);
channelConfig.setUseConvChannel(true);
channelConfig.setAckNoDelay(true);