package com.limegroup.gnutella.stubs;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.concurrent.ScheduledExecutorService;
import org.limewire.io.Connectable;
import org.limewire.io.NetworkInstanceUtils;
import org.limewire.net.ConnectionDispatcher;
import org.limewire.net.SocketsManager;
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.Singleton;
import com.google.inject.name.Named;
import com.limegroup.gnutella.ConnectionManagerImpl;
import com.limegroup.gnutella.ConnectionServices;
import com.limegroup.gnutella.HostCatcher;
import com.limegroup.gnutella.NetworkManager;
import com.limegroup.gnutella.NodeAssigner;
import com.limegroup.gnutella.QueryUnicaster;
import com.limegroup.gnutella.connection.ConnectionCheckerManager;
import com.limegroup.gnutella.connection.RoutedConnection;
import com.limegroup.gnutella.connection.RoutedConnectionFactory;
import com.limegroup.gnutella.filters.IPFilter;
import com.limegroup.gnutella.handshaking.HandshakeResponse;
import com.limegroup.gnutella.handshaking.HandshakeStatus;
import com.limegroup.gnutella.messages.PingRequestFactory;
import com.limegroup.gnutella.messages.vendor.CapabilitiesVMFactory;
import com.limegroup.gnutella.simpp.SimppManager;
/** A (incomplete!) stub for ConnectionManager. */
@Singleton
public class ConnectionManagerStub extends ConnectionManagerImpl {
private boolean enableRemove = false;
private Boolean connected;
private Set<Connectable> pushProxies;
private Boolean fullyConnected;
private List<RoutedConnection> initializedConnections;
private Integer preferredConnectionCount;
@Inject
public ConnectionManagerStub(NetworkManager networkManager, Provider<HostCatcher> hostCatcher,
@Named("global")
Provider<ConnectionDispatcher> connectionDispatcher, @Named("backgroundExecutor")
ScheduledExecutorService backgroundExecutor, Provider<SimppManager> simppManager,
CapabilitiesVMFactory capabilitiesVMFactory,
RoutedConnectionFactory managedConnectionFactory,
Provider<QueryUnicaster> queryUnicaster,
SocketsManager socketsManager, ConnectionServices connectionServices,
Provider<NodeAssigner> nodeAssigner, Provider<IPFilter> ipFilter,
ConnectionCheckerManager connectionCheckerManager, PingRequestFactory pingRequestFactory,
NetworkInstanceUtils networkInstanceUtils) {
super(networkManager, hostCatcher, connectionDispatcher, backgroundExecutor, simppManager,
capabilitiesVMFactory, managedConnectionFactory, queryUnicaster,
socketsManager, connectionServices, nodeAssigner, ipFilter,
connectionCheckerManager, pingRequestFactory, networkInstanceUtils);
}
/** Calls c.close iff enableRemove */
@Override
public void remove(RoutedConnection c) {
if (enableRemove)
c.close();
}
@Override
public boolean isConnected() {
if(connected != null)
return connected;
else
return super.isConnected();
}
@Override
public boolean isSupernode() {
return true;
}
@Override
public HandshakeStatus allowConnection(HandshakeResponse hr) {
return HandshakeStatus.OK;
}
@Override
public String toString() {
return "ConnectionManagerStub";
}
public void setEnableRemove(boolean enableRemove) {
this.enableRemove = enableRemove;
}
public void setConnected(boolean connected) {
this.connected = Boolean.valueOf(connected);
}
public void setPushProxies(Set<? extends Connectable> pushProxies) {
this.pushProxies = Collections.unmodifiableSet(pushProxies);
}
@Override
public Set<Connectable> getPushProxies() {
if (pushProxies != null)
return pushProxies;
else
return super.getPushProxies();
}
public void setFullyConnected(boolean fullyConnected) {
this.fullyConnected = Boolean.valueOf(fullyConnected);
}
public void setInitializedConnections(List<RoutedConnection> initializedConnections) {
this.initializedConnections = initializedConnections;
}
public void setPreferredConnectionCount(int i) {
this.preferredConnectionCount = Integer.valueOf(i);
}
@Override
public List<RoutedConnection> getInitializedConnections() {
if(initializedConnections != null)
return initializedConnections;
else
return super.getInitializedConnections();
}
@Override
public int getPreferredConnectionCount() {
if(preferredConnectionCount != null)
return preferredConnectionCount;
else
return super.getPreferredConnectionCount();
}
@Override
public boolean isFullyConnected() {
if(fullyConnected != null)
return fullyConnected;
else
return super.isFullyConnected();
}
}