From a8a75723fb4e31b3b667fb0dbf776ac8671bcf32 Mon Sep 17 00:00:00 2001 From: "mc-core.com" Date: Fri, 25 Jul 2014 19:00:53 -0400 Subject: [PATCH] Added an api method to send messages to a custom PubSub channel. This makes the register channel feature a lot more useful. --- .../minecraft/redisbungee/RedisBungee.java | 15 +++++++++++++++ .../minecraft/redisbungee/RedisBungeeAPI.java | 11 +++++++++++ 2 files changed, 26 insertions(+) diff --git a/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungee.java b/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungee.java index 835104c..82f5eb9 100644 --- a/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungee.java +++ b/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungee.java @@ -12,6 +12,7 @@ import com.google.common.io.ByteStreams; import com.google.gson.Gson; import com.imaginarycode.minecraft.redisbungee.events.PubSubMessageEvent; import com.imaginarycode.minecraft.redisbungee.util.UUIDTranslator; + import lombok.Getter; import lombok.NonNull; import net.md_5.bungee.api.config.ServerInfo; @@ -309,6 +310,20 @@ public final class RedisBungee extends Plugin { pool.returnResource(jedis); } } + + final void sendChannelMessage(String channel, String message) { + Jedis jedis = pool.getResource(); + try { + jedis.publish(channel, message); + } catch (JedisConnectionException e) { + // Redis server has disappeared! + getLogger().log(Level.SEVERE, "Unable to get connection from pool - did your Redis server go away?", e); + pool.returnBrokenResource(jedis); + throw new RuntimeException("Unable to publish channel message", e); + } finally { + pool.returnResource(jedis); + } + } @Override public void onEnable() { diff --git a/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungeeAPI.java b/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungeeAPI.java index 7bb1d12..fa3e67a 100644 --- a/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungeeAPI.java +++ b/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungeeAPI.java @@ -157,6 +157,17 @@ public class RedisBungeeAPI { plugin.sendProxyCommand(proxyId, command); } + /** + * Sends a message to a PubSub channel. The channel has to be subscribed to on this, or another redisbungee instance for {@link com.imaginarycode.minecraft.redisbungee.events.PubSubMessageEvent} to fire. + * + * @param channel The PubSub channel + * @param message the message body to send + * @since 0.3.3 + */ + public final void sendChannelMessage(@NonNull String channel, @NonNull String message) { + plugin.sendChannelMessage(channel, message); + } + /** * Get the current BungeeCord server ID for this server. *