From: David ‘Bombe’ Roden Date: Sun, 15 Mar 2009 19:31:14 +0000 (+0100) Subject: Delete old high-level client. X-Git-Tag: v0.1.1~97 X-Git-Url: https://git.pterodactylus.net/?p=jFCPlib.git;a=commitdiff_plain;h=e848596da894167995f28d2d39056484debc5adc Delete old high-level client. --- diff --git a/src/net/pterodactylus/fcp/highlevel/ConnectResult.java b/src/net/pterodactylus/fcp/highlevel/ConnectResult.java deleted file mode 100644 index 9bf89aa..0000000 --- a/src/net/pterodactylus/fcp/highlevel/ConnectResult.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * fcplib - ConnectResult.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.highlevel; - -/** - * A result of the {@link HighLevelClient#connect(String)} operation. - * - * @author David ‘Bombe’ Roden <bombe@freenetproject.org> - */ -public class ConnectResult extends HighLevelResult { - - /** Whether the node is now connected. */ - private boolean connected; - - /** - * Package-private constructor. - */ - ConnectResult() { - super(null); - } - - /** - * Returns whether the node is now connected. - * - * @return true if the node is now connected, - * false otherwise - */ - public boolean isConnected() { - return connected; - } - - /** - * Sets whether the node is now connected. - * - * @param connected - * true if the node is now connected, - * false otherwise - */ - void setConnected(boolean connected) { - this.connected = connected; - } - -} diff --git a/src/net/pterodactylus/fcp/highlevel/DirectDiskAccessResult.java b/src/net/pterodactylus/fcp/highlevel/DirectDiskAccessResult.java deleted file mode 100644 index 4824f92..0000000 --- a/src/net/pterodactylus/fcp/highlevel/DirectDiskAccessResult.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * jFCPlib-high-level-client - DDAResult.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.highlevel; - -/** - * The result of a direct disk access check. - * - * @author David ‘Bombe’ Roden <bombe@freenetproject.org> - */ -public class DirectDiskAccessResult extends HighLevelResult { - - /** Whether reading is allowed. */ - private boolean readAllowed; - - /** Whether writing is allowed. */ - private boolean writeAllowed; - - /** - * Package-private constructor. - * - * @param identifier - * The identifier of the request - */ - DirectDiskAccessResult(String identifier) { - super(identifier); - } - - /** - * Returns whether reading the directory is allowed. - * - * @return true if the client is allowed to read from the - * directory, false otherwise - */ - public boolean isReadAllowed() { - return readAllowed; - } - - /** - * Sets whether reading the directory is allowed. - * - * @param readAllowed - * true if the client is allowed to read from the - * directory, false otherwise - */ - void setReadAllowed(boolean readAllowed) { - this.readAllowed = readAllowed; - } - - /** - * Returns whether writing to the directory is allowed. - * - * @return true if the client is allowed to write to the - * directory, false otherwise - */ - public boolean isWriteAllowed() { - return writeAllowed; - } - - /** - * Sets whether writing to the directory is allowed. - * - * @param writeAllowed - * true if the client is allowed to write to the - * directory, false otherwise - */ - void setWriteAllowed(boolean writeAllowed) { - this.writeAllowed = writeAllowed; - } - -} diff --git a/src/net/pterodactylus/fcp/highlevel/DownloadResult.java b/src/net/pterodactylus/fcp/highlevel/DownloadResult.java deleted file mode 100644 index 7ca520e..0000000 --- a/src/net/pterodactylus/fcp/highlevel/DownloadResult.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * jFCPlib-high-level-client - DownloadResult.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.highlevel; - -/** - * The result of a download. - * - * @author David ‘Bombe’ Roden <bombe@freenetproject.org> - */ -public class DownloadResult extends HighLevelProgress { - - /** - * Package-private constructor. - * - * @param identifier - * The identifier of the request - */ - DownloadResult(String identifier) { - super(identifier); - } - -} diff --git a/src/net/pterodactylus/fcp/highlevel/GetRequestResult.java b/src/net/pterodactylus/fcp/highlevel/GetRequestResult.java deleted file mode 100644 index 3a8b340..0000000 --- a/src/net/pterodactylus/fcp/highlevel/GetRequestResult.java +++ /dev/null @@ -1,150 +0,0 @@ -/* - * jFCPlib-high-level-client - GetRequestResult.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.highlevel; - -import net.pterodactylus.fcp.Persistence; -import net.pterodactylus.fcp.PersistentGet; -import net.pterodactylus.fcp.Priority; -import net.pterodactylus.fcp.ReturnType; -import net.pterodactylus.fcp.Verbosity; - -/** - * A Get result result is generated by {@link HighLevelClient#getRequests()}. - * - * @author David ‘Bombe’ Roden <bombe@freenetproject.org> - */ -public class GetRequestResult extends RequestResult { - - /** The PersistentGet FCP message. */ - private final PersistentGet persistentGet; - - /** - * Creates a new Get request result. - * - * @param persistentGet - * The PersistentGet message wrapped by this result - */ - public GetRequestResult(PersistentGet persistentGet) { - super(persistentGet.getIdentifier()); - this.persistentGet = persistentGet; - } - - /** - * Returns the client token associated with the request. - * - * @return The client token - * @see net.pterodactylus.fcp.PersistentGet#getClientToken() - */ - public String getClientToken() { - return persistentGet.getClientToken(); - } - - /** - * Returns the filename of the request. - * - * @return The filename - * @see net.pterodactylus.fcp.PersistentGet#getFilename() - */ - public String getFilename() { - return persistentGet.getFilename(); - } - - /** - * Returns the maximum number of retries for the request. - * - * @return The maximum number of retries - * @see net.pterodactylus.fcp.PersistentGet#getMaxRetries() - */ - public int getMaxRetries() { - return persistentGet.getMaxRetries(); - } - - /** - * Returns the persistence level of the request - * - * @return The persistence level - * @see net.pterodactylus.fcp.PersistentGet#getPersistence() - */ - public Persistence getPersistence() { - return persistentGet.getPersistence(); - } - - /** - * Returns the priority of the request. - * - * @return The priority - * @see net.pterodactylus.fcp.PersistentGet#getPriority() - */ - public Priority getPriority() { - return persistentGet.getPriority(); - } - - /** - * Returns the return type of the request. - * - * @return The return type of the request - * @see net.pterodactylus.fcp.PersistentGet#getReturnType() - */ - public ReturnType getReturnType() { - return persistentGet.getReturnType(); - } - - /** - * Returns the temporary filename of the request. - * - * @return The temporary filename - * @see net.pterodactylus.fcp.PersistentGet#getTempFilename() - */ - public String getTempFilename() { - return persistentGet.getTempFilename(); - } - - /** - * Returns the URI of the request. - * - * @return The URI of the request - * @see net.pterodactylus.fcp.PersistentGet#getURI() - */ - public String getURI() { - return persistentGet.getURI(); - } - - /** - * Returns the verbosity of the request. - * - * @return The verbosity of the request - * @see net.pterodactylus.fcp.PersistentGet#getVerbosity() - */ - public Verbosity getVerbosity() { - return persistentGet.getVerbosity(); - } - - /** - * Returns whether this request is on the global queue. - * - * @return true if the request is on the global queue, - * false if it is on the client-local queue - * @see net.pterodactylus.fcp.PersistentGet#isGlobal() - */ - public boolean isGlobal() { - return persistentGet.isGlobal(); - } - -} diff --git a/src/net/pterodactylus/fcp/highlevel/HighLevelCallback.java b/src/net/pterodactylus/fcp/highlevel/HighLevelCallback.java deleted file mode 100644 index 7dc55df..0000000 --- a/src/net/pterodactylus/fcp/highlevel/HighLevelCallback.java +++ /dev/null @@ -1,170 +0,0 @@ -/* - * fcplib - HighLevelCallback.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.highlevel; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -/** - * A callback is used to notify users of the {@link HighLevelClient} that an - * operation was completed. - * - * @param - * The type of the high-level operation result - * @author David ‘Bombe’ Roden <bombe@freenetproject.org> - */ -public class HighLevelCallback { - - /** Object used for synchronization. */ - protected final Object syncObject = new Object(); - - /** The list of callback listeners. */ - private final List> highLevelCallbackListeners = Collections.synchronizedList(new ArrayList>()); - - /** Whether the result is complete. */ - protected boolean resultComplete = false; - - /** The result of the operation. */ - private R result = null; - - /** - * Package-private construtor. - * - * @param result - * The result of the operation - */ - HighLevelCallback(R result) { - this.result = result; - } - - /** - * Adds a callback listener to this callback. The callback listener will be - * called as soon as the result of the operation is known. If the result is - * already known, the listener will be called immediately. Also, as soon as - * a listener was notified the listener is automatically removed from this - * callback. - * - * @param highLevelCallbackListener - * The listener to add - */ - public void addHighLevelCallbackListener(HighLevelCallbackListener highLevelCallbackListener) { - highLevelCallbackListeners.add(highLevelCallbackListener); - if (isDone()) { - fireGotResult(); - } - } - - /** - * Removes a callback listener from this callback. - * - * @param highLevelCallbackListener - * The listener to remove - */ - public void removeHighLevelCallbackListener(HighLevelCallbackListener highLevelCallbackListener) { - highLevelCallbackListeners.remove(highLevelCallbackListener); - } - - /** - * Notifies all listeners that the result of the operation is now known. As - * soon as a listener was notified it will be removed from the list of - * listeners! - * - * @see HighLevelCallbackListener#gotResult(HighLevelCallback) - */ - private synchronized void fireGotResult() { - for (HighLevelCallbackListener highLevelCallbackListener: highLevelCallbackListeners) { - highLevelCallbackListener.gotResult(this); - } - highLevelCallbackListeners.clear(); - } - - /** - * Returns whether the result of the operation is already known. If the - * result is already known a call to {@link #getResult()} will not block. - * - * @return true if the result is already known, - * false otherwise - */ - public boolean isDone() { - synchronized (syncObject) { - return resultComplete; - } - } - - /** - * Returns the result of the operation, blocking until it is known. - * - * @return The result of the operation - * @throws InterruptedException - * if {@link Object#wait()} was interrupted - */ - public R getResult() throws InterruptedException { - return getResult(0); - } - - /** - * Returns the result of the operation, blocking until it is known or the - * given time (in milliseconds) has passed. - * - * @param waitTime - * The time to wait for a result - * @return The result of the operation, or null if the result - * is still not known after waitTime milliseconds - * have passed - * @throws InterruptedException - * if {@link Object#wait()} is interrupted - */ - public R getResult(long waitTime) throws InterruptedException { - synchronized (syncObject) { - while (!resultComplete) { - syncObject.wait(waitTime); - } - return result; - } - } - - /** - * Returns the result even if it is not yet complete. - * - * @return The result of the operation - */ - R getIntermediaryResult() { - synchronized (syncObject) { - return result; - } - } - - /** - * Marks the result as complete and notify the listeners. If the result was - * already complete, nothing will be done. - */ - void setDone() { - synchronized (syncObject) { - if (resultComplete) { - return; - } - resultComplete = true; - syncObject.notifyAll(); - } - fireGotResult(); - } - -} diff --git a/src/net/pterodactylus/fcp/highlevel/HighLevelCallbackListener.java b/src/net/pterodactylus/fcp/highlevel/HighLevelCallbackListener.java deleted file mode 100644 index c40c895..0000000 --- a/src/net/pterodactylus/fcp/highlevel/HighLevelCallbackListener.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * fcplib - HighLevelCallbackListener.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.highlevel; - -import java.util.EventListener; - -/** - * Interface for objects that want to be notified as soon as a - * {@link HighLevelCallback} received a result. - * - * @param - * The type of the high-level operation progress - * @author David ‘Bombe’ Roden <bombe@freenetproject.org> - */ -public interface HighLevelCallbackListener extends EventListener { - - /** - * Notifies a listener that the given callback received a result. Use - * {@link HighLevelCallback#getResult()} to retrieve the result. - * - * @param highLevelCallback - * The callback that received a result - */ - public void gotResult(HighLevelCallback highLevelCallback); - -} diff --git a/src/net/pterodactylus/fcp/highlevel/HighLevelClient.java b/src/net/pterodactylus/fcp/highlevel/HighLevelClient.java deleted file mode 100644 index 84df83c..0000000 --- a/src/net/pterodactylus/fcp/highlevel/HighLevelClient.java +++ /dev/null @@ -1,1281 +0,0 @@ -/* - * fcplib - HighLevelClient.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.highlevel; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileReader; -import java.io.FileWriter; -import java.io.IOException; -import java.net.InetAddress; -import java.net.URL; -import java.net.UnknownHostException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.logging.Level; -import java.util.logging.Logger; - -import net.pterodactylus.fcp.AddPeer; -import net.pterodactylus.fcp.AllData; -import net.pterodactylus.fcp.ClientGet; -import net.pterodactylus.fcp.ClientHello; -import net.pterodactylus.fcp.CloseConnectionDuplicateClientName; -import net.pterodactylus.fcp.ConfigData; -import net.pterodactylus.fcp.DataFound; -import net.pterodactylus.fcp.EndListPeerNotes; -import net.pterodactylus.fcp.EndListPeers; -import net.pterodactylus.fcp.EndListPersistentRequests; -import net.pterodactylus.fcp.FCPPluginReply; -import net.pterodactylus.fcp.FcpConnection; -import net.pterodactylus.fcp.FcpListener; -import net.pterodactylus.fcp.FcpMessage; -import net.pterodactylus.fcp.FcpUtils; -import net.pterodactylus.fcp.FinishedCompression; -import net.pterodactylus.fcp.GenerateSSK; -import net.pterodactylus.fcp.GetFailed; -import net.pterodactylus.fcp.IdentifierCollision; -import net.pterodactylus.fcp.ListPeers; -import net.pterodactylus.fcp.ListPersistentRequests; -import net.pterodactylus.fcp.NodeData; -import net.pterodactylus.fcp.NodeHello; -import net.pterodactylus.fcp.NodeRef; -import net.pterodactylus.fcp.Peer; -import net.pterodactylus.fcp.PeerNote; -import net.pterodactylus.fcp.PeerRemoved; -import net.pterodactylus.fcp.PersistentGet; -import net.pterodactylus.fcp.PersistentPut; -import net.pterodactylus.fcp.PersistentPutDir; -import net.pterodactylus.fcp.PersistentRequestModified; -import net.pterodactylus.fcp.PersistentRequestRemoved; -import net.pterodactylus.fcp.PluginInfo; -import net.pterodactylus.fcp.ProtocolError; -import net.pterodactylus.fcp.PutFailed; -import net.pterodactylus.fcp.PutFetchable; -import net.pterodactylus.fcp.PutSuccessful; -import net.pterodactylus.fcp.ReturnType; -import net.pterodactylus.fcp.SSKKeypair; -import net.pterodactylus.fcp.SimpleProgress; -import net.pterodactylus.fcp.StartedCompression; -import net.pterodactylus.fcp.SubscribedUSKUpdate; -import net.pterodactylus.fcp.TestDDAComplete; -import net.pterodactylus.fcp.TestDDAReply; -import net.pterodactylus.fcp.TestDDARequest; -import net.pterodactylus.fcp.TestDDAResponse; -import net.pterodactylus.fcp.URIGenerated; -import net.pterodactylus.fcp.UnknownNodeIdentifier; -import net.pterodactylus.fcp.UnknownPeerNoteType; -import net.pterodactylus.fcp.WatchGlobal; - -/** - * A high-level client that allows simple yet full-featured access to a Freenet - * node. - * - * @author David ‘Bombe’ Roden <bombe@freenetproject.org> - */ -public class HighLevelClient { - - /** Logger. */ - private static final Logger logger = Logger.getLogger(HighLevelClient.class.getName()); - - /** Object for internal synchronization. */ - private final Object syncObject = new Object(); - - /** The name of the client. */ - private final String clientName; - - /** The FCP connection to the node. */ - private FcpConnection fcpConnection = null; - - /** Listeners for high-level client events. */ - private List highLevelClientListeners = Collections.synchronizedList(new ArrayList()); - - /** The listener for the connection. */ - private HighLevelClientFcpListener highLevelClientFcpListener = new HighLevelClientFcpListener(); - - /** The listeners for progress events. */ - private List highLevelProgressListeners = Collections.synchronizedList(new ArrayList()); - - /** The callback for {@link #connect(String)}. */ - private HighLevelCallback connectCallback; - - /** Mapping from request identifiers to callbacks. */ - private Map> keyGenerationCallbacks = Collections.synchronizedMap(new HashMap>()); - - /** Mapping from request identifier to peer list callbacks. */ - private Map> peerListCallbacks = Collections.synchronizedMap(new HashMap>()); - - /** Mapping from request identifier to peer callbacks. */ - private Map> peerCallbacks = Collections.synchronizedMap(new HashMap>()); - - /** Mapping from directories to DDA callbacks. */ - private Map> directDiskAccessCallbacks = Collections.synchronizedMap(new HashMap>()); - - /** Mapping from request identifiers to download callbacks. */ - private Map> downloadCallbacks = Collections.synchronizedMap(new HashMap>()); - - /** The callback for {@link #getRequests()}. */ - private HighLevelCallback requestListCallback; - - /** - * Creates a new high-level client that connects to a node on - * localhost. - * - * @param clientName - * The name of the client - */ - public HighLevelClient(String clientName) { - this.clientName = clientName; - } - - // - // EVENT MANAGEMENT - // - - /** - * Adds the given high-level client listener to list of listeners. - * - * @param highLevelClientListener - * The listener to add - */ - public void addHighLevelClientListener(HighLevelClientListener highLevelClientListener) { - highLevelClientListeners.add(highLevelClientListener); - } - - /** - * Removes the given high-level client listener from the list of listeners. - * - * @param highLevelClientListener - * The listener to remove - */ - public void removeHighLevelClientListener(HighLevelClientListener highLevelClientListener) { - highLevelClientListeners.remove(highLevelClientListener); - } - - /** - * Notifies all listeners that a client has connected. - */ - private void fireClientConnected() { - for (HighLevelClientListener highLevelClientListener : highLevelClientListeners) { - highLevelClientListener.clientConnected(this); - } - } - - /** - * Notifies all listeners that a client has disconnected. - * - * @param throwable - * The exception that caused the disconnect, or null - * if there was no exception - */ - private void fireClientDisconnected(Throwable throwable) { - for (HighLevelClientListener highLevelClientListener : highLevelClientListeners) { - highLevelClientListener.clientDisconnected(this, throwable); - } - } - - /** - * Adds a high-level progress listener. - * - * @param highLevelProgressListener - * The high-level progress listener to add - */ - public void addHighLevelProgressListener(HighLevelProgressListener highLevelProgressListener) { - highLevelProgressListeners.add(highLevelProgressListener); - } - - /** - * Removes a high-level progress listener. - * - * @param highLevelProgressListener - * The high-level progress listener to remove - */ - public void removeHighLevelProgressListener(HighLevelProgressListener highLevelProgressListener) { - highLevelProgressListeners.remove(highLevelProgressListener); - } - - /** - * Notifies all listeners that the request with the given identifier made - * some progress. - * - * @param identifier - * The identifier of the request - * @param highLevelProgress - * The progress of the request - */ - private void fireProgressReceived(String identifier, HighLevelProgress highLevelProgress) { - for (HighLevelProgressListener highLevelProgressListener : highLevelProgressListeners) { - highLevelProgressListener.progressReceived(this, identifier, highLevelProgress); - } - } - - // - // ACCESSORS - // - - /** - * Returns the FCP connection that backs this high-level client. This method - * should be used with care as fiddling around with the FCP connection can - * easily break the high-level client if you don’t know what you’re doing! - * - * @return The FCP connection of this client - */ - public FcpConnection getFcpConnection() { - return fcpConnection; - } - - /** - * Returns whether the node is connected. - * - * @return true if the node is currently connected, - * false otherwise - */ - public boolean isConnected() { - return fcpConnection != null; - } - - // - // ACTIONS - // - - /** - * Connects the client. - * - * @param hostname - * The hostname of the node - * @return A callback with a connection result - * @throws UnknownHostException - * if the hostname can not be resolved - * @throws IOException - * if an I/O error occurs communicating with the node - */ - public HighLevelCallback connect(String hostname) throws UnknownHostException, IOException { - return connect(hostname, 9481); - } - - /** - * Connects the client. - * - * @param hostname - * The hostname of the node - * @param port - * The port number of the node - * @return A callback with a connection result - * @throws UnknownHostException - * if the hostname can not be resolved - * @throws IOException - * if an I/O error occurs communicating with the node - */ - public HighLevelCallback connect(String hostname, int port) throws UnknownHostException, IOException { - return connect(InetAddress.getByName(hostname), port); - } - - /** - * Connects the client. - * - * @param address - * The address of the node - * @param port - * The port number of the node - * @return A callback with a connection result - * @throws IOException - * if an I/O error occurs communicating with the node - */ - public HighLevelCallback connect(InetAddress address, int port) throws IOException { - try { - synchronized (this) { - fcpConnection = new FcpConnection(address, port); - } - fcpConnection.addFcpListener(highLevelClientFcpListener); - fcpConnection.connect(); - ClientHello clientHello = new ClientHello(clientName); - connectCallback = new HighLevelCallback(new ConnectResult()); - fcpConnection.sendMessage(clientHello); - return connectCallback; - } catch (IOException ioe1) { - fcpConnection = null; - throw ioe1; - } - } - - /** - * Disconnects the client from the node. - */ - public void disconnect() { - disconnect(null); - } - - /** - * Generates a new SSK keypair. - * - * @return A callback with the keypair - * @throws IOException - * if an I/O error occurs communicating with the node - * @throws HighLevelException - * if the client is not connected - */ - public HighLevelCallback generateKey() throws IOException, HighLevelException { - checkConnection(); - String identifier = generateIdentifier("generateSSK"); - GenerateSSK generateSSK = new GenerateSSK(identifier); - HighLevelCallback keyGenerationCallback = new HighLevelCallback(new KeyGenerationResult(identifier)); - keyGenerationCallbacks.put(identifier, keyGenerationCallback); - fcpConnection.sendMessage(generateSSK); - return keyGenerationCallback; - } - - /** - * Sets whether to watch the global queue. - * - * @param enabled - * true to watch the global queue in addition to the - * client-local queue, false to only watch the - * client-local queue - * @throws IOException - * if an I/O error occurs communicating with the node - * @throws HighLevelException - * if the client is not connected - */ - public void setWatchGlobal(boolean enabled) throws IOException, HighLevelException { - checkConnection(); - WatchGlobal watchGlobal = new WatchGlobal(enabled); - fcpConnection.sendMessage(watchGlobal); - } - - /** - * Gets a list of all peers from the node. - * - * @return A callback with the peer list - * @throws IOException - * if an I/O error occurs with the node - * @throws HighLevelException - * if the client is not connected - */ - public HighLevelCallback getPeers() throws IOException, HighLevelException { - checkConnection(); - String identifier = generateIdentifier("listPeers"); - ListPeers listPeers = new ListPeers(identifier, true, true); - HighLevelCallback peerListCallback = new HighLevelCallback(new PeerListResult(identifier)); - peerListCallbacks.put(identifier, peerListCallback); - fcpConnection.sendMessage(listPeers); - return peerListCallback; - } - - /** - * Adds the peer whose noderef is stored in the given file. - * - * @param nodeRefFile - * The name of the file the peer’s noderef is stored in - * @return A peer callback - * @throws IOException - * if an I/O error occurs communicating with the node - * @throws HighLevelException - * if the client is not connected - */ - public HighLevelCallback addPeer(String nodeRefFile) throws IOException, HighLevelException { - checkConnection(); - String identifier = generateIdentifier("addPeer"); - AddPeer addPeer = new AddPeer(nodeRefFile); - HighLevelCallback peerCallback = new HighLevelCallback(new PeerResult(identifier)); - peerCallbacks.put(identifier, peerCallback); - fcpConnection.sendMessage(addPeer); - return peerCallback; - } - - /** - * Adds the peer whose noderef is stored in the given file. - * - * @param nodeRefURL - * The URL where the peer’s noderef is stored - * @return A peer callback - * @throws IOException - * if an I/O error occurs communicating with the node - * @throws HighLevelException - * if the client is not connected - */ - public HighLevelCallback addPeer(URL nodeRefURL) throws IOException, HighLevelException { - checkConnection(); - String identifier = generateIdentifier("addPeer"); - AddPeer addPeer = new AddPeer(nodeRefURL); - HighLevelCallback peerCallback = new HighLevelCallback(new PeerResult(identifier)); - peerCallbacks.put(identifier, peerCallback); - fcpConnection.sendMessage(addPeer); - return peerCallback; - } - - /** - * Adds the peer whose noderef is stored in the given file. - * - * @param nodeRef - * The peer’s noderef - * @return A peer callback - * @throws IOException - * if an I/O error occurs communicating with the node - * @throws HighLevelException - * if the client is not connected - */ - public HighLevelCallback addPeer(NodeRef nodeRef) throws IOException, HighLevelException { - checkConnection(); - String identifier = generateIdentifier("addPeer"); - AddPeer addPeer = new AddPeer(nodeRef); - HighLevelCallback peerCallback = new HighLevelCallback(new PeerResult(identifier)); - peerCallbacks.put(identifier, peerCallback); - fcpConnection.sendMessage(addPeer); - return peerCallback; - } - - /** - * Checks whether direct disk access for the given directory is possible. - * You have to perform this check before you can upload or download anything - * from or the disk directly! - * - * @param directory - * The directory to check - * @param wantRead - * Whether you want to read the given directory - * @param wantWrite - * Whether you want to write to the given directory - * @return A direct disk access callback - * @throws IOException - * if an I/O error occurs communicating with the node - * @throws HighLevelException - * if the client is not connected - */ - public HighLevelCallback checkDirectDiskAccess(String directory, boolean wantRead, boolean wantWrite) throws IOException, HighLevelException { - checkConnection(); - TestDDARequest testDDARequest = new TestDDARequest(directory, wantRead, wantWrite); - HighLevelCallback directDiskAccessCallback = new HighLevelCallback(new DirectDiskAccessResult(directory)); - directDiskAccessCallbacks.put(directory, directDiskAccessCallback); - fcpConnection.sendMessage(testDDARequest); - return directDiskAccessCallback; - } - - /** - * Starts a download. Files can either be download to disk or streamed from - * the node. When downloading to disk you have to perform a direct disk - * access check for the directory you want to put the downloaded file in! - * - * @see #checkDirectDiskAccess(String, boolean, boolean) - * @param uri - * The URI to get - * @param filename - * The filename to save the data to, or null to - * retrieve the data as InputStream from the - * {@link DownloadResult} - * @param global - * Whether to put the download on the global queue - * @return A download result - * @throws IOException - * if an I/O error occurs communicating with the node - * @throws HighLevelException - * if the client is not connected - */ - public HighLevelProgressCallback download(String uri, String filename, boolean global) throws IOException, HighLevelException { - checkConnection(); - String identifier = generateIdentifier("download"); - ClientGet clientGet = new ClientGet(uri, identifier, (filename == null) ? ReturnType.direct : ReturnType.disk); - clientGet.setGlobal(global); - HighLevelProgressCallback downloadCallback = new HighLevelProgressCallback(new DownloadResult(identifier)); - downloadCallbacks.put(identifier, downloadCallback); - fcpConnection.sendMessage(clientGet); - return downloadCallback; - } - - /** - * Requests a list of all running requests from the node. - * - * @return The request list result - * @throws IOException - * if an I/O errors communicating with the node - * @throws HighLevelException - * if the client is not connected - */ - public HighLevelCallback getRequests() throws IOException, HighLevelException { - checkConnection(); - String identifier = generateIdentifier("list-persistent-requests"); - ListPersistentRequests listPersistentRequests = new ListPersistentRequests(); - synchronized (syncObject) { - if (requestListCallback != null) { - logger.log(Level.SEVERE, "getRequests() called with request still running!"); - } - requestListCallback = new HighLevelCallback(new RequestListResult(identifier)); - } - fcpConnection.sendMessage(listPersistentRequests); - return requestListCallback; - } - - // - // PRIVATE METHODS - // - - /** - * Checks whether the client is already connected and throws an exception if - * it is not. - * - * @throws NotConnectedException - * if the client is not connected - */ - private void checkConnection() throws NotConnectedException { - synchronized (this) { - if (fcpConnection == null) { - throw new NotConnectedException("client is not connected"); - } - } - } - - /** - * Generates an identifier for the given function. - * - * @param function - * The name of the function - * @return An identifier - */ - private String generateIdentifier(String function) { - return "jFCPlib-" + function + "-" + System.currentTimeMillis(); - } - - /** - * Disconnects the client from the node, handing the given Throwable to - * {@link #fireClientDisconnected(Throwable)}. - * - * @param throwable - * The exception that caused the disconnect, or null - * if there was no exception - */ - private void disconnect(Throwable throwable) { - if (fcpConnection != null) { - fcpConnection.close(); - } - fcpConnection = null; - } - - /** - * FCP listener for {@link HighLevelClient}. - * - * @author David ‘Bombe’ Roden <bombe@freenetproject.org> - */ - private class HighLevelClientFcpListener implements FcpListener { - - /** Mapping from directory to written file (for cleanup). */ - private final Map writtenFiles = new HashMap(); - - /** - * Creates a new FCP listener for {@link HighLevelClient}. - */ - HighLevelClientFcpListener() { - /* do nothing. */ - } - - // - // PRIVATE METHODS - // - - /** - * Searches all callback collections for a callback with the given - * identifier and cancels it. - * - * @param identifier - * The identifier to search for, or null to - * cancel all pending requests - */ - @SuppressWarnings("synthetic-access") - private void cancelIdentifier(String identifier) { - synchronized (syncObject) { - if (connectCallback != null) { - connectCallback.getIntermediaryResult().setFailed(true); - connectCallback.setDone(); - connectCallback = null; - } - if (requestListCallback != null) { - requestListCallback.getIntermediaryResult().setFailed(true); - requestListCallback.setDone(); - requestListCallback = null; - } - } - if (identifier == null) { - /* key generation callbacks */ - for (Entry> keyGenerationEntry : keyGenerationCallbacks.entrySet()) { - keyGenerationEntry.getValue().getIntermediaryResult().setFailed(true); - keyGenerationEntry.getValue().setDone(); - } - keyGenerationCallbacks.clear(); - /* peer list callbacks. */ - for (Entry> peerListEntry : peerListCallbacks.entrySet()) { - peerListEntry.getValue().getIntermediaryResult().setFailed(true); - peerListEntry.getValue().setDone(); - } - peerListCallbacks.clear(); - /* peer callbacks. */ - for (Entry> peerEntry : peerCallbacks.entrySet()) { - peerEntry.getValue().getIntermediaryResult().setFailed(true); - peerEntry.getValue().setDone(); - } - peerCallbacks.clear(); - /* direct disk access callbacks. */ - for (Entry> directDiskAccessEntry : directDiskAccessCallbacks.entrySet()) { - directDiskAccessEntry.getValue().getIntermediaryResult().setFailed(true); - directDiskAccessEntry.getValue().setDone(); - } - directDiskAccessCallbacks.clear(); - /* download callbacks. */ - for (Entry> downloadEntry : downloadCallbacks.entrySet()) { - downloadEntry.getValue().getIntermediaryResult().setFailed(true); - downloadEntry.getValue().setDone(); - } - downloadCallbacks.clear(); - } else { - HighLevelCallback keyGenerationCallback = keyGenerationCallbacks.remove(identifier); - if (keyGenerationCallback != null) { - keyGenerationCallback.getIntermediaryResult().setFailed(true); - keyGenerationCallback.setDone(); - return; - } - HighLevelCallback peerListCallback = peerListCallbacks.remove(identifier); - if (peerListCallback != null) { - peerListCallback.getIntermediaryResult().setFailed(true); - peerListCallback.setDone(); - return; - } - HighLevelCallback peerCallback = peerCallbacks.remove(identifier); - if (peerCallback != null) { - peerCallback.getIntermediaryResult().setFailed(true); - peerCallback.setDone(); - return; - } - HighLevelCallback directDiskAccessCallback = directDiskAccessCallbacks.remove(identifier); - if (directDiskAccessCallback != null) { - directDiskAccessCallback.getIntermediaryResult().setFailed(true); - directDiskAccessCallback.setDone(); - return; - } - HighLevelProgressCallback downloadCallback = downloadCallbacks.remove(identifier); - if (downloadCallback != null) { - downloadCallback.getIntermediaryResult().setFailed(true); - downloadCallback.setDone(); - return; - } - } - } - - /** - * Reads the given file and returns the first line of the file. - * - * @param readFilename - * The name of the file to read - * @return The content of the file - */ - private String readContent(String readFilename) { - if (readFilename == null) { - return null; - } - FileReader fileReader = null; - BufferedReader bufferedFileReader = null; - try { - fileReader = new FileReader(readFilename); - bufferedFileReader = new BufferedReader(fileReader); - String content = bufferedFileReader.readLine(); - return content; - } catch (IOException ioe1) { - /* swallow. */ - } finally { - FcpUtils.close(bufferedFileReader); - FcpUtils.close(fileReader); - } - return null; - } - - /** - * Writes the given content to the given file. - * - * @param directDiskAccessResult - * The DDA result - * @param writeFilename - * The name of the file to write to - * @param writeContent - * The content to write to the file - */ - private void writeContent(DirectDiskAccessResult directDiskAccessResult, String writeFilename, String writeContent) { - if ((writeFilename == null) || (writeContent == null)) { - return; - } - writtenFiles.put(directDiskAccessResult, writeFilename); - FileWriter fileWriter = null; - try { - fileWriter = new FileWriter(writeFilename); - fileWriter.write(writeContent); - } catch (IOException ioe1) { - /* swallow. */ - } finally { - FcpUtils.close(fileWriter); - } - } - - /** - * Cleans up any files that written for the given result. - * - * @param directDiskAccessResult - * The direct disk access result - */ - @SuppressWarnings("synthetic-access") - private void cleanFiles(DirectDiskAccessResult directDiskAccessResult) { - String writeFilename = writtenFiles.remove(directDiskAccessResult); - if (writeFilename != null) { - if (!new File(writeFilename).delete()) { - logger.warning("could not delete " + writeFilename); - } - } - } - - // - // INTERFACE FcpListener - // - - /** - * @see net.pterodactylus.fcp.FcpListener#connectionClosed(net.pterodactylus.fcp.FcpConnection, - * Throwable) - */ - @SuppressWarnings("synthetic-access") - public void connectionClosed(FcpConnection fcpConnection, Throwable throwable) { - if (fcpConnection != HighLevelClient.this.fcpConnection) { - return; - } - cancelIdentifier(null); - disconnect(throwable); - fireClientDisconnected(throwable); - } - - /** - * @see net.pterodactylus.fcp.FcpListener#receivedAllData(net.pterodactylus.fcp.FcpConnection, - * net.pterodactylus.fcp.AllData) - */ - public void receivedAllData(FcpConnection fcpConnection, AllData allData) { - /* TODO */ - } - - /** - * @see net.pterodactylus.fcp.FcpListener#receivedCloseConnectionDuplicateClientName(net.pterodactylus.fcp.FcpConnection, - * net.pterodactylus.fcp.CloseConnectionDuplicateClientName) - */ - public void receivedCloseConnectionDuplicateClientName(FcpConnection fcpConnection, CloseConnectionDuplicateClientName closeConnectionDuplicateClientName) { - /* TODO */ - } - - /** - * @see net.pterodactylus.fcp.FcpListener#receivedConfigData(net.pterodactylus.fcp.FcpConnection, - * net.pterodactylus.fcp.ConfigData) - */ - public void receivedConfigData(FcpConnection fcpConnection, ConfigData configData) { - /* TODO */ - } - - /** - * @see net.pterodactylus.fcp.FcpListener#receivedDataFound(net.pterodactylus.fcp.FcpConnection, - * net.pterodactylus.fcp.DataFound) - */ - @SuppressWarnings("synthetic-access") - public void receivedDataFound(FcpConnection fcpConnection, DataFound dataFound) { - if (fcpConnection != HighLevelClient.this.fcpConnection) { - return; - } - String identifier = dataFound.getIdentifier(); - HighLevelProgressCallback downloadCallback = downloadCallbacks.get(identifier); - if (downloadCallback != null) { - DownloadResult downloadResult = downloadCallback.getIntermediaryResult(); - downloadResult.setFinished(true); - downloadResult.setFailed(false); - downloadCallback.progressUpdated(); - downloadCallback.setDone(); - } - HighLevelProgress highLevelProgress = new HighLevelProgress(identifier, true); - fireProgressReceived(identifier, highLevelProgress); - } - - /** - * @see net.pterodactylus.fcp.FcpListener#receivedEndListPeerNotes(net.pterodactylus.fcp.FcpConnection, - * net.pterodactylus.fcp.EndListPeerNotes) - */ - public void receivedEndListPeerNotes(FcpConnection fcpConnection, EndListPeerNotes endListPeerNotes) { - /* TODO */ - } - - /** - * @see net.pterodactylus.fcp.FcpListener#receivedEndListPeers(net.pterodactylus.fcp.FcpConnection, - * net.pterodactylus.fcp.EndListPeers) - */ - @SuppressWarnings("synthetic-access") - public void receivedEndListPeers(FcpConnection fcpConnection, EndListPeers endListPeers) { - if (fcpConnection != HighLevelClient.this.fcpConnection) { - return; - } - String identifier = endListPeers.getIdentifier(); - HighLevelCallback peerListCallback = peerListCallbacks.remove(identifier); - if (peerListCallback == null) { - return; - } - peerListCallback.setDone(); - } - - /** - * @see net.pterodactylus.fcp.FcpListener#receivedEndListPersistentRequests(net.pterodactylus.fcp.FcpConnection, - * net.pterodactylus.fcp.EndListPersistentRequests) - */ - @SuppressWarnings("synthetic-access") - public void receivedEndListPersistentRequests(FcpConnection fcpConnection, EndListPersistentRequests endListPersistentRequests) { - if (fcpConnection != HighLevelClient.this.fcpConnection) { - return; - } - synchronized (syncObject) { - if (HighLevelClient.this.requestListCallback == null) { - logger.log(Level.WARNING, "got EndListPersistentRequests without running request!"); - return; - } - requestListCallback.setDone(); - requestListCallback = null; - } - } - - /** - * @see net.pterodactylus.fcp.FcpListener#receivedFCPPluginReply(net.pterodactylus.fcp.FcpConnection, - * net.pterodactylus.fcp.FCPPluginReply) - */ - public void receivedFCPPluginReply(FcpConnection fcpConnection, FCPPluginReply fcpPluginReply) { - /* TODO */ - } - - /** - * @see net.pterodactylus.fcp.FcpListener#receivedGetFailed(net.pterodactylus.fcp.FcpConnection, - * net.pterodactylus.fcp.GetFailed) - */ - @SuppressWarnings("synthetic-access") - public void receivedGetFailed(FcpConnection fcpConnection, GetFailed getFailed) { - if (fcpConnection != HighLevelClient.this.fcpConnection) { - return; - } - String identifier = getFailed.getIdentifier(); - HighLevelProgressCallback downloadCallback = downloadCallbacks.remove(identifier); - if (downloadCallback != null) { - DownloadResult downloadResult = downloadCallback.getIntermediaryResult(); - downloadResult.setFailed(true); - downloadResult.setFinished(true); - downloadCallback.setDone(); - return; - } - /* unknown identifier? */ - logger.warning("unknown identifier for GetFailed: " + identifier); - } - - /** - * @see net.pterodactylus.fcp.FcpListener#receivedIdentifierCollision(net.pterodactylus.fcp.FcpConnection, - * net.pterodactylus.fcp.IdentifierCollision) - */ - public void receivedIdentifierCollision(FcpConnection fcpConnection, IdentifierCollision identifierCollision) { - /* TODO */ - } - - /** - * @see net.pterodactylus.fcp.FcpListener#receivedMessage(net.pterodactylus.fcp.FcpConnection, - * net.pterodactylus.fcp.FcpMessage) - */ - public void receivedMessage(FcpConnection fcpConnection, FcpMessage fcpMessage) { - /* TODO */ - } - - /** - * @see net.pterodactylus.fcp.FcpListener#receivedNodeData(net.pterodactylus.fcp.FcpConnection, - * net.pterodactylus.fcp.NodeData) - */ - public void receivedNodeData(FcpConnection fcpConnection, NodeData nodeData) { - /* TODO */ - } - - /** - * @see net.pterodactylus.fcp.FcpListener#receivedNodeHello(net.pterodactylus.fcp.FcpConnection, - * net.pterodactylus.fcp.NodeHello) - */ - @SuppressWarnings("synthetic-access") - public void receivedNodeHello(FcpConnection fcpConnection, NodeHello nodeHello) { - if (fcpConnection != HighLevelClient.this.fcpConnection) { - return; - } - synchronized (syncObject) { - connectCallback.getIntermediaryResult().setFailed(false); - connectCallback.setDone(); - connectCallback = null; - } - fireClientConnected(); - } - - /** - * @see net.pterodactylus.fcp.FcpListener#receivedPeer(net.pterodactylus.fcp.FcpConnection, - * net.pterodactylus.fcp.Peer) - */ - @SuppressWarnings("synthetic-access") - public void receivedPeer(FcpConnection fcpConnection, Peer peer) { - if (fcpConnection != HighLevelClient.this.fcpConnection) { - return; - } - String identifier = peer.getIdentifier(); - if (identifier == null) { - return; - } - HighLevelCallback peerListCallback = peerListCallbacks.get(identifier); - if (peerListCallback != null) { - peerListCallback.getIntermediaryResult().addPeer(peer); - return; - } - HighLevelCallback peerResult = peerCallbacks.remove(identifier); - if (peerResult != null) { - peerResult.getIntermediaryResult().setPeer(peer); - peerResult.setDone(); - return; - } - logger.warning("got Peer message with unknown identifier: " + identifier); - } - - /** - * @see net.pterodactylus.fcp.FcpListener#receivedPeerNote(net.pterodactylus.fcp.FcpConnection, - * net.pterodactylus.fcp.PeerNote) - */ - public void receivedPeerNote(FcpConnection fcpConnection, PeerNote peerNote) { - /* TODO */ - } - - /** - * @see net.pterodactylus.fcp.FcpListener#receivedPeerRemoved(net.pterodactylus.fcp.FcpConnection, - * net.pterodactylus.fcp.PeerRemoved) - */ - public void receivedPeerRemoved(FcpConnection fcpConnection, PeerRemoved peerRemoved) { - /* TODO */ - } - - /** - * @see net.pterodactylus.fcp.FcpListener#receivedPersistentGet(net.pterodactylus.fcp.FcpConnection, - * net.pterodactylus.fcp.PersistentGet) - */ - @SuppressWarnings("synthetic-access") - public void receivedPersistentGet(FcpConnection fcpConnection, PersistentGet persistentGet) { - if (fcpConnection != HighLevelClient.this.fcpConnection) { - return; - } - synchronized (syncObject) { - if (requestListCallback != null) { - RequestListResult requestListResult = requestListCallback.getIntermediaryResult(); - requestListResult.addRequestResult(new GetRequestResult(persistentGet)); - return; - } - } - String identifier = persistentGet.getIdentifier(); - if (downloadCallbacks.containsKey(identifier)) { - /* TODO */ - return; - } - } - - /** - * @see net.pterodactylus.fcp.FcpListener#receivedPersistentPut(net.pterodactylus.fcp.FcpConnection, - * net.pterodactylus.fcp.PersistentPut) - */ - @SuppressWarnings("synthetic-access") - public void receivedPersistentPut(FcpConnection fcpConnection, PersistentPut persistentPut) { - if (fcpConnection != HighLevelClient.this.fcpConnection) { - return; - } - synchronized (syncObject) { - if (requestListCallback != null) { - RequestListResult requestListResult = requestListCallback.getIntermediaryResult(); - requestListResult.addRequestResult(new PutRequestResult(persistentPut)); - return; - } - } - } - - /** - * @see net.pterodactylus.fcp.FcpListener#receivedPersistentPutDir(net.pterodactylus.fcp.FcpConnection, - * net.pterodactylus.fcp.PersistentPutDir) - */ - @SuppressWarnings("synthetic-access") - public void receivedPersistentPutDir(FcpConnection fcpConnection, PersistentPutDir persistentPutDir) { - if (fcpConnection != HighLevelClient.this.fcpConnection) { - return; - } - synchronized (syncObject) { - if (requestListCallback != null) { - RequestListResult requestListResult = requestListCallback.getIntermediaryResult(); - requestListResult.addRequestResult(new PutDirRequestResult(persistentPutDir)); - return; - } - } - } - - /** - * @see net.pterodactylus.fcp.FcpListener#receivedPersistentRequestModified(net.pterodactylus.fcp.FcpConnection, - * net.pterodactylus.fcp.PersistentRequestModified) - */ - public void receivedPersistentRequestModified(FcpConnection fcpConnection, PersistentRequestModified persistentRequestModified) { - /* TODO */ - } - - /** - * @see net.pterodactylus.fcp.FcpListener#receivedPersistentRequestRemoved(net.pterodactylus.fcp.FcpConnection, - * net.pterodactylus.fcp.PersistentRequestRemoved) - */ - public void receivedPersistentRequestRemoved(FcpConnection fcpConnection, PersistentRequestRemoved persistentRequestRemoved) { - /* TODO */ - } - - /** - * @see net.pterodactylus.fcp.FcpListener#receivedPluginInfo(net.pterodactylus.fcp.FcpConnection, - * net.pterodactylus.fcp.PluginInfo) - */ - public void receivedPluginInfo(FcpConnection fcpConnection, PluginInfo pluginInfo) { - /* TODO */ - } - - /** - * @see net.pterodactylus.fcp.FcpListener#receivedProtocolError(net.pterodactylus.fcp.FcpConnection, - * net.pterodactylus.fcp.ProtocolError) - */ - @SuppressWarnings("synthetic-access") - public void receivedProtocolError(FcpConnection fcpConnection, ProtocolError protocolError) { - if (fcpConnection != HighLevelClient.this.fcpConnection) { - return; - } - String identifier = protocolError.getIdentifier(); - if (identifier == null) { - return; - } - cancelIdentifier(identifier); - } - - /** - * @see net.pterodactylus.fcp.FcpListener#receivedPutFailed(net.pterodactylus.fcp.FcpConnection, - * net.pterodactylus.fcp.PutFailed) - */ - @SuppressWarnings("synthetic-access") - public void receivedPutFailed(FcpConnection fcpConnection, PutFailed putFailed) { - if (fcpConnection != HighLevelClient.this.fcpConnection) { - return; - } - String identifier = putFailed.getIdentifier(); - HighLevelProgressCallback downloadCallback = downloadCallbacks.get(identifier); - if (downloadCallback != null) { - DownloadResult downloadResult = downloadCallback.getIntermediaryResult(); - downloadResult.setFailed(true); - downloadResult.setFinished(true); - downloadCallback.progressUpdated(); - downloadCallback.setDone(); - } - /* TODO - check inserts */ - HighLevelProgress highLevelProgress = new HighLevelProgress(identifier, true); - fireProgressReceived(identifier, highLevelProgress); - } - - /** - * @see net.pterodactylus.fcp.FcpListener#receivedPutFetchable(net.pterodactylus.fcp.FcpConnection, - * net.pterodactylus.fcp.PutFetchable) - */ - @SuppressWarnings("synthetic-access") - public void receivedPutFetchable(FcpConnection fcpConnection, PutFetchable putFetchable) { - if (fcpConnection != HighLevelClient.this.fcpConnection) { - return; - } - String identifier = putFetchable.getIdentifier(); - /* TODO - check inserts */ - HighLevelProgress highLevelProgress = new HighLevelProgress(identifier); - highLevelProgress.setFetchable(true); - fireProgressReceived(identifier, highLevelProgress); - } - - /** - * @see net.pterodactylus.fcp.FcpListener#receivedPutSuccessful(net.pterodactylus.fcp.FcpConnection, - * net.pterodactylus.fcp.PutSuccessful) - */ - @SuppressWarnings("synthetic-access") - public void receivedPutSuccessful(FcpConnection fcpConnection, PutSuccessful putSuccessful) { - if (fcpConnection != HighLevelClient.this.fcpConnection) { - return; - } - String identifier = putSuccessful.getIdentifier(); - HighLevelProgressCallback downloadCallback = downloadCallbacks.get(identifier); - if (downloadCallback != null) { - DownloadResult downloadResult = downloadCallback.getIntermediaryResult(); - downloadResult.setFinished(true); - downloadResult.setFailed(false); - downloadCallback.progressUpdated(); - } - /* TODO - check inserts */ - HighLevelProgress highLevelProgress = new HighLevelProgress(identifier, true); - fireProgressReceived(identifier, highLevelProgress); - } - - /** - * @see net.pterodactylus.fcp.FcpListener#receivedSSKKeypair(net.pterodactylus.fcp.FcpConnection, - * net.pterodactylus.fcp.SSKKeypair) - */ - @SuppressWarnings("synthetic-access") - public void receivedSSKKeypair(FcpConnection fcpConnection, SSKKeypair sskKeypair) { - if (fcpConnection != HighLevelClient.this.fcpConnection) { - return; - } - HighLevelCallback keyGenerationCallback = keyGenerationCallbacks.remove(sskKeypair.getIdentifier()); - if (keyGenerationCallback == null) { - return; - } - KeyGenerationResult keyGenerationResult = keyGenerationCallback.getIntermediaryResult(); - keyGenerationResult.setInsertURI(sskKeypair.getInsertURI()); - keyGenerationResult.setRequestURI(sskKeypair.getRequestURI()); - keyGenerationCallback.setDone(); - } - - /** - * @see net.pterodactylus.fcp.FcpListener#receivedSimpleProgress(net.pterodactylus.fcp.FcpConnection, - * net.pterodactylus.fcp.SimpleProgress) - */ - @SuppressWarnings("synthetic-access") - public void receivedSimpleProgress(FcpConnection fcpConnection, SimpleProgress simpleProgress) { - if (fcpConnection != HighLevelClient.this.fcpConnection) { - return; - } - String identifier = simpleProgress.getIdentifier(); - HighLevelProgressCallback downloadCallback = downloadCallbacks.get(identifier); - if (downloadCallback != null) { - DownloadResult downloadResult = downloadCallback.getIntermediaryResult(); - downloadResult.setTotalBlocks(simpleProgress.getTotal()); - downloadResult.setRequiredBlocks(simpleProgress.getRequired()); - downloadResult.setSuccessfulBlocks(simpleProgress.getSucceeded()); - downloadResult.setFailedBlocks(simpleProgress.getFailed()); - downloadResult.setFatallyFailedBlocks(simpleProgress.getFatallyFailed()); - downloadResult.setTotalFinalized(simpleProgress.isFinalizedTotal()); - downloadCallback.progressUpdated(); - } - /* TODO - check inserts */ - HighLevelProgress highLevelProgress = new HighLevelProgress(identifier, simpleProgress.getTotal(), simpleProgress.getRequired(), simpleProgress.getSucceeded(), simpleProgress.getFailed(), simpleProgress.getFatallyFailed(), simpleProgress.isFinalizedTotal()); - fireProgressReceived(identifier, highLevelProgress); - } - - /** - * @see net.pterodactylus.fcp.FcpListener#receivedStartedCompression(net.pterodactylus.fcp.FcpConnection, - * net.pterodactylus.fcp.StartedCompression) - */ - public void receivedStartedCompression(FcpConnection fcpConnection, StartedCompression startedCompression) { - /* TODO */ - } - - /** - * @see net.pterodactylus.fcp.FcpListener#receivedSubscribedUSKUpdate(net.pterodactylus.fcp.FcpConnection, - * net.pterodactylus.fcp.SubscribedUSKUpdate) - */ - public void receivedSubscribedUSKUpdate(FcpConnection fcpConnection, SubscribedUSKUpdate subscribedUSKUpdate) { - /* TODO */ - } - - /** - * @see net.pterodactylus.fcp.FcpListener#receivedTestDDAComplete(net.pterodactylus.fcp.FcpConnection, - * net.pterodactylus.fcp.TestDDAComplete) - */ - @SuppressWarnings("synthetic-access") - public void receivedTestDDAComplete(FcpConnection fcpConnection, TestDDAComplete testDDAComplete) { - if (fcpConnection != HighLevelClient.this.fcpConnection) { - return; - } - String directory = testDDAComplete.getDirectory(); - if (directory == null) { - return; - } - HighLevelCallback directDiskAccessCallback = directDiskAccessCallbacks.remove(directory); - DirectDiskAccessResult directDiskAccessResult = directDiskAccessCallback.getIntermediaryResult(); - cleanFiles(directDiskAccessResult); - directDiskAccessResult.setReadAllowed(testDDAComplete.isReadDirectoryAllowed()); - directDiskAccessResult.setWriteAllowed(testDDAComplete.isWriteDirectoryAllowed()); - directDiskAccessCallback.setDone(); - } - - /** - * @see net.pterodactylus.fcp.FcpListener#receivedTestDDAReply(net.pterodactylus.fcp.FcpConnection, - * net.pterodactylus.fcp.TestDDAReply) - */ - @SuppressWarnings("synthetic-access") - public void receivedTestDDAReply(FcpConnection fcpConnection, TestDDAReply testDDAReply) { - if (fcpConnection != HighLevelClient.this.fcpConnection) { - return; - } - String directory = testDDAReply.getDirectory(); - if (directory == null) { - return; - } - DirectDiskAccessResult directDiskAccessResult = directDiskAccessCallbacks.get(directory).getIntermediaryResult(); - String readFilename = testDDAReply.getReadFilename(); - String readContent = readContent(readFilename); - String writeFilename = testDDAReply.getWriteFilename(); - String writeContent = testDDAReply.getContentToWrite(); - writeContent(directDiskAccessResult, writeFilename, writeContent); - TestDDAResponse testDDAResponse = new TestDDAResponse(directory, readContent); - try { - fcpConnection.sendMessage(testDDAResponse); - } catch (IOException e) { - /* swallow. I’m verry unhappy about this. */ - } - } - - /** - * @see net.pterodactylus.fcp.FcpListener#receivedURIGenerated(net.pterodactylus.fcp.FcpConnection, - * net.pterodactylus.fcp.URIGenerated) - */ - @SuppressWarnings("synthetic-access") - public void receivedURIGenerated(FcpConnection fcpConnection, URIGenerated uriGenerated) { - if (fcpConnection != HighLevelClient.this.fcpConnection) { - return; - } - String identifier = uriGenerated.getIdentifier(); - /* TODO - check inserts */ - HighLevelProgress highLevelProgress = new HighLevelProgress(identifier, uriGenerated.getURI()); - fireProgressReceived(identifier, highLevelProgress); - } - - /** - * @see net.pterodactylus.fcp.FcpListener#receivedUnknownNodeIdentifier(net.pterodactylus.fcp.FcpConnection, - * net.pterodactylus.fcp.UnknownNodeIdentifier) - */ - public void receivedUnknownNodeIdentifier(FcpConnection fcpConnection, UnknownNodeIdentifier unknownNodeIdentifier) { - /* TODO */ - } - - /** - * @see net.pterodactylus.fcp.FcpListener#receivedUnknownPeerNoteType(net.pterodactylus.fcp.FcpConnection, - * net.pterodactylus.fcp.UnknownPeerNoteType) - */ - public void receivedUnknownPeerNoteType(FcpConnection fcpConnection, UnknownPeerNoteType unknownPeerNoteType) { - /* TODO */ - } - - /** - * @see net.pterodactylus.fcp.FcpListener#receviedFinishedCompression(net.pterodactylus.fcp.FcpConnection, - * net.pterodactylus.fcp.FinishedCompression) - */ - public void receviedFinishedCompression(FcpConnection fcpConnection, FinishedCompression finishedCompression) { - /* TODO */ - } - - } - -} diff --git a/src/net/pterodactylus/fcp/highlevel/HighLevelClientListener.java b/src/net/pterodactylus/fcp/highlevel/HighLevelClientListener.java deleted file mode 100644 index a84c28c..0000000 --- a/src/net/pterodactylus/fcp/highlevel/HighLevelClientListener.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * jFCPlib-high-level-client - HighLevelClientListener.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.highlevel; - -import java.util.EventListener; - -/** - * Interface for objects that want to be notified on certain high-level client - * events. - * - * @author David ‘Bombe’ Roden <bombe@freenetproject.org> - */ -public interface HighLevelClientListener extends EventListener { - - /** - * Notifies a listener that the given high-level client was connected to the - * node. - * - * @param highLevelClient - * The client that was connected - */ - public void clientConnected(HighLevelClient highLevelClient); - - /** - * Notifies a listener that the given client was disconnected from the node. - * - * @param highLevelClient - * The client that was disconnected - * @param throwable - * The exception that caused the disconnect, or null - * if no exception occured - */ - public void clientDisconnected(HighLevelClient highLevelClient, Throwable throwable); - -} diff --git a/src/net/pterodactylus/fcp/highlevel/HighLevelException.java b/src/net/pterodactylus/fcp/highlevel/HighLevelException.java deleted file mode 100644 index bed3ad5..0000000 --- a/src/net/pterodactylus/fcp/highlevel/HighLevelException.java +++ /dev/null @@ -1,54 +0,0 @@ -/** - * - */ - -package net.pterodactylus.fcp.highlevel; - -/** - * Base exception for high-level client exceptions. - * - * @author David ‘Bombe’ Roden <bombe@freenetproject.org> - */ -public class HighLevelException extends Exception { - - /** - * Creates a new high-level client exception. - */ - public HighLevelException() { - super(); - } - - /** - * Creates a new high-level client exception with the given message. - * - * @param message - * The message of the exception - */ - public HighLevelException(String message) { - super(message); - } - - /** - * Creates a new high-level client exception with the given cause. - * - * @param cause - * The cause of the exception - */ - public HighLevelException(Throwable cause) { - super(cause); - } - - /** - * Creates a new high-level client exception with the given message and - * cause. - * - * @param message - * The message of the exception - * @param cause - * The cause of the exception - */ - public HighLevelException(String message, Throwable cause) { - super(message, cause); - } - -} diff --git a/src/net/pterodactylus/fcp/highlevel/HighLevelProgress.java b/src/net/pterodactylus/fcp/highlevel/HighLevelProgress.java deleted file mode 100644 index 6a71de6..0000000 --- a/src/net/pterodactylus/fcp/highlevel/HighLevelProgress.java +++ /dev/null @@ -1,325 +0,0 @@ -/* - * jFCPlib-high-level-client - HighLevelContinuosResult.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.highlevel; - -/** - * Result for operations that send progress messages until they have completed. - * The fields of the progress message has to be checked in given order because - * if you receive this progress asynchronously via a - * {@link HighLevelProgressListener} the progress will not have any state, you - * will simply get the latest results, with other fields unset. First you should - * check whether {@link #isFinished()} returns true. If it does, - * the request is finished and {@link #isFailed()} will tell you whether the - * request has failed or succeeded. Other fields are not set. If the request is - * not yet finished, {@link #isFetchable()} will tell you whether the request - * has progressed to a state that allows other clients to fetch the inserted - * data. This is of course only valid for Put and PutDir requests. Alternatively - * {@link #getURI()} can return a non-null value which signals - * that the request generated a URI. If none of those methods return - * true, you can use the block count methods to get detailed - * progress statistics. When progress you received is a {@link DownloadResult} - * you do not need to check - * - * @author David ‘Bombe’ Roden <bombe@freenetproject.org> - */ -public class HighLevelProgress extends HighLevelResult { - - /** Whether the request is finished. */ - private boolean finished; - - /** Whether a Put request should be fetchable now. */ - private boolean fetchable; - - /** The generated URI, in case of a Put request. */ - private String uri; - - /** The number of total blocks. */ - private int totalBlocks; - - /** The number of required blocks. */ - private int requiredBlocks; - - /** The number of successfully transferred blocks. */ - private int successfulBlocks; - - /** The number of failed blocks. */ - private int failedBlocks; - - /** The number of fatally failed blocks. */ - private int fatallyFailedBlocks; - - /** Whether the total number is finalized. */ - private boolean totalFinalized; - - /** - * Package-private constructor. - * - * @param identifier - * The identifier of the request - */ - public HighLevelProgress(String identifier) { - super(identifier); - } - - /** - * Creates a new high-level progress for a request that is finished. - * - * @param identifier - * The identifier of the request - * @param successful - * true if the request finished successfully, - * false otherwise - */ - public HighLevelProgress(String identifier, boolean successful) { - this(identifier); - finished = true; - setFailed(!successful); - } - - /** - * Creates a new high-level progress for a Put or PutDir request that - * generated a URI. - * - * @param identifier - * The identifier of the request - * @param uri - * The URI of the request - */ - public HighLevelProgress(String identifier, String uri) { - this(identifier); - this.uri = uri; - } - - /** - * Creates a new high-level progress with the given values. - * - * @param identifier - * The identifier of the request - * @param totalBlocks - * The total number of blocks - * @param requiredBlocks - * The number of required blocks - * @param successfulBlocks - * The number of successful blocks - * @param failedBlocks - * The number of failed blocks - * @param fatallyFailedBlocks - * The number of fatally failed blocks - * @param totalFinalized - * true if the total number of blocks is - * finalized, false otherwise - */ - public HighLevelProgress(String identifier, int totalBlocks, int requiredBlocks, int successfulBlocks, int failedBlocks, int fatallyFailedBlocks, boolean totalFinalized) { - this(identifier); - this.totalBlocks = totalBlocks; - this.requiredBlocks = requiredBlocks; - this.successfulBlocks = successfulBlocks; - this.failedBlocks = failedBlocks; - this.fatallyFailedBlocks = fatallyFailedBlocks; - this.totalFinalized = totalFinalized; - } - - /** - * Returns whether this progress means that a request has finished. Use - * {@link #isFailed()} to check if the request failed. - * - * @see #isFailed() - * @return true if the request has finished - */ - public boolean isFinished() { - return finished; - } - - /** - * Sets whether the request described by this progress has finished. - * - * @param finished - * true if the request has finished, - * false otherwise - */ - void setFinished(boolean finished) { - this.finished = finished; - } - - /** - * Returns whether the request should be fetchable now, in case it was a Put - * request. - * - * @return true if the request should be fetchable now, - * false otherwise - */ - public boolean isFetchable() { - return fetchable; - } - - /** - * Sets whether the request should be fetchable now, in case it was a Put - * request. - * - * @param fetchable - * true if the request should be fetchable now, - * false otherwise - */ - void setFetchable(boolean fetchable) { - this.fetchable = fetchable; - } - - /** - * Returns the URI that was generated by the request. Of course only Put and - * PutDir requests will generated URIs. - * - * @return The generated URI - */ - public String getURI() { - return uri; - } - - /** - * Sets the URI generated by the request. - * - * @param uri - * The generated URI - */ - void setURI(String uri) { - this.uri = uri; - } - - /** - * Returns the number of total blocks. - * - * @return The number of total blocks - */ - public int getTotalBlocks() { - return totalBlocks; - } - - /** - * Sets the number of total blocks. - * - * @param totalBlocks - * The number of total blocks - */ - void setTotalBlocks(int totalBlocks) { - this.totalBlocks = totalBlocks; - } - - /** - * Returns the number of required blocks. For downloads, this number is - * smaller than {@link #getTotalBlocks()}. - * - * @return The number of required blocks - */ - public int getRequiredBlocks() { - return requiredBlocks; - } - - /** - * Sets the number of required blocks. - * - * @param requiredBlocks - * The number of required blocks - */ - void setRequiredBlocks(int requiredBlocks) { - this.requiredBlocks = requiredBlocks; - } - - /** - * Returns the number of successfully transferred blocks. - * - * @return The number of successfully transferred blocks - */ - public int getSuccessfulBlocks() { - return successfulBlocks; - } - - /** - * Sets the number of successfully transferred blocks. - * - * @param successfulBlocks - * The number of successfully transferred blocks - */ - void setSuccessfulBlocks(int successfulBlocks) { - this.successfulBlocks = successfulBlocks; - } - - /** - * Returns the number of failed blocks. Blocks that have failed can be - * retried. - * - * @return The number of failed blocks - */ - public int getFailedBlocks() { - return failedBlocks; - } - - /** - * Sets the number of failed blocks. - * - * @param failedBlocks - * The number of failed blocks - */ - void setFailedBlocks(int failedBlocks) { - this.failedBlocks = failedBlocks; - } - - /** - * Returns the number of fatally failed blocks. Fatally failed blocks will - * never complete, even with endless retries. - * - * @return The number of fatally failed blocks - */ - public int getFatallyFailedBlocks() { - return fatallyFailedBlocks; - } - - /** - * Sets the number of fatally failed blocks. - * - * @param fatallyFailedBlocks - * The number fatally failed blocks - */ - void setFatallyFailedBlocks(int fatallyFailedBlocks) { - this.fatallyFailedBlocks = fatallyFailedBlocks; - } - - /** - * Returns whether the result of {@link #getTotalBlocks()} is final, i.e. it - * won’t change anymore. - * - * @return true if the result of {@link #getTotalBlocks()} is - * final, false otherwise - */ - public boolean isTotalFinalized() { - return totalFinalized; - } - - /** - * Sets whether the result of {@link #getTotalBlocks()} is final, i.e. it - * won’t change anymore. - * - * @param totalFinalized - * true if the result of {@link #getTotalBlocks()} - * is final, false otherwise - */ - void setTotalFinalized(boolean totalFinalized) { - this.totalFinalized = totalFinalized; - } - -} diff --git a/src/net/pterodactylus/fcp/highlevel/HighLevelProgressCallback.java b/src/net/pterodactylus/fcp/highlevel/HighLevelProgressCallback.java deleted file mode 100644 index a35766a..0000000 --- a/src/net/pterodactylus/fcp/highlevel/HighLevelProgressCallback.java +++ /dev/null @@ -1,126 +0,0 @@ -/* - * jFCPlib-high-level-client - HighLevelContinousCallback.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.highlevel; - -import java.util.ArrayList; -import java.util.List; - -/** - * Callback for an operation that sends progress messages before completion. - * - * @param - *

