Archiviert
13
0

Pull up the important methods in the asynchronous packet handler.

Dieser Commit ist enthalten in:
Kristian S. Stangeland 2012-09-29 22:18:19 +02:00
Ursprung e86c3d3a6e
Commit b3098bc6ad
4 geänderte Dateien mit 85 neuen und 34 gelöschten Zeilen

Datei anzeigen

@ -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.
* <p>
* 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<Integer> 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<Integer> 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();
}

Datei anzeigen

@ -24,7 +24,6 @@ import org.bukkit.entity.Entity;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin; import org.bukkit.plugin.Plugin;
import com.comphenix.protocol.async.AsyncFilterManager;
import com.comphenix.protocol.events.PacketContainer; import com.comphenix.protocol.events.PacketContainer;
import com.comphenix.protocol.events.PacketListener; import com.comphenix.protocol.events.PacketListener;
import com.comphenix.protocol.injector.PacketConstructor; import com.comphenix.protocol.injector.PacketConstructor;
@ -128,5 +127,5 @@ public interface ProtocolManager extends PacketStream {
* Retrieve the current asyncronous packet manager. * Retrieve the current asyncronous packet manager.
* @return Asyncronous packet manager. * @return Asyncronous packet manager.
*/ */
public AsyncFilterManager getAsyncFilterManager(); public AsynchronousManager getAsyncFilterManager();
} }

Datei anzeigen

@ -6,6 +6,7 @@ import java.util.logging.Logger;
import org.bukkit.plugin.Plugin; import org.bukkit.plugin.Plugin;
import com.comphenix.protocol.AsynchronousManager;
import com.comphenix.protocol.PacketStream; import com.comphenix.protocol.PacketStream;
import com.comphenix.protocol.events.ListeningWhitelist; import com.comphenix.protocol.events.ListeningWhitelist;
import com.comphenix.protocol.events.PacketEvent; import com.comphenix.protocol.events.PacketEvent;
@ -16,7 +17,7 @@ import com.comphenix.protocol.events.PacketListener;
* *
* @author Kristian * @author Kristian
*/ */
public class AsyncFilterManager { public class AsyncFilterManager implements AsynchronousManager {
private PacketProcessingQueue serverProcessingQueue; private PacketProcessingQueue serverProcessingQueue;
private PacketSendingQueue serverQueue; private PacketSendingQueue serverQueue;
@ -44,6 +45,7 @@ public class AsyncFilterManager {
this.mainThread = Thread.currentThread(); this.mainThread = Thread.currentThread();
} }
@Override
public AsyncListenerHandler registerAsyncHandler(Plugin plugin, PacketListener listener) { public AsyncListenerHandler registerAsyncHandler(Plugin plugin, PacketListener listener) {
AsyncListenerHandler handler = new AsyncListenerHandler(plugin, mainThread, this, listener); AsyncListenerHandler handler = new AsyncListenerHandler(plugin, mainThread, this, listener);
@ -60,10 +62,7 @@ public class AsyncFilterManager {
return whitelist != null && whitelist.getWhitelist().size() > 0; return whitelist != null && whitelist.getWhitelist().size() > 0;
} }
/** @Override
* Unregisters and closes the given asynchronous handler.
* @param handler - asynchronous handler.
*/
public void unregisterAsyncHandler(AsyncListenerHandler handler) { public void unregisterAsyncHandler(AsyncListenerHandler handler) {
if (handler == null) if (handler == null)
throw new IllegalArgumentException("listenerToken cannot be NULL"); throw new IllegalArgumentException("listenerToken cannot be NULL");
@ -96,29 +95,17 @@ public class AsyncFilterManager {
getProcessingQueue(syncPacket).enqueue(newEvent); getProcessingQueue(syncPacket).enqueue(newEvent);
} }
/** @Override
* 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 Set<Integer> getSendingFilters() { public Set<Integer> getSendingFilters() {
return serverProcessingQueue.keySet(); return serverProcessingQueue.keySet();
} }
/** @Override
* 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 Set<Integer> getReceivingFilters() { public Set<Integer> getReceivingFilters() {
return clientProcessingQueue.keySet(); return clientProcessingQueue.keySet();
} }
/** @Override
* Determine if a given synchronous packet has asynchronous listeners.
* @param packet - packet to test.
* @return TRUE if it does, FALSE otherwise.
*/
public boolean hasAsynchronousListeners(PacketEvent packet) { public boolean hasAsynchronousListeners(PacketEvent packet) {
return getProcessingQueue(packet).getListener(packet.getPacketID()).size() > 0; return getProcessingQueue(packet).getListener(packet.getPacketID()).size() > 0;
} }
@ -147,25 +134,17 @@ public class AsyncFilterManager {
return new AsyncMarker(packetStream, sendingIndex, sendingDelta, System.currentTimeMillis(), timeoutDelta); return new AsyncMarker(packetStream, sendingIndex, sendingDelta, System.currentTimeMillis(), timeoutDelta);
} }
/** @Override
* Retrieve the default packet stream.
* @return Default packet stream.
*/
public PacketStream getPacketStream() { public PacketStream getPacketStream() {
return packetStream; return packetStream;
} }
/** @Override
* Retrieve the default error logger.
* @return Default logger.
*/
public Logger getLogger() { public Logger getLogger() {
return logger; return logger;
} }
/** @Override
* Remove listeners, close threads and transmit every delayed packet.
*/
public void cleanupAll() { public void cleanupAll() {
serverProcessingQueue.cleanupAll(); serverProcessingQueue.cleanupAll();
serverQueue.cleanupAll(); serverQueue.cleanupAll();

Datei anzeigen

@ -45,6 +45,7 @@ import org.bukkit.event.server.PluginDisableEvent;
import org.bukkit.plugin.Plugin; import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.PluginManager;
import com.comphenix.protocol.AsynchronousManager;
import com.comphenix.protocol.ProtocolManager; import com.comphenix.protocol.ProtocolManager;
import com.comphenix.protocol.async.AsyncFilterManager; import com.comphenix.protocol.async.AsyncFilterManager;
import com.comphenix.protocol.async.AsyncMarker; import com.comphenix.protocol.async.AsyncMarker;
@ -138,7 +139,7 @@ public final class PacketFilterManager implements ProtocolManager {
} }
@Override @Override
public AsyncFilterManager getAsyncFilterManager() { public AsynchronousManager getAsyncFilterManager() {
return asyncFilterManager; return asyncFilterManager;
} }