package org.limewire.gnutella.tests; import java.io.IOException; import java.net.UnknownHostException; import java.util.Set; import org.limewire.inject.EagerSingleton; import org.limewire.io.Connectable; import org.limewire.io.ConnectableImpl; import org.limewire.io.GUID; import org.limewire.io.NetworkUtils; import org.limewire.io.SimpleNetworkInstanceUtils; import org.limewire.listener.EventListener; import org.limewire.listener.EventListenerList; import org.limewire.listener.ListenerSupport; import org.limewire.net.TLSManager; import org.limewire.net.address.AddressEvent; import com.google.inject.AbstractModule; import com.google.inject.Module; import com.google.inject.TypeLiteral; import com.limegroup.gnutella.NetworkManager; @EagerSingleton public class NetworkManagerStub implements NetworkManager { public static final Module MODULE = new AbstractModule() { @Override protected void configure() { bind(NetworkManager.class).to(NetworkManagerStub.class); bind(TLSManager.class).to(NetworkManagerStub.class); bind(new TypeLiteral<ListenerSupport<AddressEvent>>(){}).to(NetworkManagerStub.class); } }; private boolean acceptedIncomingConnection; private byte[] address = new byte[] { 127, 0, 0, 1 }; private int port = 5555; private GUID solicitedGUID = new GUID(); private boolean canReceiveSolicited; private boolean canReceiveUnsolicited; private boolean guessCapable; private byte[] externalAddress; private boolean canDoFWT; private GUID udpConnectBackGUI = new GUID(); private boolean oobCapable; private int stableUDPPort = 7777; private int fwtVersion; private boolean incomingTLS; private boolean outgoingTLS; private boolean tls; private EventListenerList<AddressEvent> listeners = new EventListenerList<AddressEvent>(); public boolean acceptedIncomingConnection() { return acceptedIncomingConnection; } public void setAcceptedIncomingConnection(boolean accepted) { this.acceptedIncomingConnection = accepted; } public boolean addressChanged() { // TODO Auto-generated method stub return false; } public void externalAddressChanged() { } public boolean canDoFWT() { return canDoFWT; } public void setCanDoFWT(boolean canDoFWT) { this.canDoFWT = canDoFWT; } public boolean canReceiveSolicited() { return canReceiveSolicited; } public boolean canReceiveUnsolicited() { return canReceiveUnsolicited; } public void setAddress(byte[] address) { this.address = address; } /** * Returns whatever is set in {@link #setAddress(byte[])} by default * 127.0.0.1. */ public byte[] getAddress() { return address; } public byte[] getExternalAddress() { return externalAddress; } public byte[] getNonForcedAddress() { return getAddress(); } public int getNonForcedPort() { // TODO Auto-generated method stub return 0; } public void setPort(int port) { this.port = port; } /** * Returns whatever is set by {@link #setPort(int)}, by default 5555. */ public int getPort() { return port; } /** * Returns a random but the same GUID across calls. */ public GUID getUDPConnectBackGUID() { return udpConnectBackGUI; } public void setUDPConnectBackGUID(GUID guid) { udpConnectBackGUI = guid; } public boolean incomingStatusChanged() { // TODO Auto-generated method stub return false; } public boolean isGUESSCapable() { return guessCapable; } public boolean isIpPortValid() { return (NetworkUtils.isValidAddress(getAddress()) && NetworkUtils.isValidPort(getPort())); } public boolean isOOBCapable() { return oobCapable; } public void setOOBCapable(boolean capable) { oobCapable = capable; } public void setListeningPort(int port) throws IOException { // TODO Auto-generated method stub } public int getStableUDPPort() { return stableUDPPort; } public void setStableUDPPort(int port) { stableUDPPort = port; } /** * Returns whatever is set by {@link #setSolicitedGUID(GUID)}, by default * a random GUID that does not change. */ public GUID getSolicitedGUID() { return solicitedGUID; } public void setSolicitedGUID(GUID solicitedGUID) { this.solicitedGUID = solicitedGUID; } public int supportsFWTVersion() { return fwtVersion; } public void setSupportsFWTVersion(int version) { fwtVersion = version; } public void setCanReceiveSolicited(boolean canReceiveSolicited) { this.canReceiveSolicited = canReceiveSolicited; } public void setCanReceiveUnsolicited(boolean canReceiveUnsolicited) { this.canReceiveUnsolicited = canReceiveUnsolicited; } public void setGuessCapable(boolean guessCapable) { this.guessCapable = guessCapable; } public void setExternalAddress(byte[] externalAddress) { this.externalAddress = externalAddress; } public boolean isPrivateAddress(byte[] addr) { return new SimpleNetworkInstanceUtils().isPrivateAddress(addr); } public void start(){} public void stop(){} public void initialize() {} public void addListener(EventListener<AddressEvent> listener) { listeners.addListener(listener); } public boolean removeListener(EventListener<AddressEvent> listener) { return listeners.removeListener(listener); } public void fireEvent(AddressEvent event) { listeners.broadcast(event); } public ListenerSupport<AddressEvent> getListenerSupport() { return listeners; } public String getServiceName() { // TODO Auto-generated method stub return null; } public boolean isTLSSupported() { return !tls; } public boolean isIncomingTLSEnabled() { return incomingTLS; } public boolean isOutgoingTLSEnabled() { return outgoingTLS; } public void setIncomingTLSEnabled(boolean incomingTLS) { this.incomingTLS = incomingTLS; } public void setOutgoingTLSEnabled(boolean outgoingTLS) { this.outgoingTLS = outgoingTLS; } public void setTls(boolean tls) { this.tls = tls; } public void portChanged() { } @Override public void newPushProxies(Set<Connectable> pushProxies) { } @Override public Connectable getPublicAddress() { try { return new ConnectableImpl(NetworkUtils.ip2string(getExternalAddress()), getPort(), isIncomingTLSEnabled()); } catch (UnknownHostException e) { throw new RuntimeException(e); } } }