Minor refactoring / code improvements

feat/data-edit-commands
William 2 years ago
parent ded89ad343
commit 2017ecc20f

@ -14,6 +14,7 @@ dependencies {
compileOnly 'de.themoep:minedown-adventure:1.7.1-SNAPSHOT'
compileOnly 'dev.dejvokep:boosted-yaml:1.3'
compileOnly 'com.zaxxer:HikariCP:5.0.1'
compileOnly 'redis.clients:jedis:' + jedis_version
compileOnly 'net.william278:DesertWell:1.1'
compileOnly 'net.william278:Annotaml:2.0'
compileOnly 'net.william278:AdvancementAPI:97a9583413'

@ -134,7 +134,7 @@ public class BukkitHuskSync extends JavaPlugin implements HuskSync {
// Prepare redis connection
this.redisManager = new RedisManager(this);
getLoggingAdapter().log(Level.INFO, "Attempting to establish connection to the Redis server...");
initialized.set(this.redisManager.initialize().join());
initialized.set(this.redisManager.initialize());
if (initialized.get()) {
getLoggingAdapter().log(Level.INFO, "Successfully established a connection to the Redis server");
} else {

@ -19,7 +19,7 @@ import java.util.concurrent.CompletableFuture;
/**
* Manages the connection to the Redis server, handling the caching of user data
*/
public class RedisManager {
public class RedisManager extends JedisPubSub {
protected static final String KEY_NAMESPACE = "husksync:";
protected static String clusterId = "";
@ -53,8 +53,7 @@ public class RedisManager {
*
* @return a future returning void when complete
*/
public CompletableFuture<Boolean> initialize() {
return CompletableFuture.supplyAsync(() -> {
public boolean initialize() {
if (redisPassword.isBlank()) {
jedisPool = new JedisPool(jedisPoolConfig, redisHost, redisPort, 0, redisUseSsl);
} else {
@ -67,7 +66,6 @@ public class RedisManager {
}
CompletableFuture.runAsync(this::subscribe);
return true;
});
}
private void subscribe() {
@ -75,11 +73,19 @@ public class RedisManager {
new Jedis(redisHost, redisPort, DefaultJedisClientConfig.builder()
.password(redisPassword).timeoutMillis(0).ssl(redisUseSsl).build())) {
subscriber.connect();
subscriber.subscribe(new JedisPubSub() {
subscriber.subscribe(this, Arrays.stream(RedisMessageType.values())
.map(RedisMessageType::getMessageChannel)
.toArray(String[]::new));
}
}
@Override
public void onMessage(@NotNull String channel, @NotNull String message) {
RedisMessageType.getTypeFromChannel(channel).ifPresent(messageType -> {
if (messageType == RedisMessageType.UPDATE_USER_DATA) {
final RedisMessageType messageType = RedisMessageType.getTypeFromChannel(channel).orElse(null);
if (messageType != RedisMessageType.UPDATE_USER_DATA) {
return;
}
final RedisMessage redisMessage = RedisMessage.fromJson(message);
plugin.getOnlineUser(redisMessage.targetUserUuid).ifPresent(user -> {
final UserData userData = plugin.getDataAdapter().fromBytes(redisMessage.data);
@ -103,11 +109,6 @@ public class RedisManager {
});
});
}
});
}
}, Arrays.stream(RedisMessageType.values()).map(RedisMessageType::getMessageChannel).toArray(String[]::new));
}
}
protected void sendMessage(@NotNull String channel, @NotNull String message) {
try (Jedis jedis = jedisPool.getResource()) {

Loading…
Cancel
Save