package com.limegroup.gnutella.connection; import java.net.Socket; import org.limewire.io.NetworkInstanceUtils; import org.limewire.net.SocketsManager; import org.limewire.net.SocketsManager.ConnectType; import org.limewire.security.SecureMessageVerifier; import com.google.inject.Inject; import com.google.inject.Provider; import com.google.inject.Singleton; import com.limegroup.gnutella.Acceptor; import com.limegroup.gnutella.ApplicationServices; import com.limegroup.gnutella.ConnectionManager; import com.limegroup.gnutella.ConnectionServices; import com.limegroup.gnutella.GuidMapManager; import com.limegroup.gnutella.MessageDispatcher; import com.limegroup.gnutella.NetworkManager; import com.limegroup.gnutella.filters.SpamFilterFactory; import com.limegroup.gnutella.handshaking.HandshakeResponderFactory; import com.limegroup.gnutella.handshaking.HeadersFactory; import com.limegroup.gnutella.messages.MessageFactory; import com.limegroup.gnutella.messages.QueryReplyFactory; import com.limegroup.gnutella.messages.QueryRequestFactory; import com.limegroup.gnutella.messages.vendor.CapabilitiesVMFactory; import com.limegroup.gnutella.messages.vendor.MessagesSupportedVendorMessage; import com.limegroup.gnutella.search.SearchResultHandler; import com.limegroup.gnutella.statistics.OutOfBandStatistics; /** * An implementation of {@link RoutedConnectionFactory} that constructs {@link GnutellaConnection GnutellaConnections}. */ @Singleton public class RoutedConnectionFactoryImpl implements RoutedConnectionFactory { private final Provider<ConnectionManager> connectionManager; private final NetworkManager networkManager; private final QueryRequestFactory queryRequestFactory; private final HeadersFactory headersFactory; private final HandshakeResponderFactory handshakeResponderFactory; private final QueryReplyFactory queryReplyFactory; private final Provider<MessageDispatcher> messageDispatcher; private final Provider<SearchResultHandler> searchResultHandler; private final CapabilitiesVMFactory capabilitiesVMFactory; private final Provider<SocketsManager> socketsManager; private final Provider<Acceptor> acceptor; private final MessagesSupportedVendorMessage supportedVendorMessage; private final Provider<ConnectionServices> connectionServices; private final GuidMapManager guidMapManager; private final SpamFilterFactory spamFilterFactory; private final MessageFactory messageFactory; private final MessageReaderFactory messageReaderFactory; private final ApplicationServices applicationServices; private final Provider<SecureMessageVerifier> secureMessageVerifier; private final OutOfBandStatistics outOfBandStatistics; private final NetworkInstanceUtils networkInstanceUtils; @Inject public RoutedConnectionFactoryImpl(Provider<ConnectionManager> connectionManager, NetworkManager networkManager, QueryRequestFactory queryRequestFactory, HeadersFactory headersFactory, HandshakeResponderFactory handshakeResponderFactory, QueryReplyFactory queryReplyFactory, Provider<MessageDispatcher> messageDispatcher, Provider<SearchResultHandler> searchResultHandler, CapabilitiesVMFactory capabilitiesVMFactory, Provider<SocketsManager> socketsManager, Provider<Acceptor> acceptor, MessagesSupportedVendorMessage supportedVendorMessage, Provider<ConnectionServices> connectionServices, GuidMapManager guidMapManager, SpamFilterFactory spamFilterFactory, MessageFactory messageFactory, MessageReaderFactory messageReaderFactory, ApplicationServices applicationServices, Provider<SecureMessageVerifier> secureMessageVerifier, OutOfBandStatistics outOfBandStatistics, NetworkInstanceUtils networkInstanceUtils) { this.connectionManager = connectionManager; this.networkManager = networkManager; this.queryRequestFactory = queryRequestFactory; this.headersFactory = headersFactory; this.handshakeResponderFactory = handshakeResponderFactory; this.queryReplyFactory = queryReplyFactory; this.messageDispatcher = messageDispatcher; this.applicationServices = applicationServices; this.searchResultHandler = searchResultHandler; this.capabilitiesVMFactory = capabilitiesVMFactory; this.socketsManager = socketsManager; this.acceptor = acceptor; this.supportedVendorMessage = supportedVendorMessage; this.connectionServices = connectionServices; this.guidMapManager = guidMapManager; this.spamFilterFactory = spamFilterFactory; this.messageFactory = messageFactory; this.messageReaderFactory = messageReaderFactory; this.secureMessageVerifier = secureMessageVerifier; this.outOfBandStatistics = outOfBandStatistics; this.networkInstanceUtils = networkInstanceUtils; } public RoutedConnection createRoutedConnection(String host, int port) { return createRoutedConnection(host, port, ConnectType.PLAIN); } public RoutedConnection createRoutedConnection(String host, int port, ConnectType type) { return new GnutellaConnection(host, port, type, connectionManager.get(), networkManager, queryRequestFactory, headersFactory, handshakeResponderFactory, queryReplyFactory, messageDispatcher.get(), searchResultHandler, capabilitiesVMFactory, socketsManager.get(), acceptor.get(), supportedVendorMessage, connectionServices, guidMapManager, spamFilterFactory, messageReaderFactory, messageFactory, applicationServices, secureMessageVerifier.get(), outOfBandStatistics, networkInstanceUtils); } public RoutedConnection createRoutedConnection(Socket socket) { return new GnutellaConnection(socket, connectionManager.get(), networkManager, queryRequestFactory, headersFactory, handshakeResponderFactory, queryReplyFactory, messageDispatcher.get(), searchResultHandler, capabilitiesVMFactory, acceptor.get(), supportedVendorMessage, connectionServices, guidMapManager, spamFilterFactory, messageReaderFactory, messageFactory, applicationServices, secureMessageVerifier .get(), outOfBandStatistics, networkInstanceUtils); } }