Pull up the important methods in the asynchronous packet handler.
Dieser Commit ist enthalten in:
Ursprung
e86c3d3a6e
Commit
b3098bc6ad
72
ProtocolLib/src/com/comphenix/protocol/AsynchronousManager.java
Normale Datei
72
ProtocolLib/src/com/comphenix/protocol/AsynchronousManager.java
Normale Datei
@ -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();
|
||||||
|
}
|
@ -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();
|
||||||
}
|
}
|
@ -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();
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
In neuem Issue referenzieren
Einen Benutzer sperren