From: David ‘Bombe’ Roden Date: Tue, 24 Nov 2015 19:31:00 +0000 (+0100) Subject: Add command to remove plugin X-Git-Tag: v0.1.4^2~15 X-Git-Url: https://git.pterodactylus.net/?p=jFCPlib.git;a=commitdiff_plain;h=b79fe9f456ab75770df2610c76f0a2f4a906833f Add command to remove plugin --- diff --git a/src/main/java/net/pterodactylus/fcp/FcpAdapter.java b/src/main/java/net/pterodactylus/fcp/FcpAdapter.java index 063d363..8d7da06 100644 --- a/src/main/java/net/pterodactylus/fcp/FcpAdapter.java +++ b/src/main/java/net/pterodactylus/fcp/FcpAdapter.java @@ -273,6 +273,11 @@ public class FcpAdapter implements FcpListener { * {@inheritDoc} */ @Override + public void receivedPluginRemoved(FcpConnection fcpConnection, PluginRemoved pluginRemoved) { + /* empty. */ + } + + @Override public void receivedFCPPluginReply(FcpConnection fcpConnection, FCPPluginReply fcpPluginReply) { /* empty. */ } diff --git a/src/main/java/net/pterodactylus/fcp/FcpConnection.java b/src/main/java/net/pterodactylus/fcp/FcpConnection.java index 66377a2..d97a541 100644 --- a/src/main/java/net/pterodactylus/fcp/FcpConnection.java +++ b/src/main/java/net/pterodactylus/fcp/FcpConnection.java @@ -297,6 +297,8 @@ public class FcpConnection implements Closeable { } } else if ("PluginInfo".equals(messageName)) { fcpListenerManager.fireReceivedPluginInfo(new PluginInfo(fcpMessage)); + } else if ("PluginRemoved".equals(messageName)) { + fcpListenerManager.fireReceivedPluginRemoved(new PluginRemoved(fcpMessage)); } else if ("NodeData".equals(messageName)) { fcpListenerManager.fireReceivedNodeData(new NodeData(fcpMessage)); } else if ("TestDDAReply".equals(messageName)) { diff --git a/src/main/java/net/pterodactylus/fcp/FcpListener.java b/src/main/java/net/pterodactylus/fcp/FcpListener.java index 02eeed5..91e1f9c 100644 --- a/src/main/java/net/pterodactylus/fcp/FcpListener.java +++ b/src/main/java/net/pterodactylus/fcp/FcpListener.java @@ -329,6 +329,8 @@ public interface FcpListener extends EventListener { */ public void receivedPluginInfo(FcpConnection fcpConnection, PluginInfo pluginInfo); + void receivedPluginRemoved(FcpConnection fcpConnection, PluginRemoved pluginRemoved); + /** * Notifies a listener that an “FCPPluginReply“ message was received. * diff --git a/src/main/java/net/pterodactylus/fcp/FcpListenerManager.java b/src/main/java/net/pterodactylus/fcp/FcpListenerManager.java index 7969da1..a5c27af 100644 --- a/src/main/java/net/pterodactylus/fcp/FcpListenerManager.java +++ b/src/main/java/net/pterodactylus/fcp/FcpListenerManager.java @@ -466,6 +466,12 @@ public class FcpListenerManager { } } + public void fireReceivedPluginRemoved(PluginRemoved pluginRemoved) { + for (FcpListener fcpListener : getListeners()) { + fcpListener.receivedPluginRemoved(getSource(), pluginRemoved); + } + } + /** * Notifies all listeners that an “FCPPluginReply” message was received. * diff --git a/src/main/java/net/pterodactylus/fcp/PluginRemoved.java b/src/main/java/net/pterodactylus/fcp/PluginRemoved.java new file mode 100644 index 0000000..7492954 --- /dev/null +++ b/src/main/java/net/pterodactylus/fcp/PluginRemoved.java @@ -0,0 +1,57 @@ +/* + * jFCPlib - PluginInfo.java - Copyright © 2008 David Roden + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +package net.pterodactylus.fcp; + +/** + * The “PluginRemoved” message is a reply to the {@link RemovePlugin} request. + * + * @author David ‘Bombe’ Roden <bombe@freenetproject.org> + */ +public class PluginRemoved extends BaseMessage implements Identifiable { + + /** + * Creates a new “PluginRemoved” message that wraps the received message. + * + * @param receivedMessage + * The received message + */ + public PluginRemoved(FcpMessage receivedMessage) { + super(receivedMessage); + } + + /** + * Returns the name of the plugin. + * + * @return The name of the plugin + */ + public String getPluginName() { + return getField("PluginName"); + } + + /** + * Returns the identifier of the request. + * + * @return The identifier of the request + */ + @Override + public String getIdentifier() { + return getField("Identifier"); + } + +} diff --git a/src/main/java/net/pterodactylus/fcp/RemovePlugin.java b/src/main/java/net/pterodactylus/fcp/RemovePlugin.java new file mode 100644 index 0000000..44fa9a7 --- /dev/null +++ b/src/main/java/net/pterodactylus/fcp/RemovePlugin.java @@ -0,0 +1,27 @@ +package net.pterodactylus.fcp; + +/** + * The “RemovePlugin” message is used to remove a plugin. + * + * @author David ‘Bombe’ Roden + */ +public class RemovePlugin extends FcpMessage { + + public RemovePlugin(String identifier) { + super("RemovePlugin"); + setField("Identifier", identifier); + } + + public void setPluginName(String pluginName) { + setField("PluginName", pluginName); + } + + public void setMaxWaitTime(int maxWaitTime) { + setField("MaxWaitTime", String.valueOf(maxWaitTime)); + } + + public void setPurge(boolean purge) { + setField("Purge", String.valueOf(purge)); + } + +}