package com.limegroup.gnutella; import org.limewire.inject.EagerSingleton; import org.limewire.lifecycle.Service; import org.limewire.lifecycle.ServiceStage; import org.limewire.net.ConnectionDispatcher; import com.google.inject.Inject; import com.google.inject.name.Named; import com.limegroup.gnutella.browser.ControlRequestAcceptor; import com.limegroup.gnutella.browser.LocalHTTPAcceptor; import com.limegroup.gnutella.downloader.PushDownloadManager; @EagerSingleton class ConnectionAcceptorGlue { private final ConnectionDispatcher externalDispatcher; private final ConnectionDispatcher localDispatcher; private final LocalHTTPAcceptor localHttpAcceptor; private final HTTPAcceptor externalHttpAcceptor; private final PushDownloadManager pushDownloadManager; private final ControlRequestAcceptor controlRequestAcceptor; @Inject public ConnectionAcceptorGlue( @Named("global") ConnectionDispatcher externalDispatcher, @Named("local") ConnectionDispatcher localDispatcher, HTTPAcceptor externalHttpAcceptor, LocalHTTPAcceptor localHttpAcceptor, PushDownloadManager pushDownloadManager, ControlRequestAcceptor controlRequestAcceptor) { this.externalDispatcher = externalDispatcher; this.localDispatcher = localDispatcher; this.externalHttpAcceptor = externalHttpAcceptor; this.pushDownloadManager = pushDownloadManager; this.localHttpAcceptor = localHttpAcceptor; this.controlRequestAcceptor = controlRequestAcceptor; } @Inject @SuppressWarnings({"unused", "UnusedDeclaration"}) private void register(org.limewire.lifecycle.ServiceRegistry registry) { // TODO: This really should be a bunch of services that depend on the // dispatchers being started. We workaround that by starting // them in the LATE stage, which assumes the dispatchers // are started in EARLY or NORMAL. registry.register(new Service() { public String getServiceName() { return org.limewire.i18n.I18nMarker.marktr("Connection Dispatching"); } public void initialize() { }; public void start() { externalDispatcher.addConnectionAcceptor(externalHttpAcceptor, false, externalHttpAcceptor.getHttpMethods()); externalDispatcher.addConnectionAcceptor(pushDownloadManager, false, "GIV"); localDispatcher.addConnectionAcceptor(localHttpAcceptor, true, localHttpAcceptor .getHttpMethods()); localDispatcher.addConnectionAcceptor(controlRequestAcceptor, true, "MAGNET", "TORRENT"); externalDispatcher.addConnectionAcceptor(controlRequestAcceptor, true, "MAGNET","TORRENT"); } public void stop() { }; }).in(ServiceStage.LATE); } }