X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fnet%2Fpterodactylus%2Ffcp%2Fhighlevel%2FFcpClient.java;h=dae7546f8e39fcc673a6bd778a1ef64b91afbbdb;hb=5a6f76df163e8fb00a36bb14088cab8f36c94f13;hp=1b695e9d7b66e3a70b82670e8be206cc176fe415;hpb=b782bfe5ddfe62489591eda0537a9c335ed4c624;p=jFCPlib.git diff --git a/src/net/pterodactylus/fcp/highlevel/FcpClient.java b/src/net/pterodactylus/fcp/highlevel/FcpClient.java index 1b695e9..dae7546 100644 --- a/src/net/pterodactylus/fcp/highlevel/FcpClient.java +++ b/src/net/pterodactylus/fcp/highlevel/FcpClient.java @@ -33,12 +33,14 @@ import net.pterodactylus.fcp.ClientHello; import net.pterodactylus.fcp.CloseConnectionDuplicateClientName; import net.pterodactylus.fcp.EndListPeerNotes; import net.pterodactylus.fcp.EndListPeers; +import net.pterodactylus.fcp.EndListPersistentRequests; import net.pterodactylus.fcp.FcpAdapter; import net.pterodactylus.fcp.FcpConnection; import net.pterodactylus.fcp.FcpListener; import net.pterodactylus.fcp.GenerateSSK; import net.pterodactylus.fcp.ListPeerNotes; import net.pterodactylus.fcp.ListPeers; +import net.pterodactylus.fcp.ListPersistentRequests; import net.pterodactylus.fcp.ModifyPeer; import net.pterodactylus.fcp.ModifyPeerNote; import net.pterodactylus.fcp.NodeHello; @@ -46,9 +48,11 @@ 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.ProtocolError; import net.pterodactylus.fcp.RemovePeer; import net.pterodactylus.fcp.SSKKeypair; +import net.pterodactylus.fcp.WatchGlobal; import net.pterodactylus.util.thread.ObjectWrapper; /** @@ -535,6 +539,56 @@ public class FcpClient { } // + // REQUEST MANAGEMENT + // + + /** + * Returns all currently visible persistent get requests. + * + * @param global + * true to return get requests from the global + * queue, false to only show requests from the + * client-local queue + * @return All get requests + * @throws IOException + * if an I/O error occurs + * @throws FcpException + * if an FCP error occurs + */ + public Set getGetRequests(final boolean global) throws IOException, FcpException { + final Set getRequests = Collections.synchronizedSet(new HashSet()); + new ExtendedFcpAdapter() { + + /** + * {@inheritDoc} + */ + @Override + @SuppressWarnings("synthetic-access") + public void run() throws IOException { + fcpConnection.sendMessage(new WatchGlobal(global)); + fcpConnection.sendMessage(new ListPersistentRequests()); + } + + /** + * {@inheritDoc} + */ + @Override + public void receivedPersistentGet(FcpConnection fcpConnection, PersistentGet persistentGet) { + getRequests.add(persistentGet); + } + + /** + * {@inheritDoc} + */ + @Override + public void receivedEndListPersistentRequests(FcpConnection fcpConnection, EndListPersistentRequests endListPersistentRequests) { + completionLatch.countDown(); + } + }.execute(); + return getRequests; + } + + // // PRIVATE METHODS //