package com.limegroup.gnutella.util; import java.util.concurrent.atomic.AtomicReference; import org.limewire.io.NetworkInstanceUtils; import org.limewire.net.SocketsManager; import org.limewire.security.SecureMessageVerifier; import com.google.inject.Provider; 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.NetworkUpdateSanityChecker; import com.limegroup.gnutella.connection.ConnectionCapabilities; import com.limegroup.gnutella.connection.ConnectionCapabilitiesDelegator; import com.limegroup.gnutella.connection.MessageReaderFactory; 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.QueryRequest; import com.limegroup.gnutella.messages.QueryRequestFactory; import com.limegroup.gnutella.messages.vendor.CapabilitiesVMFactory; import com.limegroup.gnutella.messages.vendor.MessagesSupportedVendorMessage; import com.limegroup.gnutella.routing.QueryRouteTable; import com.limegroup.gnutella.search.SearchResultHandler; import com.limegroup.gnutella.simpp.SimppManager; import com.limegroup.gnutella.version.UpdateHandler; /** * Helper class that overrides getNumIntraUltrapeerConnections for testing the * horizon calculation and testing the new search architecture. */ public class NewConnection extends TestConnection { NewConnection(int connections, boolean queriesMustBeInRoutingTable, QueryRouteTable qrt, ConnectionManager connectionManager, NetworkManager networkManager, QueryRequestFactory queryRequestFactory, HeadersFactory headersFactory, HandshakeResponderFactory handshakeResponderFactory, QueryReplyFactory queryReplyFactory, MessageDispatcher messageDispatcher, NetworkUpdateSanityChecker networkUpdateSanityChecker, SearchResultHandler searchResultHandler, CapabilitiesVMFactory capabilitiesVMFactory, SocketsManager socketsManager, Acceptor acceptor, MessagesSupportedVendorMessage supportedVendorMessage, Provider<SimppManager> simppManager, Provider<UpdateHandler> updateHandler, Provider<ConnectionServices> connectionServices, GuidMapManager guidMapManager, SpamFilterFactory spamFilterFactory, MessageReaderFactory messageReaderFactory, MessageFactory messageFactory, ApplicationServices applicationServices, SecureMessageVerifier secureMessageVerifier, NetworkInstanceUtils networkInstanceUtils) { super(connections, queriesMustBeInRoutingTable, connectionManager, networkManager, queryRequestFactory, headersFactory, handshakeResponderFactory, queryReplyFactory, messageDispatcher, networkUpdateSanityChecker, searchResultHandler, capabilitiesVMFactory, socketsManager, acceptor, supportedVendorMessage, simppManager, updateHandler, connectionServices, guidMapManager, spamFilterFactory, messageReaderFactory, messageFactory, applicationServices, secureMessageVerifier, networkInstanceUtils); QRT = qrt; } @Override public QueryRouteTable getQueryRouteTableReceived() { return QRT; } @Override public boolean hitsQueryRouteTable(QueryRequest query) { return QRT.contains(query); } @Override public String toString() { return "NEW TEST CONNECTION"; } private final AtomicReference<ConnectionCapabilities> connectionCapabilitiesRef = new AtomicReference<ConnectionCapabilities>(); @Override public ConnectionCapabilities getConnectionCapabilities() { if (connectionCapabilitiesRef.get() == null) connectionCapabilitiesRef.compareAndSet(null, new StubCapabilities(super .getConnectionCapabilities())); return connectionCapabilitiesRef.get(); } private static class StubCapabilities extends ConnectionCapabilitiesDelegator { public StubCapabilities(ConnectionCapabilities delegate) { super(delegate); } @Override public boolean isGoodUltrapeer() { return true; } @Override public boolean isUltrapeerQueryRoutingConnection() { return true; } } }