2 * jFCPlib - FcpListenerManager.java - Copyright © 2009 David Roden
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 package net.pterodactylus.fcp;
21 import java.util.List;
22 import java.util.concurrent.CopyOnWriteArrayList;
25 * Manages FCP listeners and event firing.
27 * @author David ‘Bombe’ Roden <bombe@pterodactylus.net>
29 public class FcpListenerManager {
31 private final FcpConnection source;
32 private final List<FcpListener> listeners = new CopyOnWriteArrayList<FcpListener>();
35 * Creates a new listener manager.
37 * @param fcpConnection
38 * The source FCP connection
40 public FcpListenerManager(FcpConnection fcpConnection) {
41 this.source = fcpConnection;
44 public void addListener(FcpListener fcpListener) {
45 listeners.add(fcpListener);
48 public void removeListener(FcpListener fcpListener) {
49 listeners.remove(fcpListener);
52 private FcpConnection getSource() {
56 private List<FcpListener> getListeners() {
61 * Notifies listeners that a “NodeHello” message was received.
63 * @see FcpListener#receivedNodeHello(FcpConnection, NodeHello)
65 * The “NodeHello” message
67 public void fireReceivedNodeHello(NodeHello nodeHello) {
68 for (FcpListener fcpListener : getListeners()) {
69 fcpListener.receivedNodeHello(getSource(), nodeHello);
74 * Notifies listeners that a “CloseConnectionDuplicateClientName” message
77 * @see FcpListener#receivedCloseConnectionDuplicateClientName(FcpConnection,
78 * CloseConnectionDuplicateClientName)
79 * @param closeConnectionDuplicateClientName
80 * The “CloseConnectionDuplicateClientName” message
82 public void fireReceivedCloseConnectionDuplicateClientName(CloseConnectionDuplicateClientName closeConnectionDuplicateClientName) {
83 for (FcpListener fcpListener : getListeners()) {
84 fcpListener.receivedCloseConnectionDuplicateClientName(getSource(), closeConnectionDuplicateClientName);
89 * Notifies listeners that a “SSKKeypair” message was received.
91 * @see FcpListener#receivedSSKKeypair(FcpConnection, SSKKeypair)
93 * The “SSKKeypair” message
95 public void fireReceivedSSKKeypair(SSKKeypair sskKeypair) {
96 for (FcpListener fcpListener : getListeners()) {
97 fcpListener.receivedSSKKeypair(getSource(), sskKeypair);
102 * Notifies listeners that a “Peer” message was received.
104 * @see FcpListener#receivedPeer(FcpConnection, Peer)
108 public void fireReceivedPeer(Peer peer) {
109 for (FcpListener fcpListener : getListeners()) {
110 fcpListener.receivedPeer(getSource(), peer);
115 * Notifies all listeners that an “EndListPeers” message was received.
117 * @see FcpListener#receivedEndListPeers(FcpConnection, EndListPeers)
118 * @param endListPeers
119 * The “EndListPeers” message
121 public void fireReceivedEndListPeers(EndListPeers endListPeers) {
122 for (FcpListener fcpListener : getListeners()) {
123 fcpListener.receivedEndListPeers(getSource(), endListPeers);
128 * Notifies all listeners that a “PeerNote” message was received.
130 * @see FcpListener#receivedPeerNote(FcpConnection, PeerNote)
132 * The “PeerNote” message
134 public void fireReceivedPeerNote(PeerNote peerNote) {
135 for (FcpListener fcpListener : getListeners()) {
136 fcpListener.receivedPeerNote(getSource(), peerNote);
141 * Notifies all listeners that an “EndListPeerNotes” message was received.
143 * @see FcpListener#receivedEndListPeerNotes(FcpConnection,
145 * @param endListPeerNotes
146 * The “EndListPeerNotes” message
148 public void fireReceivedEndListPeerNotes(EndListPeerNotes endListPeerNotes) {
149 for (FcpListener fcpListener : getListeners()) {
150 fcpListener.receivedEndListPeerNotes(getSource(), endListPeerNotes);
155 * Notifies all listeners that a “PeerRemoved” message was received.
157 * @see FcpListener#receivedPeerRemoved(FcpConnection, PeerRemoved)
159 * The “PeerRemoved” message
161 public void fireReceivedPeerRemoved(PeerRemoved peerRemoved) {
162 for (FcpListener fcpListener : getListeners()) {
163 fcpListener.receivedPeerRemoved(getSource(), peerRemoved);
168 * Notifies all listeners that a “NodeData” message was received.
170 * @see FcpListener#receivedNodeData(FcpConnection, NodeData)
172 * The “NodeData” message
174 public void fireReceivedNodeData(NodeData nodeData) {
175 for (FcpListener fcpListener : getListeners()) {
176 fcpListener.receivedNodeData(getSource(), nodeData);
181 * Notifies all listeners that a “TestDDAReply” message was received.
183 * @see FcpListener#receivedTestDDAReply(FcpConnection, TestDDAReply)
184 * @param testDDAReply
185 * The “TestDDAReply” message
187 public void fireReceivedTestDDAReply(TestDDAReply testDDAReply) {
188 for (FcpListener fcpListener : getListeners()) {
189 fcpListener.receivedTestDDAReply(getSource(), testDDAReply);
194 * Notifies all listeners that a “TestDDAComplete” message was received.
196 * @see FcpListener#receivedTestDDAComplete(FcpConnection, TestDDAComplete)
197 * @param testDDAComplete
198 * The “TestDDAComplete” message
200 public void fireReceivedTestDDAComplete(TestDDAComplete testDDAComplete) {
201 for (FcpListener fcpListener : getListeners()) {
202 fcpListener.receivedTestDDAComplete(getSource(), testDDAComplete);
207 * Notifies all listeners that a “PersistentGet” message was received.
209 * @see FcpListener#receivedPersistentGet(FcpConnection, PersistentGet)
210 * @param persistentGet
211 * The “PersistentGet” message
213 public void fireReceivedPersistentGet(PersistentGet persistentGet) {
214 for (FcpListener fcpListener : getListeners()) {
215 fcpListener.receivedPersistentGet(getSource(), persistentGet);
220 * Notifies all listeners that a “PersistentPut” message was received.
222 * @see FcpListener#receivedPersistentPut(FcpConnection, PersistentPut)
223 * @param persistentPut
224 * The “PersistentPut” message
226 public void fireReceivedPersistentPut(PersistentPut persistentPut) {
227 for (FcpListener fcpListener : getListeners()) {
228 fcpListener.receivedPersistentPut(getSource(), persistentPut);
233 * Notifies all listeners that a “EndListPersistentRequests” message was
236 * @see FcpListener#receivedEndListPersistentRequests(FcpConnection,
237 * EndListPersistentRequests)
238 * @param endListPersistentRequests
239 * The “EndListPersistentRequests” message
241 public void fireReceivedEndListPersistentRequests(EndListPersistentRequests endListPersistentRequests) {
242 for (FcpListener fcpListener : getListeners()) {
243 fcpListener.receivedEndListPersistentRequests(getSource(), endListPersistentRequests);
248 * Notifies all listeners that a “URIGenerated” message was received.
250 * @see FcpListener#receivedURIGenerated(FcpConnection, URIGenerated)
251 * @param uriGenerated
252 * The “URIGenerated” message
254 public void fireReceivedURIGenerated(URIGenerated uriGenerated) {
255 for (FcpListener fcpListener : getListeners()) {
256 fcpListener.receivedURIGenerated(getSource(), uriGenerated);
261 * Notifies all listeners that a “DataFound” message was received.
263 * @see FcpListener#receivedDataFound(FcpConnection, DataFound)
265 * The “DataFound” message
267 public void fireReceivedDataFound(DataFound dataFound) {
268 for (FcpListener fcpListener : getListeners()) {
269 fcpListener.receivedDataFound(getSource(), dataFound);
274 * Notifies all listeners that an “AllData” message was received.
276 * @see FcpListener#receivedAllData(FcpConnection, AllData)
278 * The “AllData” message
280 public void fireReceivedAllData(AllData allData) {
281 for (FcpListener fcpListener : getListeners()) {
282 fcpListener.receivedAllData(getSource(), allData);
287 * Notifies all listeners that a “SimpleProgress” message was received.
289 * @see FcpListener#receivedSimpleProgress(FcpConnection, SimpleProgress)
290 * @param simpleProgress
291 * The “SimpleProgress” message
293 public void fireReceivedSimpleProgress(SimpleProgress simpleProgress) {
294 for (FcpListener fcpListener : getListeners()) {
295 fcpListener.receivedSimpleProgress(getSource(), simpleProgress);
300 * Notifies all listeners that a “StartedCompression” message was received.
302 * @see FcpListener#receivedStartedCompression(FcpConnection,
303 * StartedCompression)
304 * @param startedCompression
305 * The “StartedCompression” message
307 public void fireReceivedStartedCompression(StartedCompression startedCompression) {
308 for (FcpListener fcpListener : getListeners()) {
309 fcpListener.receivedStartedCompression(getSource(), startedCompression);
314 * Notifies all listeners that a “FinishedCompression” message was
317 * @see FcpListener#receivedFinishedCompression(FcpConnection,
318 * FinishedCompression)
319 * @param finishedCompression
320 * The “FinishedCompression” message
322 public void fireReceivedFinishedCompression(FinishedCompression finishedCompression) {
323 for (FcpListener fcpListener : getListeners()) {
324 fcpListener.receivedFinishedCompression(getSource(), finishedCompression);
329 * Notifies all listeners that an “UnknownPeerNoteType” message was
332 * @see FcpListener#receivedUnknownPeerNoteType(FcpConnection,
333 * UnknownPeerNoteType)
334 * @param unknownPeerNoteType
335 * The “UnknownPeerNoteType” message
337 public void fireReceivedUnknownPeerNoteType(UnknownPeerNoteType unknownPeerNoteType) {
338 for (FcpListener fcpListener : getListeners()) {
339 fcpListener.receivedUnknownPeerNoteType(getSource(), unknownPeerNoteType);
344 * Notifies all listeners that an “UnknownNodeIdentifier” message was
347 * @see FcpListener#receivedUnknownNodeIdentifier(FcpConnection,
348 * UnknownNodeIdentifier)
349 * @param unknownNodeIdentifier
350 * The “UnknownNodeIdentifier” message
352 public void fireReceivedUnknownNodeIdentifier(UnknownNodeIdentifier unknownNodeIdentifier) {
353 for (FcpListener fcpListener : getListeners()) {
354 fcpListener.receivedUnknownNodeIdentifier(getSource(), unknownNodeIdentifier);
359 * Notifies all listeners that a “ConfigData” message was received.
361 * @see FcpListener#receivedConfigData(FcpConnection, ConfigData)
363 * The “ConfigData” message
365 public void fireReceivedConfigData(ConfigData configData) {
366 for (FcpListener fcpListener : getListeners()) {
367 fcpListener.receivedConfigData(getSource(), configData);
372 * Notifies all listeners that a “GetFailed” message was received.
374 * @see FcpListener#receivedGetFailed(FcpConnection, GetFailed)
376 * The “GetFailed” message
378 public void fireReceivedGetFailed(GetFailed getFailed) {
379 for (FcpListener fcpListener : getListeners()) {
380 fcpListener.receivedGetFailed(getSource(), getFailed);
385 * Notifies all listeners that a “PutFailed” message was received.
387 * @see FcpListener#receivedPutFailed(FcpConnection, PutFailed)
389 * The “PutFailed” message
391 public void fireReceivedPutFailed(PutFailed putFailed) {
392 for (FcpListener fcpListener : getListeners()) {
393 fcpListener.receivedPutFailed(getSource(), putFailed);
398 * Notifies all listeners that an “IdentifierCollision” message was
401 * @see FcpListener#receivedIdentifierCollision(FcpConnection,
402 * IdentifierCollision)
403 * @param identifierCollision
404 * The “IdentifierCollision” message
406 public void fireReceivedIdentifierCollision(IdentifierCollision identifierCollision) {
407 for (FcpListener fcpListener : getListeners()) {
408 fcpListener.receivedIdentifierCollision(getSource(), identifierCollision);
413 * Notifies all listeners that an “PersistentPutDir” message was received.
415 * @see FcpListener#receivedPersistentPutDir(FcpConnection,
417 * @param persistentPutDir
418 * The “PersistentPutDir” message
420 public void fireReceivedPersistentPutDir(PersistentPutDir persistentPutDir) {
421 for (FcpListener fcpListener : getListeners()) {
422 fcpListener.receivedPersistentPutDir(getSource(), persistentPutDir);
427 * Notifies all listeners that a “PersistentRequestRemoved” message was
430 * @see FcpListener#receivedPersistentRequestRemoved(FcpConnection,
431 * PersistentRequestRemoved)
432 * @param persistentRequestRemoved
433 * The “PersistentRequestRemoved” message
435 public void fireReceivedPersistentRequestRemoved(PersistentRequestRemoved persistentRequestRemoved) {
436 for (FcpListener fcpListener : getListeners()) {
437 fcpListener.receivedPersistentRequestRemoved(getSource(), persistentRequestRemoved);
442 * Notifies all listeners that a “SubscribedUSKUpdate” message was
445 * @see FcpListener#receivedSubscribedUSKUpdate(FcpConnection,
446 * SubscribedUSKUpdate)
447 * @param subscribedUSKUpdate
448 * The “SubscribedUSKUpdate” message
450 public void fireReceivedSubscribedUSKUpdate(SubscribedUSKUpdate subscribedUSKUpdate) {
451 for (FcpListener fcpListener : getListeners()) {
452 fcpListener.receivedSubscribedUSKUpdate(getSource(), subscribedUSKUpdate);
457 * Notifies all listeners that a “PluginInfo” message was received.
459 * @see FcpListener#receivedPluginInfo(FcpConnection, PluginInfo)
461 * The “PluginInfo” message
463 public void fireReceivedPluginInfo(PluginInfo pluginInfo) {
464 for (FcpListener fcpListener : getListeners()) {
465 fcpListener.receivedPluginInfo(getSource(), pluginInfo);
470 * Notifies all listeners that an “FCPPluginReply” message was received.
472 * @see FcpListener#receivedFCPPluginReply(FcpConnection, FCPPluginReply)
473 * @param fcpPluginReply
474 * The “FCPPluginReply” message
476 public void fireReceivedFCPPluginReply(FCPPluginReply fcpPluginReply) {
477 for (FcpListener fcpListener : getListeners()) {
478 fcpListener.receivedFCPPluginReply(getSource(), fcpPluginReply);
483 * Notifies all listeners that a “PersistentRequestModified” message was
486 * @see FcpListener#receivedPersistentRequestModified(FcpConnection,
487 * PersistentRequestModified)
488 * @param persistentRequestModified
489 * The “PersistentRequestModified” message
491 public void fireReceivedPersistentRequestModified(PersistentRequestModified persistentRequestModified) {
492 for (FcpListener fcpListener : getListeners()) {
493 fcpListener.receivedPersistentRequestModified(getSource(), persistentRequestModified);
498 * Notifies all listeners that a “PutSuccessful” message was received.
500 * @see FcpListener#receivedPutSuccessful(FcpConnection, PutSuccessful)
501 * @param putSuccessful
502 * The “PutSuccessful” message
504 public void fireReceivedPutSuccessful(PutSuccessful putSuccessful) {
505 for (FcpListener fcpListener : getListeners()) {
506 fcpListener.receivedPutSuccessful(getSource(), putSuccessful);
511 * Notifies all listeners that a “PutFetchable” message was received.
513 * @see FcpListener#receivedPutFetchable(FcpConnection, PutFetchable)
514 * @param putFetchable
515 * The “PutFetchable” message
517 public void fireReceivedPutFetchable(PutFetchable putFetchable) {
518 for (FcpListener fcpListener : getListeners()) {
519 fcpListener.receivedPutFetchable(getSource(), putFetchable);
524 * Notifies all listeners that a “ProtocolError” message was received.
526 * @see FcpListener#receivedProtocolError(FcpConnection, ProtocolError)
527 * @param protocolError
528 * The “ProtocolError” message
530 public void fireReceivedProtocolError(ProtocolError protocolError) {
531 for (FcpListener fcpListener : getListeners()) {
532 fcpListener.receivedProtocolError(getSource(), protocolError);
537 * Notifies all listeners that a “SentFeed” message was received.
539 * @see FcpListener#receivedSentFeed(FcpConnection, SentFeed)
541 * The “SentFeed” message.
543 public void fireSentFeed(SentFeed sentFeed) {
544 for (FcpListener fcpListener : getListeners()) {
545 fcpListener.receivedSentFeed(getSource(), sentFeed);
550 * Notifies all listeners that a “ReceivedBookmarkFeed” message was
553 * @see FcpListener#receivedBookmarkFeed(FcpConnection,
554 * ReceivedBookmarkFeed)
555 * @param receivedBookmarkFeed
556 * The “ReceivedBookmarkFeed” message
558 public void fireReceivedBookmarkFeed(ReceivedBookmarkFeed receivedBookmarkFeed) {
559 for (FcpListener fcpListener : getListeners()) {
560 fcpListener.receivedBookmarkFeed(getSource(), receivedBookmarkFeed);
565 * Notifies all registered listeners that a message has been received.
567 * @see FcpListener#receivedMessage(FcpConnection, FcpMessage)
569 * The message that was received
571 public void fireMessageReceived(FcpMessage fcpMessage) {
572 for (FcpListener fcpListener : getListeners()) {
573 fcpListener.receivedMessage(getSource(), fcpMessage);
578 * Notifies all listeners that the connection to the node was closed.
581 * The exception that caused the disconnect, or
582 * <code>null</code> if there was no exception
583 * @see FcpListener#connectionClosed(FcpConnection, Throwable)
585 public void fireConnectionClosed(Throwable throwable) {
586 for (FcpListener fcpListener : getListeners()) {
587 fcpListener.connectionClosed(getSource(), throwable);