public static <T>ListenerManager<T> createManager( String name, ListenerManagerDispatcher<T> target ) { return(new ListenerManager<>(name, target, false)); }
@Override public void addListener( DeviceManagerListener listener ) { listeners.addListener( listener ); if (initialized) { listeners.dispatch( listener, LT_INITIALIZED, null ); } }
public void dispatchWithException( int type, Object value ) throws Throwable { List<T> listeners_ref; synchronized( this ){ listeners_ref = listeners; } dispatchInternal( listeners_ref, type, value ); }
@Override public void addCategoryListener(CategoryListener l) { if (!category_listeners.hasListener(l)) { category_listeners.addListener( l ); } }
@Override public void dispatch( DownloadManagerListener listener, int type, Object value ) { listeners_aggregator.dispatch( listener, type, value ); } });
static final ListenerManager<DownloadManagerListener> listeners_aggregator = ListenerManager.createAsyncManager( "DM:ListenAggregatorDispatcher", new ListenerManagerDispatcher<DownloadManagerListener>() private final ListenerManager<DownloadManagerListener> listeners = ListenerManager.createManager( "DM:ListenDispatcher", new ListenerManagerDispatcher<DownloadManagerListener>() listeners.addListener( global_dm_listener ); final ListenerManager tracker_listeners = ListenerManager.createManager( "DM:TrackerListenDispatcher", new ListenerManagerDispatcher() static final ListenerManager<DownloadManagerPeerListener> peer_listeners_aggregator = ListenerManager.createAsyncManager( "DM:PeerListenAggregatorDispatcher", new ListenerManagerDispatcher<DownloadManagerPeerListener>() private final ListenerManager<DownloadManagerPeerListener> peer_listeners = ListenerManager.createManager( "DM:PeerListenDispatcher", new ListenerManagerDispatcher<DownloadManagerPeerListener>() static final ListenerManager piece_listeners_aggregator = ListenerManager.createAsyncManager( "DM:PieceListenAggregatorDispatcher", new ListenerManagerDispatcher() private final ListenerManager piece_listeners = ListenerManager.createManager( "DM:PieceListenDispatcher", new ListenerManagerDispatcher()
@Override public void addDownloadWillBeRemovedListener( GlobalManagerDownloadWillBeRemovedListener l ) { removal_listeners.addListener( l ); }
doDispatch( listener, type, value );
dispatchInternal( listeners_ref, type, value );
private static final int LDT_TORRENT_CHANGED = 3; private final ListenerManager<TRHostListener> listeners = ListenerManager.createAsyncManager( "TRHost:ListenDispatcher", new ListenerManagerDispatcher<TRHostListener>() List<TRHostListener> listeners_copy = listeners.getListenersCopy();
private static final int LDT_ACCESS_MODE_CHANGED = 4; protected static final ListenerManager<DiskManagerListener> listeners_aggregator = ListenerManager.createAsyncManager( "DiskM:ListenAggregatorDispatcher", new ListenerManagerDispatcher<DiskManagerListener>() private final ListenerManager<DiskManagerListener> listeners = ListenerManager.createManager( "DiskM:ListenDispatcher", new ListenerManagerDispatcher<DiskManagerListener>()
@Override public void run() { dispatchLoop(); } };
@Override public void canDownloadManagerBeRemoved( DownloadManager manager, boolean remove_torrent, boolean remove_data) throws GlobalManagerDownloadRemovalVetoException { try{ removal_listeners.dispatchWithException(LDT_MANAGER_WBR, new Object[] { manager, new Boolean(remove_torrent), Boolean.valueOf(remove_data) }); }catch( Throwable e ){ if (e instanceof GlobalManagerDownloadRemovalVetoException) { throw((GlobalManagerDownloadRemovalVetoException)e); } GlobalManagerDownloadRemovalVetoException gmv = new GlobalManagerDownloadRemovalVetoException("Error running veto check"); gmv.initCause(e); Debug.out(e); throw gmv; } }
ListenerManager.dispatchWithTimeout( async_listeners, new ListenerManagerDispatcher() Logger.log(new LogEvent(LOGID, "Invoking asynchronous 'stopped' listeners")); ListenerManager.dispatchWithTimeout( async_listeners, new ListenerManagerDispatcher()
listeners.clear();
final ListenerManager<DHTControlListener> listeners = ListenerManager.createAsyncManager( "DHTControl:listenDispatcher", new ListenerManagerDispatcher<DHTControlListener>()
@Override public void dispatch( DownloadManagerPeerListener listener, int type, Object value ) { peer_listeners_aggregator.dispatch( listener, type, value ); } });
@Override public void addTrackerListener( DownloadManagerTrackerListener listener ) { tracker_listeners.addListener( listener ); }
@Override public void addTagListener( TagListener listener, boolean fire_for_existing ) { if (!t_listeners.hasListener(listener)) { t_listeners.addListener( listener ); } if ( fire_for_existing ){ for ( Taggable t: getTagged()){ listener.taggableAdded( this, t ); } } }
@Override public void run() { dispatchLoop(); } };