diff --git a/ProtocolLib/src/com/comphenix/protocol/AsynchronousManager.java b/ProtocolLib/src/com/comphenix/protocol/AsynchronousManager.java
new file mode 100644
index 00000000..e12e73a3
--- /dev/null
+++ b/ProtocolLib/src/com/comphenix/protocol/AsynchronousManager.java
@@ -0,0 +1,72 @@
+package com.comphenix.protocol;
+
+import java.util.Set;
+import java.util.logging.Logger;
+
+import org.bukkit.plugin.Plugin;
+
+import com.comphenix.protocol.async.AsyncListenerHandler;
+import com.comphenix.protocol.events.PacketEvent;
+import com.comphenix.protocol.events.PacketListener;
+
+/**
+ * Represents a asynchronous packet handler.
+ *
+ * @author Kristian
+ */
+public interface AsynchronousManager {
+
+ /**
+ * Registers an asynchronous packet handler.
+ *
+ * To start listening asynchronously, pass the getListenerLoop() runnable to a different thread.
+ * @param plugin - the plugin that is registering the handler.
+ * @param listener - the packet listener that will recieve these asynchronous events.
+ * @return An asynchrouns handler.
+ */
+ public abstract AsyncListenerHandler registerAsyncHandler(Plugin plugin, PacketListener listener);
+
+ /**
+ * Unregisters and closes the given asynchronous handler.
+ * @param handler - asynchronous handler.
+ */
+ public abstract void unregisterAsyncHandler(AsyncListenerHandler handler);
+
+ /**
+ * Retrieves a immutable set containing the ID of the sent server packets that will be
+ * observed by the asynchronous listeners.
+ * @return Every filtered server packet.
+ */
+ public abstract Set getSendingFilters();
+
+ /**
+ * Retrieves a immutable set containing the ID of the recieved client packets that will be
+ * observed by the asynchronous listeners.
+ * @return Every filtered client packet.
+ */
+ public abstract Set getReceivingFilters();
+
+ /**
+ * Determine if a given synchronous packet has asynchronous listeners.
+ * @param packet - packet to test.
+ * @return TRUE if it does, FALSE otherwise.
+ */
+ public abstract boolean hasAsynchronousListeners(PacketEvent packet);
+
+ /**
+ * Retrieve the default packet stream.
+ * @return Default packet stream.
+ */
+ public abstract PacketStream getPacketStream();
+
+ /**
+ * Retrieve the default error logger.
+ * @return Default logger.
+ */
+ public abstract Logger getLogger();
+
+ /**
+ * Remove listeners, close threads and transmit every delayed packet.
+ */
+ public abstract void cleanupAll();
+}
\ No newline at end of file
diff --git a/ProtocolLib/src/com/comphenix/protocol/ProtocolManager.java b/ProtocolLib/src/com/comphenix/protocol/ProtocolManager.java
index f3f25d63..a820ff9a 100644
--- a/ProtocolLib/src/com/comphenix/protocol/ProtocolManager.java
+++ b/ProtocolLib/src/com/comphenix/protocol/ProtocolManager.java
@@ -24,7 +24,6 @@ import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
-import com.comphenix.protocol.async.AsyncFilterManager;
import com.comphenix.protocol.events.PacketContainer;
import com.comphenix.protocol.events.PacketListener;
import com.comphenix.protocol.injector.PacketConstructor;
@@ -128,5 +127,5 @@ public interface ProtocolManager extends PacketStream {
* Retrieve the current asyncronous packet manager.
* @return Asyncronous packet manager.
*/
- public AsyncFilterManager getAsyncFilterManager();
+ public AsynchronousManager getAsyncFilterManager();
}
\ No newline at end of file
diff --git a/ProtocolLib/src/com/comphenix/protocol/async/AsyncFilterManager.java b/ProtocolLib/src/com/comphenix/protocol/async/AsyncFilterManager.java
index a5a7c21a..8fd8319d 100644
--- a/ProtocolLib/src/com/comphenix/protocol/async/AsyncFilterManager.java
+++ b/ProtocolLib/src/com/comphenix/protocol/async/AsyncFilterManager.java
@@ -6,6 +6,7 @@ import java.util.logging.Logger;
import org.bukkit.plugin.Plugin;
+import com.comphenix.protocol.AsynchronousManager;
import com.comphenix.protocol.PacketStream;
import com.comphenix.protocol.events.ListeningWhitelist;
import com.comphenix.protocol.events.PacketEvent;
@@ -16,7 +17,7 @@ import com.comphenix.protocol.events.PacketListener;
*
* @author Kristian
*/
-public class AsyncFilterManager {
+public class AsyncFilterManager implements AsynchronousManager {
private PacketProcessingQueue serverProcessingQueue;
private PacketSendingQueue serverQueue;
@@ -44,6 +45,7 @@ public class AsyncFilterManager {
this.mainThread = Thread.currentThread();
}
+ @Override
public AsyncListenerHandler registerAsyncHandler(Plugin plugin, PacketListener listener) {
AsyncListenerHandler handler = new AsyncListenerHandler(plugin, mainThread, this, listener);
@@ -60,10 +62,7 @@ public class AsyncFilterManager {
return whitelist != null && whitelist.getWhitelist().size() > 0;
}
- /**
- * Unregisters and closes the given asynchronous handler.
- * @param handler - asynchronous handler.
- */
+ @Override
public void unregisterAsyncHandler(AsyncListenerHandler handler) {
if (handler == null)
throw new IllegalArgumentException("listenerToken cannot be NULL");
@@ -96,29 +95,17 @@ public class AsyncFilterManager {
getProcessingQueue(syncPacket).enqueue(newEvent);
}
- /**
- * Retrieves a immutable set containing the ID of the sent server packets that will be
- * observed by the asynchronous listeners.
- * @return Every filtered server packet.
- */
+ @Override
public Set getSendingFilters() {
return serverProcessingQueue.keySet();
}
- /**
- * Retrieves a immutable set containing the ID of the recieved client packets that will be
- * observed by the asynchronous listeners.
- * @return Every filtered client packet.
- */
+ @Override
public Set getReceivingFilters() {
return clientProcessingQueue.keySet();
}
- /**
- * Determine if a given synchronous packet has asynchronous listeners.
- * @param packet - packet to test.
- * @return TRUE if it does, FALSE otherwise.
- */
+ @Override
public boolean hasAsynchronousListeners(PacketEvent packet) {
return getProcessingQueue(packet).getListener(packet.getPacketID()).size() > 0;
}
@@ -147,25 +134,17 @@ public class AsyncFilterManager {
return new AsyncMarker(packetStream, sendingIndex, sendingDelta, System.currentTimeMillis(), timeoutDelta);
}
- /**
- * Retrieve the default packet stream.
- * @return Default packet stream.
- */
+ @Override
public PacketStream getPacketStream() {
return packetStream;
}
- /**
- * Retrieve the default error logger.
- * @return Default logger.
- */
+ @Override
public Logger getLogger() {
return logger;
}
- /**
- * Remove listeners, close threads and transmit every delayed packet.
- */
+ @Override
public void cleanupAll() {
serverProcessingQueue.cleanupAll();
serverQueue.cleanupAll();
diff --git a/ProtocolLib/src/com/comphenix/protocol/injector/PacketFilterManager.java b/ProtocolLib/src/com/comphenix/protocol/injector/PacketFilterManager.java
index 5b138624..5db7c124 100644
--- a/ProtocolLib/src/com/comphenix/protocol/injector/PacketFilterManager.java
+++ b/ProtocolLib/src/com/comphenix/protocol/injector/PacketFilterManager.java
@@ -45,6 +45,7 @@ import org.bukkit.event.server.PluginDisableEvent;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginManager;
+import com.comphenix.protocol.AsynchronousManager;
import com.comphenix.protocol.ProtocolManager;
import com.comphenix.protocol.async.AsyncFilterManager;
import com.comphenix.protocol.async.AsyncMarker;
@@ -138,7 +139,7 @@ public final class PacketFilterManager implements ProtocolManager {
}
@Override
- public AsyncFilterManager getAsyncFilterManager() {
+ public AsynchronousManager getAsyncFilterManager() {
return asyncFilterManager;
}