From b79fe9f456ab75770df2610c76f0a2f4a906833f Mon Sep 17 00:00:00 2001 From: =?utf8?q?David=20=E2=80=98Bombe=E2=80=99=20Roden?= Date: Tue, 24 Nov 2015 20:31:00 +0100 Subject: [PATCH] Add command to remove plugin --- .../java/net/pterodactylus/fcp/FcpAdapter.java | 5 ++ .../java/net/pterodactylus/fcp/FcpConnection.java | 2 + .../java/net/pterodactylus/fcp/FcpListener.java | 2 + .../net/pterodactylus/fcp/FcpListenerManager.java | 6 +++ .../java/net/pterodactylus/fcp/PluginRemoved.java | 57 ++++++++++++++++++++++ .../java/net/pterodactylus/fcp/RemovePlugin.java | 27 ++++++++++ 6 files changed, 99 insertions(+) create mode 100644 src/main/java/net/pterodactylus/fcp/PluginRemoved.java create mode 100644 src/main/java/net/pterodactylus/fcp/RemovePlugin.java 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)); + } + +} -- 2.7.4