- * The type of the high-level progress - * @author David ‘Bombe’ Roden <bombe@freenetproject.org> - */ -public class HighLevelProgressCallback

extends HighLevelCallback

{ - - /** Callback listeners. */ - private final List> highLevelContinuousCallbackListeners = new ArrayList>(); - - /** - * Creates a new continuous callback with the given result. - * - * @see HighLevelCallback#HighLevelCallback(HighLevelResult) - * @param progress - * The result of the operation - */ - HighLevelProgressCallback(P progress) { - super(progress); - } - - // - // EVENT MANAGEMENT - // - - /** - * Adds a callback listener to this callback. - * - * @param highLevelContinuousCallbackListener - * The callback listener to add - */ - public void addHighLevelContinuousCallbackListener(HighLevelProgressCallbackListener

highLevelContinuousCallbackListener) { - highLevelContinuousCallbackListeners.add(highLevelContinuousCallbackListener); - fireGotProgress(); - } - - /** - * Removes a callback listener from this callback. - * - * @param highLevelContinuousCallbackListener - * The callback listener to remove - */ - public void removeHighLevelContinuousCallbackListener(HighLevelProgressCallbackListener

highLevelContinuousCallbackListener) { - highLevelContinuousCallbackListeners.remove(highLevelContinuousCallbackListener); - } - - /** - * Notifies all listeners that progress results have been received. - */ - private void fireGotProgress() { - for (HighLevelProgressCallbackListener

highLevelContinuousCallbackListener: highLevelContinuousCallbackListeners) { - highLevelContinuousCallbackListener.gotProgress(this); - } - } - - // - // ACCESSORS - // - - /** - * Waits for the next progress on this callback. Completion of the result - * also counts as progress. - * - * @throws InterruptedException - * if {@link Object#wait()} is interrupted - */ - public void waitForProgress() throws InterruptedException { - synchronized (syncObject) { - syncObject.wait(); - } - } - - /** - * Waits for the given amount of time (in milliseconds) for the next - * progress on this callback. Completion of the result also counts as - * progress. - * - * @param waitTime - * The maximum time to wait for progress - * @throws InterruptedException - * if {@link Object#wait()} is interrupted - */ - public void waitForProgress(long waitTime) throws InterruptedException { - synchronized (syncObject) { - syncObject.wait(waitTime); - } - } - - /** - * Notifies all listeners that the progress was updated. - */ - void progressUpdated() { - synchronized (syncObject) { - syncObject.notify(); - } - fireGotProgress(); - } - -} diff --git a/src/net/pterodactylus/fcp/highlevel/HighLevelProgressCallbackListener.java b/src/net/pterodactylus/fcp/highlevel/HighLevelProgressCallbackListener.java deleted file mode 100644 index e0683fb..0000000 --- a/src/net/pterodactylus/fcp/highlevel/HighLevelProgressCallbackListener.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * jFCPlib-high-level-client - HighLevelContinuousCallbackListener.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.highlevel; - -/** - * Interface for objects that want to be notified as soon as a lengthy operation - * made some progress. - * - * @param - *

