package com.limegroup.gnutella.handshaking; import java.util.Collection; import java.util.List; import org.limewire.io.IpPort; import org.limewire.io.IpPortImpl; import com.google.inject.Inject; import com.google.inject.Provider; import com.google.inject.Singleton; import com.limegroup.gnutella.ConnectionManager; import com.limegroup.gnutella.ConnectionServices; import com.limegroup.gnutella.NetworkManager; @Singleton public class HandshakeServicesImpl implements HandshakeServices { private final Provider<ConnectionManager> connectionManager; private final NetworkManager networkManager; private final ConnectionServices connectionServices; @Inject HandshakeServicesImpl(Provider<ConnectionManager> connectionManager, NetworkManager networkManager, ConnectionServices connectionServices) { this.connectionManager = connectionManager; this.networkManager = networkManager; this.connectionServices = connectionServices; } public HandshakeStatus getHandshakeStatusForResponse(HandshakeResponse handshakeResponse) { return connectionManager.get().allowConnection(handshakeResponse); } public List<? extends IpPort> getLeafNodes() { return connectionManager.get().getInitializedClientConnections(); } public IpPort getLocalIpPort() { return new IpPortImpl(networkManager.getAddress(), networkManager.getPort()); } public List<? extends IpPort> getUltrapeerNodes() { return connectionManager.get().getInitializedConnections(); } public Collection<IpPort> getAvailableHosts(boolean isUltrapeer, String locale, int num) { return connectionServices.getPreferencedHosts(isUltrapeer, locale, num); } public HandshakeStatus getHandshakeStatusForResponseAsLeaf(HandshakeResponse handshakeResponse) { return connectionManager.get().allowConnectionAsLeaf(handshakeResponse); } public boolean isLeafDemotionAllowed() { return connectionManager.get().allowLeafDemotion(); } public boolean isUltrapeer() { return connectionManager.get().isSupernode(); } public boolean isUltrapeerNeeded() { return connectionManager.get().supernodeNeeded(); } }