package com.limegroup.gnutella.downloader; import java.util.Comparator; import org.limewire.concurrent.ExecutorsHelper; import org.limewire.concurrent.ListeningExecutorService; import com.google.inject.AbstractModule; import com.google.inject.Provides; import com.google.inject.Singleton; import com.google.inject.TypeLiteral; import com.google.inject.name.Named; import com.google.inject.name.Names; import com.limegroup.bittorrent.BTDownloader; import com.limegroup.bittorrent.BTDownloaderImpl; import com.limegroup.bittorrent.BTTorrentFileDownloader; import com.limegroup.bittorrent.BTTorrentFileDownloaderImpl; import com.limegroup.gnutella.DownloadCallback; import com.limegroup.gnutella.downloader.serial.DownloadSerializeSettings; import com.limegroup.gnutella.downloader.serial.DownloadSerializeSettingsImpl; import com.limegroup.gnutella.downloader.serial.DownloadSerializer; import com.limegroup.gnutella.downloader.serial.DownloadSerializerImpl; import com.limegroup.gnutella.downloader.serial.OldDownloadConverter; import com.limegroup.gnutella.downloader.serial.conversion.OldDownloadConverterImpl; import com.limegroup.gnutella.downloader.serial.conversion.OldDownloadSettings; public class LimeWireDownloadModule extends AbstractModule { @Override protected void configure() { bind(ManagedDownloader.class).to(ManagedDownloaderImpl.class); bind(InNetworkDownloader.class).to(InNetworkDownloaderImpl.class); bind(MagnetDownloader.class).to(MagnetDownloaderImpl.class); bind(ResumeDownloader.class).to(ResumeDownloaderImpl.class); bind(StoreDownloader.class).to(StoreDownloaderImpl.class); bind(BTDownloader.class).to(BTDownloaderImpl.class); bind(BTTorrentFileDownloader.class).to(BTTorrentFileDownloaderImpl.class); bind(RemoteFileDescFactory.class).to(RemoteFileDescFactoryImpl.class); bind(DownloadCallback.class).annotatedWith(Names.named("inNetwork")).to(InNetworkCallback.class); bind(DownloadWorkerFactory.class).to(DownloadWorkerFactoryImpl.class); bind(HTTPDownloaderFactory.class).to(HTTPDownloaderFactoryImpl.class); bind(RequeryManagerFactory.class).to(RequeryManagerFactoryImpl.class); bind(PushedSocketHandlerRegistry.class).to(PushDownloadManager.class); bind(CoreDownloaderFactory.class).to(CoreDownloaderFactoryImpl.class); bind(LWSIntegrationServices.class).to(LWSIntegrationServicesImpl.class); bind(DownloadSerializer.class).to(DownloadSerializerImpl.class); bind(DownloadSerializeSettings.class).to(DownloadSerializeSettingsImpl.class); bind(OldDownloadConverter.class).to(OldDownloadConverterImpl.class); bind(DownloadSerializeSettings.class).annotatedWith(Names.named("oldDownloadSettings")).to(OldDownloadSettings.class); bind(DownloadStatsTracker.class).to(DownloadStatsTrackerImpl.class); bind(new TypeLiteral<Comparator<RemoteFileDescContext>>(){}).to(PingedRemoteFileDescComparator.class); } @Provides @Singleton @Named("downloadStateProcessingQueue") ListeningExecutorService downloadStateProcessingQueue() { return ExecutorsHelper.newProcessingQueue("downloadStateProcessingQueue"); } }