refactor: 将 lettuce 转至 HamsterCore 里
This commit is contained in:
@@ -1,14 +1,10 @@
|
||||
@file:Suppress("VulnerableLibrariesLocal", "GradlePackageVersionRange", "GradlePackageUpdate")
|
||||
|
||||
dependencies {
|
||||
compileOnly("cn.hamster3.mc.plugin:core-common:+")
|
||||
compileOnly("cn.hamster3.mc.plugin:core-common:1.2.0")
|
||||
|
||||
compileOnly("com.google.code.gson:gson:2.8.0")
|
||||
compileOnly("com.google.guava:guava:31.0-jre")
|
||||
|
||||
implementation("io.lettuce:lettuce-core:+") {
|
||||
exclude(group = "io.netty")
|
||||
}
|
||||
}
|
||||
|
||||
tasks {
|
||||
|
@@ -15,11 +15,10 @@ import cn.hamster3.mc.plugin.ball.common.listener.BallDebugListener;
|
||||
import cn.hamster3.mc.plugin.ball.common.listener.BallRedisListener;
|
||||
import cn.hamster3.mc.plugin.core.common.api.CoreAPI;
|
||||
import cn.hamster3.mc.plugin.core.common.data.DisplayMessage;
|
||||
import cn.hamster3.mc.plugin.core.lib.io.lettuce.core.pubsub.StatefulRedisPubSubConnection;
|
||||
import cn.hamster3.mc.plugin.core.lib.net.kyori.adventure.text.Component;
|
||||
import com.google.common.eventbus.AsyncEventBus;
|
||||
import com.google.common.eventbus.EventBus;
|
||||
import io.lettuce.core.RedisClient;
|
||||
import io.lettuce.core.pubsub.StatefulRedisPubSubConnection;
|
||||
import lombok.Getter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -55,14 +54,14 @@ public abstract class BallAPI {
|
||||
@NotNull
|
||||
private final Map<UUID, BallPlayerInfo> allPlayerInfo;
|
||||
@NotNull
|
||||
private final StatefulRedisPubSubConnection<String, BallMessage> subConnection;
|
||||
private final StatefulRedisPubSubConnection<String, BallMessage> redisPub;
|
||||
@NotNull
|
||||
private final StatefulRedisPubSubConnection<String, BallMessage> pubConnection;
|
||||
private final StatefulRedisPubSubConnection<String, BallMessage> redisSub;
|
||||
|
||||
public BallAPI(@NotNull BallConfig ballConfig) {
|
||||
this.ballConfig = ballConfig;
|
||||
subConnection = ballConfig.getRedisClient().connectPubSub(BallMessage.CODEC);
|
||||
pubConnection = ballConfig.getRedisClient().connectPubSub(BallMessage.CODEC);
|
||||
redisPub = CoreAPI.getInstance().getRedisClient().connectPubSub(BallMessage.CODEC);
|
||||
redisSub = CoreAPI.getInstance().getRedisClient().connectPubSub(BallMessage.CODEC);
|
||||
allServerInfo = new ConcurrentHashMap<>();
|
||||
allPlayerInfo = new ConcurrentHashMap<>();
|
||||
eventBus = new AsyncEventBus("HamsterBall - EventBus", CoreAPI.getInstance().getExecutorService());
|
||||
@@ -139,8 +138,8 @@ public abstract class BallAPI {
|
||||
}
|
||||
}
|
||||
}
|
||||
subConnection.addListener(BallRedisListener.INSTANCE);
|
||||
subConnection.sync().subscribe(BALL_CHANNEL);
|
||||
redisPub.addListener(BallRedisListener.INSTANCE);
|
||||
redisPub.sync().subscribe(BALL_CHANNEL);
|
||||
}
|
||||
|
||||
protected void disable() throws SQLException, InterruptedException {
|
||||
@@ -163,9 +162,6 @@ public abstract class BallAPI {
|
||||
statement.executeUpdate();
|
||||
}
|
||||
}
|
||||
getLogger().info("正在关闭 redission");
|
||||
ballConfig.getRedisClient().close();
|
||||
getLogger().info("已关闭 redission");
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -451,11 +447,11 @@ public abstract class BallAPI {
|
||||
channel = ballConfig.getChannelPrefix() + channel;
|
||||
}
|
||||
if (block) {
|
||||
pubConnection.sync().publish(channel, message);
|
||||
redisSub.sync().publish(channel, message);
|
||||
eventBus.post(new MessageSentEvent(channel, message));
|
||||
} else {
|
||||
@NotNull String finalChannel = channel;
|
||||
pubConnection.async().publish(channel, message).whenComplete((aLong, throwable) -> {
|
||||
redisSub.async().publish(channel, message).whenComplete((aLong, throwable) -> {
|
||||
if (throwable != null) {
|
||||
return;
|
||||
}
|
||||
@@ -468,22 +464,22 @@ public abstract class BallAPI {
|
||||
for (int i = 0; i < channel.length; i++) {
|
||||
channel[i] = ballConfig.getChannelPrefix() + channel[i];
|
||||
}
|
||||
subConnection.sync().subscribe(channel);
|
||||
redisPub.sync().subscribe(channel);
|
||||
}
|
||||
|
||||
public void subscribePatterns(@NotNull String patterns) {
|
||||
subConnection.sync().psubscribe(patterns);
|
||||
redisPub.sync().psubscribe(patterns);
|
||||
}
|
||||
|
||||
public void unsubscribe(@NotNull String... channel) {
|
||||
for (int i = 0; i < channel.length; i++) {
|
||||
channel[i] = ballConfig.getChannelPrefix() + channel[i];
|
||||
}
|
||||
subConnection.sync().unsubscribe(channel);
|
||||
redisPub.sync().unsubscribe(channel);
|
||||
}
|
||||
|
||||
public void unsubscribePatterns(@NotNull String patterns) {
|
||||
subConnection.sync().punsubscribe(patterns);
|
||||
redisPub.sync().punsubscribe(patterns);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -642,9 +638,4 @@ public abstract class BallAPI {
|
||||
public DataSource getDatasource() {
|
||||
return ballConfig.getDatasource() == null ? CoreAPI.getInstance().getDataSource() : ballConfig.getDatasource();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public RedisClient getRedisClient() {
|
||||
return ballConfig.getRedisClient();
|
||||
}
|
||||
}
|
||||
|
@@ -1,7 +1,6 @@
|
||||
package cn.hamster3.mc.plugin.ball.common.config;
|
||||
|
||||
import cn.hamster3.mc.plugin.ball.common.entity.BallServerInfo;
|
||||
import io.lettuce.core.RedisClient;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -14,8 +13,6 @@ import javax.sql.DataSource;
|
||||
public class BallConfig {
|
||||
private boolean debug;
|
||||
@NotNull
|
||||
private RedisClient redisClient;
|
||||
@NotNull
|
||||
private String channelPrefix;
|
||||
private boolean gameServerUpdatePlayerInfo;
|
||||
@NotNull
|
||||
|
@@ -3,11 +3,11 @@ package cn.hamster3.mc.plugin.ball.common.data;
|
||||
import cn.hamster3.mc.plugin.ball.common.api.BallAPI;
|
||||
import cn.hamster3.mc.plugin.ball.common.entity.BallServerType;
|
||||
import cn.hamster3.mc.plugin.core.common.api.CoreAPI;
|
||||
import cn.hamster3.mc.plugin.core.lib.io.lettuce.core.codec.RedisCodec;
|
||||
import cn.hamster3.mc.plugin.core.lib.io.lettuce.core.codec.StringCodec;
|
||||
import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import io.lettuce.core.codec.RedisCodec;
|
||||
import io.lettuce.core.codec.StringCodec;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
@@ -9,7 +9,7 @@ import cn.hamster3.mc.plugin.ball.common.event.player.*;
|
||||
import cn.hamster3.mc.plugin.ball.common.event.server.ServerOfflineEvent;
|
||||
import cn.hamster3.mc.plugin.ball.common.event.server.ServerOnlineEvent;
|
||||
import cn.hamster3.mc.plugin.core.common.api.CoreAPI;
|
||||
import io.lettuce.core.pubsub.RedisPubSubListener;
|
||||
import cn.hamster3.mc.plugin.core.lib.io.lettuce.core.pubsub.RedisPubSubListener;
|
||||
|
||||
public class BallRedisListener implements RedisPubSubListener<String, BallMessage> {
|
||||
public static final BallRedisListener INSTANCE = new BallRedisListener();
|
||||
|
Reference in New Issue
Block a user