- * The type of the high-level progress - * @author David ‘Bombe’ Roden <bombe@freenetproject.org> - * @version $Id: HighLevelContinuousCallbackListener.java 29 2008-04-15 - * 23:15:49Z bombe $ - */ -public interface HighLevelProgressCallbackListener

extends HighLevelCallbackListener

{ - - /** - * Notifies a listener that a progress message has been received. - * - * @param highLevelContinuousCallback - * The callback that made the progress - */ - public void gotProgress(HighLevelProgressCallback

highLevelContinuousCallback); - -} diff --git a/src/net/pterodactylus/fcp/highlevel/HighLevelProgressListener.java b/src/net/pterodactylus/fcp/highlevel/HighLevelProgressListener.java deleted file mode 100644 index a438d68..0000000 --- a/src/net/pterodactylus/fcp/highlevel/HighLevelProgressListener.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * jFCPlib-high-level-client - HighLevelProgressListener.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.highlevel; - -import java.util.EventListener; - -/** - * Interface for objects that want to observe the progression of requests. - * - * @author David ‘Bombe’ Roden <bombe@freenetproject.org> - */ -public interface HighLevelProgressListener extends EventListener { - - /** - * Notifies a listener that the request with the given identifier has made - * some progress. - * - * @param highLevelClient - * The high-level client that emitted this event - * @param identifier - * The identifier of the request - * @param highLevelProgress - * The progress of the request - */ - public void progressReceived(HighLevelClient highLevelClient, String identifier, HighLevelProgress highLevelProgress); - -} diff --git a/src/net/pterodactylus/fcp/highlevel/HighLevelResult.java b/src/net/pterodactylus/fcp/highlevel/HighLevelResult.java deleted file mode 100644 index 87085e2..0000000 --- a/src/net/pterodactylus/fcp/highlevel/HighLevelResult.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * fcplib - HighLevelResult.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.highlevel; - -/** - * Base class for results of {@link HighLevelClient} operations. - * - * @author David ‘Bombe’ Roden <bombe@freenetproject.org> - */ -public abstract class HighLevelResult { - - /** The identifier of the request. */ - private final String identifier; - - /** Whether the operation failed. */ - private boolean failed; - - /** - * Package-private constructor. - * - * @param identifier - * The identifier of the request - */ - HighLevelResult(String identifier) { - this.identifier = identifier; - } - - /** - * Returns the identifier of the underlying request. - * - * @return The identifier of the request - */ - public String getIdentifier() { - return identifier; - } - - /** - * Returns whether the operation failed. - * - * @return true if the operation failed, false - * otherwise - */ - public boolean isFailed() { - return failed; - } - - /** - * Sets whether the operation failed. - * - * @param failed - * true if the operation failed, - * false otherwise - */ - void setFailed(boolean failed) { - this.failed = failed; - } - -} diff --git a/src/net/pterodactylus/fcp/highlevel/KeyGenerationResult.java b/src/net/pterodactylus/fcp/highlevel/KeyGenerationResult.java deleted file mode 100644 index dd3a455..0000000 --- a/src/net/pterodactylus/fcp/highlevel/KeyGenerationResult.java +++ /dev/null @@ -1,83 +0,0 @@ -/* - * jFCPlib-high-level-client - KeyGenerationResult.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.highlevel; - -/** - * Result of a {@link HighLevelClient#generateKey()} operation. - * - * @author David ‘Bombe’ Roden <bombe@freenetproject.org> - */ -public class KeyGenerationResult extends HighLevelResult { - - /** The insert URI. */ - private String insertURI; - - /** The request URI. */ - private String requestURI; - - /** - * Package-private constructor. - * - * @param identifier - * The identifier of the request - */ - KeyGenerationResult(String identifier) { - super(identifier); - } - - /** - * Returns the insert URI. - * - * @return The insert URI - */ - public String getInsertURI() { - return insertURI; - } - - /** - * Sets the insert URI. - * - * @param insertURI - * The insert URI - */ - void setInsertURI(String insertURI) { - this.insertURI = insertURI; - } - - /** - * Returns the request URI. - * - * @return The request URI - */ - public String getRequestURI() { - return requestURI; - } - - /** - * Sets the request URI. - * - * @param requestURI - * The request URI - */ - void setRequestURI(String requestURI) { - this.requestURI = requestURI; - } - -} diff --git a/src/net/pterodactylus/fcp/highlevel/NotConnectedException.java b/src/net/pterodactylus/fcp/highlevel/NotConnectedException.java deleted file mode 100644 index ecfd14b..0000000 --- a/src/net/pterodactylus/fcp/highlevel/NotConnectedException.java +++ /dev/null @@ -1,54 +0,0 @@ -/** - * - */ - -package net.pterodactylus.fcp.highlevel; - -/** - * Exception that is thrown when an operation is tried on a not connected - * connection. - * - * @author David ‘Bombe’ Roden <bombe@freenetproject.org> - */ -public class NotConnectedException extends HighLevelException { - - /** - * Creates a new not-connected exception. - */ - public NotConnectedException() { - super(); - } - - /** - * Creates a new not-connected exception with the given message. - * - * @param message - * The message of the exception - */ - public NotConnectedException(String message) { - super(message); - } - - /** - * Creates a new not-connected exception with the given cause. - * - * @param cause - * The cause of the exception - */ - public NotConnectedException(Throwable cause) { - super(cause); - } - - /** - * Creates a new not-connected exception with the given message and cause. - * - * @param message - * The message of the exception - * @param cause - * The cause of the exception - */ - public NotConnectedException(String message, Throwable cause) { - super(message, cause); - } - -} diff --git a/src/net/pterodactylus/fcp/highlevel/PeerListResult.java b/src/net/pterodactylus/fcp/highlevel/PeerListResult.java deleted file mode 100644 index 96ba3be..0000000 --- a/src/net/pterodactylus/fcp/highlevel/PeerListResult.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * jFCPlib-high-level-client - PeerListResult.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.highlevel; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -import net.pterodactylus.fcp.Peer; - -/** - * The result of a {@link HighLevelClient#getPeers()} operation. - * - * @author David ‘Bombe’ Roden <bombe@freenetproject.org> - */ -public class PeerListResult extends HighLevelResult implements Iterable { - - /** The list of peers. */ - private final List peers = new ArrayList(); - - /** - * Package-private constructor. - * - * @param identifier - * The identifier of the request - */ - PeerListResult(String identifier) { - super(identifier); - } - - /** - * Adds a peer to the list. - * - * @param peer - * The peer to add - */ - void addPeer(Peer peer) { - peers.add(peer); - } - - /** - * {@inheritDoc} - */ - public Iterator iterator() { - return peers.iterator(); - } - - /** - * Returns the peer at the given index. - * - * @param index - * The index of the peer - * @return The peer - * @see java.util.List#get(int) - */ - public Peer get(int index) { - return peers.get(index); - } - - /** - * Returns the size of the peer list. - * - * @return The size of the peer list - * @see java.util.List#size() - */ - public int size() { - return peers.size(); - } - -} diff --git a/src/net/pterodactylus/fcp/highlevel/PeerResult.java b/src/net/pterodactylus/fcp/highlevel/PeerResult.java deleted file mode 100644 index 9785f5b..0000000 --- a/src/net/pterodactylus/fcp/highlevel/PeerResult.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * jFCPlib-high-level-client - PeerResult.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.highlevel; - -import net.pterodactylus.fcp.Peer; - -/** - * The peer result is the result of several operations: - * {@link HighLevelClient#addPeer(String)}, - * {@link HighLevelClient#addPeer(java.net.URL)}, or - * {@link HighLevelClient#addPeer(net.pterodactylus.fcp.NodeRef)}. - * - * @author David ‘Bombe’ Roden <bombe@freenetproject.org> - */ -public class PeerResult extends HighLevelResult { - - /** The peer. */ - private Peer peer; - - /** - * Package-private constructor. - * - * @param identifier - * The identifier of the request - */ - PeerResult(String identifier) { - super(identifier); - } - - /** - * Returns the peer. - * - * @return The peer - */ - public Peer getPeer() { - return peer; - } - - /** - * Sets the peer. - * - * @param peer - * The peer - */ - void setPeer(Peer peer) { - this.peer = peer; - } - -} diff --git a/src/net/pterodactylus/fcp/highlevel/PutDirRequestResult.java b/src/net/pterodactylus/fcp/highlevel/PutDirRequestResult.java deleted file mode 100644 index 950999d..0000000 --- a/src/net/pterodactylus/fcp/highlevel/PutDirRequestResult.java +++ /dev/null @@ -1,169 +0,0 @@ -/* - * jFCPlib-high-level-client - PutDirRequestResult.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.highlevel; - -import net.pterodactylus.fcp.PersistentPutDir; -import net.pterodactylus.fcp.Priority; -import net.pterodactylus.fcp.UploadFrom; -import net.pterodactylus.fcp.Verbosity; - -/** - * A PutDir request result is generated by {@link HighLevelClient#getRequests()}. - * - * @author David ‘Bombe’ Roden <bombe@freenetproject.org> - */ -public class PutDirRequestResult extends RequestResult { - - /** The wrapped PersistentPutDir FCP message. */ - private final PersistentPutDir persistentPutDir; - - /** - * Creates a new PutDir request result. - * - * @param persistentPutDir - * The PersistentPutDir FCP message to wrap - */ - public PutDirRequestResult(PersistentPutDir persistentPutDir) { - super(persistentPutDir.getIdentifier()); - this.persistentPutDir = persistentPutDir; - } - - /** - * Returns the number of files in the request. - * - * @return The number of files - * @see net.pterodactylus.fcp.PersistentPutDir#getFileCount() - */ - public int getFileCount() { - return persistentPutDir.getFileCount(); - } - - /** - * Returns the length of the file at the given index. - * - * @param fileIndex - * The index of the file - * @return The length of the file - * @see net.pterodactylus.fcp.PersistentPutDir#getFileDataLength(int) - */ - public long getFileDataLength(int fileIndex) { - return persistentPutDir.getFileDataLength(fileIndex); - } - - /** - * Returns the name of the file at the given index. - * - * @param fileIndex - * The index of the file - * @return The name of the file - * @see net.pterodactylus.fcp.PersistentPutDir#getFileFilename(int) - */ - public String getFileFilename(int fileIndex) { - return persistentPutDir.getFileFilename(fileIndex); - } - - /** - * Returns the content type of the file at the given index. - * - * @param fileIndex - * The index of the file - * @return The content type of the file - * @see net.pterodactylus.fcp.PersistentPutDir#getFileMetadataContentType(int) - */ - public String getFileMetadataContentType(int fileIndex) { - return persistentPutDir.getFileMetadataContentType(fileIndex); - } - - /** - * Returns the name of the file at the given index. - * - * @param fileIndex - * The index of the file - * @return The name of the file - * @see net.pterodactylus.fcp.PersistentPutDir#getFileName(int) - */ - public String getFileName(int fileIndex) { - return persistentPutDir.getFileName(fileIndex); - } - - /** - * Returns the upload source of the file at the given index. - * - * @param fileIndex - * The index of the file - * @return The upload source of the file - * @see net.pterodactylus.fcp.PersistentPutDir#getFileUploadFrom(int) - */ - public UploadFrom getFileUploadFrom(int fileIndex) { - return persistentPutDir.getFileUploadFrom(fileIndex); - } - - /** - * Returns the maximum number of retries for failed blocks. - * - * @return The maximum number of retries - * @see net.pterodactylus.fcp.PersistentPutDir#getMaxRetries() - */ - public int getMaxRetries() { - return persistentPutDir.getMaxRetries(); - } - - /** - * Returns the priority of the request. - * - * @return The priority - * @see net.pterodactylus.fcp.PersistentPutDir#getPriority() - */ - public Priority getPriority() { - return persistentPutDir.getPriority(); - } - - /** - * Returns the URI of the request. - * - * @return The URI of the request - * @see net.pterodactylus.fcp.PersistentPutDir#getURI() - */ - public String getURI() { - return persistentPutDir.getURI(); - } - - /** - * Returns the verbosity of the request. - * - * @return The verbosity - * @see net.pterodactylus.fcp.PersistentPutDir#getVerbosity() - */ - public Verbosity getVerbosity() { - return persistentPutDir.getVerbosity(); - } - - /** - * Returns whether the request is on the global queue. - * - * @return true if the request is on the global queue, - * false if it is on the client-local queue - * @see net.pterodactylus.fcp.PersistentPutDir#isGlobal() - */ - public boolean isGlobal() { - return persistentPutDir.isGlobal(); - } - -} diff --git a/src/net/pterodactylus/fcp/highlevel/PutRequestResult.java b/src/net/pterodactylus/fcp/highlevel/PutRequestResult.java deleted file mode 100644 index 1bd2e78..0000000 --- a/src/net/pterodactylus/fcp/highlevel/PutRequestResult.java +++ /dev/null @@ -1,171 +0,0 @@ -/* - * jFCPlib-high-level-client - PutRequestResult.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.highlevel; - -import net.pterodactylus.fcp.Persistence; -import net.pterodactylus.fcp.PersistentPut; -import net.pterodactylus.fcp.Priority; -import net.pterodactylus.fcp.UploadFrom; -import net.pterodactylus.fcp.Verbosity; - -/** - * A put request result will be contained in a {@link RequestListResult}. - * - * @author David ‘Bombe’ Roden <bombe@freenetproject.org> - */ -public class PutRequestResult extends RequestResult { - - /** The wrapped PersistentPut FCP message. */ - private final PersistentPut persistentPut; - - /** - * Creates a new put request result. - * - * @param persistentPut - * The PersistentPut FCP message to wrap - */ - public PutRequestResult(PersistentPut persistentPut) { - super(persistentPut.getIdentifier()); - this.persistentPut = persistentPut; - } - - /** - * Returns the client token associated with the request. - * - * @return The client token - * @see net.pterodactylus.fcp.PersistentPut#getClientToken() - */ - public String getClientToken() { - return persistentPut.getClientToken(); - } - - /** - * Returns the length of the data to be inserted. - * - * @return The length of the data - * @see net.pterodactylus.fcp.PersistentPut#getDataLength() - */ - public long getDataLength() { - return persistentPut.getDataLength(); - } - - /** - * Returns the maximum number of retries for failed blocks. - * - * @return The maximum number of retries - * @see net.pterodactylus.fcp.PersistentPut#getMaxRetries() - */ - public int getMaxRetries() { - return persistentPut.getMaxRetries(); - } - - /** - * Returns the content type of the data. - * - * @return The content type of the data - * @see net.pterodactylus.fcp.PersistentPut#getMetadataContentType() - */ - public String getMetadataContentType() { - return persistentPut.getMetadataContentType(); - } - - /** - * Returns the persistence level of the request. - * - * @return The persistence level - * @see net.pterodactylus.fcp.PersistentPut#getPersistence() - */ - public Persistence getPersistence() { - return persistentPut.getPersistence(); - } - - /** - * Returns the priority of the request. - * - * @return The priority - * @see net.pterodactylus.fcp.PersistentPut#getPriority() - */ - public Priority getPriority() { - return persistentPut.getPriority(); - } - - /** - * Returns the target filename of the request - * - * @return The target filename - * @see net.pterodactylus.fcp.PersistentPut#getTargetFilename() - */ - public String getTargetFilename() { - return persistentPut.getTargetFilename(); - } - - /** - * Returns the upload source of the request. - * - * @return The upload source - * @see net.pterodactylus.fcp.PersistentPut#getUploadFrom() - */ - public UploadFrom getUploadFrom() { - return persistentPut.getUploadFrom(); - } - - /** - * Returns the URI of the request. - * - * @return The URI - * @see net.pterodactylus.fcp.PersistentPut#getURI() - */ - public String getURI() { - return persistentPut.getURI(); - } - - /** - * Returns the verbosity of the request. - * - * @return The verbosity - * @see net.pterodactylus.fcp.PersistentPut#getVerbosity() - */ - public Verbosity getVerbosity() { - return persistentPut.getVerbosity(); - } - - /** - * Returns whether the request is on the global queue. - * - * @return true if the request is on the global queue, - * false if it is on the client-local queue - * @see net.pterodactylus.fcp.PersistentPut#isGlobal() - */ - public boolean isGlobal() { - return persistentPut.isGlobal(); - } - - /** - * Returns whether the request has already started. - * - * @return true if the request has started, - * false otherwise - * @see net.pterodactylus.fcp.PersistentPut#isStarted() - */ - public boolean isStarted() { - return persistentPut.isStarted(); - } - -} diff --git a/src/net/pterodactylus/fcp/highlevel/RequestListResult.java b/src/net/pterodactylus/fcp/highlevel/RequestListResult.java deleted file mode 100644 index adb8f7a..0000000 --- a/src/net/pterodactylus/fcp/highlevel/RequestListResult.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * jFCPlib-high-level-client - RequestListResult.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.highlevel; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; - -/** - * The request list results lists all currently running requests on a node. - * - * @author David ‘Bombe’ Roden <bombe@freenetproject.org> - */ -public class RequestListResult extends HighLevelResult implements Iterable { - - /** The request results. */ - private List requestResults = Collections.synchronizedList(new ArrayList()); - - /** - * Creates a new request list result. - * - * @param identifier - * The identifier of the request - */ - RequestListResult(String identifier) { - super(identifier); - } - - /** - * Adds a request result. - * - * @param requestResult - * The request result to add - */ - void addRequestResult(RequestResult requestResult) { - requestResults.add(requestResult); - } - - /** - * {@inheritDoc} - */ - public Iterator iterator() { - return requestResults.iterator(); - } - - /** - * Returns the request result at the given index. - * - * @param index - * The index of the request result - * @return The request result - */ - public RequestResult get(int index) { - return requestResults.get(index); - } - - /** - * Returns the number of request results in this request list. - * - * @return The number of request results - */ - public int size() { - return requestResults.size(); - } - -} diff --git a/src/net/pterodactylus/fcp/highlevel/RequestResult.java b/src/net/pterodactylus/fcp/highlevel/RequestResult.java deleted file mode 100644 index 7072325..0000000 --- a/src/net/pterodactylus/fcp/highlevel/RequestResult.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * jFCPlib-high-level-client - RequestResult.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.highlevel; - -/** - * A request result is the result of different operations, e.g. - * {@link HighLevelClient#getRequests()}. - * - * @author David ‘Bombe’ Roden <bombe@freenetproject.org> - */ -public class RequestResult extends HighLevelResult { - - /** - * Creates a new request result. - * - * @param identifier - * The identifier of the request - */ - RequestResult(String identifier) { - super(identifier); - } - -} diff --git a/src/net/pterodactylus/fcp/highlevel/package-info.java b/src/net/pterodactylus/fcp/highlevel/package-info.java deleted file mode 100644 index 27aee51..0000000 --- a/src/net/pterodactylus/fcp/highlevel/package-info.java +++ /dev/null @@ -1,5 +0,0 @@ -/** - * This package contains the high-level client API. - */ - -package net.pterodactylus.fcp.highlevel; \ No newline at end of file