X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fnet%2Fpterodactylus%2Futil%2Ffcp%2FFcpConnection.java;h=96f2ea0e903208212335e9a53c1cbe5b2dbde98d;hb=0359699e221ebba2fa6cb4c6297f9874edcefcc3;hp=dabb542618ad3a3c3a2b465ecedbe5d6217e7f91;hpb=59ca7b4d7186dd08109ca405c897cb2a980b9935;p=jSite2.git diff --git a/src/net/pterodactylus/util/fcp/FcpConnection.java b/src/net/pterodactylus/util/fcp/FcpConnection.java index dabb542..96f2ea0 100644 --- a/src/net/pterodactylus/util/fcp/FcpConnection.java +++ b/src/net/pterodactylus/util/fcp/FcpConnection.java @@ -29,6 +29,7 @@ import java.util.ArrayList; import java.util.List; import net.pterodactylus.util.io.Closer; +import net.pterodactylus.util.io.LimitedInputStream; /** * An FCP connection to a Freenet node. @@ -261,6 +262,7 @@ public class FcpConnection { /** * Notifies all listeners that a “TestDDAReply” message was received. * + * @see FcpListener#receivedTestDDAReply(FcpConnection, TestDDAReply) * @param testDDAReply * The “TestDDAReply” message */ @@ -273,6 +275,7 @@ public class FcpConnection { /** * Notifies all listeners that a “TestDDAComplete” message was received. * + * @see FcpListener#receivedTestDDAComplete(FcpConnection, TestDDAComplete) * @param testDDAComplete * The “TestDDAComplete” message */ @@ -283,6 +286,56 @@ public class FcpConnection { } /** + * Notifies all listeners that a “PersistentPut” message was received. + * + * @see FcpListener#receivedPersistentPut(FcpConnection, PersistentPut) + * @param persistentPut + * The “PersistentPut” message + */ + private void fireReceivedPersistentPut(PersistentPut persistentPut) { + for (FcpListener fcpListener: fcpListeners) { + fcpListener.receivedPersistentPut(this, persistentPut); + } + } + + /** + * Notifies all listeners that a “EndListPersistentRequests” message was + * received. + * + * @param endListPersistentRequests + * The “EndListPersistentRequests” message + */ + private void fireReceivedEndListPersistentRequests(EndListPersistentRequests endListPersistentRequests) { + for (FcpListener fcpListener: fcpListeners) { + fcpListener.receivedEndListPersistentRequests(this, endListPersistentRequests); + } + } + + /** + * Notifies all listeners that a “URIGenerated” message was received. + * + * @param uriGenerated + * The “URIGenerated” message + */ + private void fireReceivedURIGenerated(URIGenerated uriGenerated) { + for (FcpListener fcpListener: fcpListeners) { + fcpListener.receivedURIGenerated(this, uriGenerated); + } + } + + /** + * Notifies all listeners that an “AllData” message was received. + * + * @param allData + * The “AllData” message + */ + private void fireReceivedAllData(AllData allData) { + for (FcpListener fcpListener: fcpListeners) { + fcpListener.receivedAllData(this, allData); + } + } + + /** * Notifies all listeners that a “ProtocolError” message was received. * * @param protocolError @@ -370,10 +423,31 @@ public class FcpConnection { String messageName = fcpMessage.getName(); if ("ProtocolError".equals(messageName)) { fireReceivedProtocolError(new ProtocolError(fcpMessage)); + } else if ("PersistentPut".equals(messageName)) { + fireReceivedPersistentPut(new PersistentPut(fcpMessage)); + } else if ("URIGenerated".equals(messageName)) { + fireReceivedURIGenerated(new URIGenerated(fcpMessage)); + } else if ("EndListPersistentRequests".equals(messageName)) { + fireReceivedEndListPersistentRequests(new EndListPersistentRequests(fcpMessage)); } else if ("Peer".equals(messageName)) { fireReceivedPeer(new Peer(fcpMessage)); } else if ("PeerNote".equals(messageName)) { fireReceivedPeerNote(new PeerNote(fcpMessage)); + } else if ("AllData".equals(messageName)) { + long dataLength; + try { + dataLength = Long.valueOf(fcpMessage.getField("DataLength")); + } catch (NumberFormatException nfe1) { + dataLength = -1; + } + LimitedInputStream payloadInputStream = new LimitedInputStream(remoteInputStream, dataLength); + fireReceivedAllData(new AllData(fcpMessage, payloadInputStream)); + try { + payloadInputStream.consume(); + } catch (IOException ioe1) { + /* FIXME - what now? */ + /* well, ignore. when the connection handler fails, all fails. */ + } } else if ("EndListPeerNotes".equals(messageName)) { fireReceivedEndListPeerNotes(new EndListPeerNotes(fcpMessage)); } else if ("EndListPeers".equals(messageName)) {