package com.limegroup.gnutella; import java.io.IOException; import java.util.Set; import org.limewire.io.Connectable; import org.limewire.io.GUID; import org.limewire.io.NetworkUtils; import org.limewire.lifecycle.Service; import org.limewire.listener.ListenerSupport; import org.limewire.net.TLSManager; import org.limewire.net.address.AddressEvent; public interface NetworkManager extends Service, ListenerSupport<AddressEvent>, TLSManager { /** @return true if your IP and port information is valid. */ public boolean isIpPortValid(); public GUID getUDPConnectBackGUID(); /** * Returns whether or not this node is capable of performing OOB queries. */ public boolean isOOBCapable(); /** * Returns whether or not this node is capable of sending its own * GUESS queries. This would not be the case only if this node * has not successfully received an incoming UDP packet. * * @return <tt>true</tt> if this node is capable of running its own * GUESS queries, <tt>false</tt> otherwise */ public boolean isGUESSCapable(); /** * Returns the Non-Forced port for this host. * * @return the non-forced port for this host */ public int getNonForcedPort(); /** * Returns the port used for downloads and messaging connections. * Used to fill out the My-Address header in ManagedConnection. * @see com.limegroup.gnutella.Acceptor#getPort */ public int getPort(); /** * Returns the Non-Forced IP address for this host. * * @return the non-forced IP address for this host */ public byte[] getNonForcedAddress(); /** * Returns the raw IP address for this host. * * @return the raw IP address for this host */ public byte[] getAddress(); /** * Returns the external IP address for this host. */ public byte[] getExternalAddress(); /** * Notification that we've either just set or unset acceptedIncoming. */ public boolean incomingStatusChanged(); /** * Notifies components that this' IP address has changed. */ // TODO: Convert to listener pattern public boolean addressChanged(); /** * used to notify the <code>NetworkManager</code> of a change in * the external IP. */ public void externalAddressChanged(); /** * used to notify the <code>NetworkManager</code> of a change in * the port. */ public void portChanged(); /** * used to notify the <code>NetworkManager</code> of a new * <code>MediatorAddress</code> (i.e., push proxy) */ public void newPushProxies(Set<Connectable> pushProxies); /** * Returns true if this has accepted an incoming connection, and hence * probably isn't firewalled. (This is useful for colorizing search * results in the GUI.) */ public boolean acceptedIncomingConnection(); /** * Sets the port on which to listen for incoming connections. * If that fails, this is <i>not</i> modified and IOException is thrown. * If port==0, tells this to stop listening to incoming connections. */ public void setListeningPort(int port) throws IOException; public boolean canReceiveUnsolicited(); public boolean canReceiveSolicited(); public boolean canDoFWT(); public int getStableUDPPort(); public GUID getSolicitedGUID(); public int supportsFWTVersion(); /** * Returns the external, public address of this peer. Will return an * {@link NetworkUtils#isValidIpPort(org.limewire.io.IpPort) invalid} * address if no address is known yet. * <p> * Will return the external address whether the peer is firewalled or not. */ public Connectable getPublicAddress(); }