package com.limegroup.gnutella; import java.net.InetAddress; import java.util.Collection; import org.limewire.io.IpPort; import org.limewire.net.SocketsManager.ConnectType; import com.limegroup.gnutella.connection.RoutedConnection; public interface ConnectionServices { /** * Accessor for whether or not this node is a shielded leaf. * * @return <tt>true</tt> if this node is a shielded leaf, * <tt>false</tt> otherwise */ public boolean isShieldedLeaf(); /** * Tells whether the node is currently connected to the network * as a supernode or not. * @return true, if active supernode, false otherwise */ public boolean isActiveSuperNode(); /** * Tells whether the node is a supernode or not. * NOTE: This will return true if this node is capable * of being a supernode but is not yet connected to * the network as one (and is not a shielded leaf either). * * @return true, if supernode, false otherwise */ public boolean isSupernode(); /** * Returns whether or not this client is attempting to connect. */ public boolean isConnecting(); /** * Returns whether or not this client currently has any initialized * connections. * * @return <tt>true</tt> if the client does have initialized connections, * <tt>false</tt> otherwise */ public boolean isConnected(); /** * Returns whether or not this client currently has any initialized * connections. * * @return <tt>true</tt> if the client does have initialized connections, * <tt>false</tt> otherwise */ public boolean isFullyConnected(); /** * Returns a collection of IpPorts, preferencing hosts with open slots. * If isUltrapeer is true, this preferences hosts with open ultrapeer slots, * otherwise it preferences hosts with open leaf slots. * * Preferences via locale, also. * * @param num How many endpoints to try to get */ public Collection<IpPort> getPreferencedHosts(boolean isUltrapeer, String locale, int num); /** * Count how many connections have already received N messages */ public int countConnectionsWithNMessages(int messageThreshold); /** * Count up all the messages on active connections */ public int getActiveConnectionMessages(); /** * Closes and removes the given connection. */ public void removeConnection(RoutedConnection c); /** * Disconnects from the network. Closes all connections and sets * the number of connections to zero. */ public void disconnect(); /** * Connects to the network. Ensures the number of messaging connections * (keep-alive) is non-zero and recontacts the pong server as needed. */ public void connect(); /** * Determines if you're connected to the given host. */ public boolean isConnectedTo(InetAddress addr); /** * Creates a new outgoing messaging connection to the given host and port. * Returns immediately without blocking. If hostname would connect * us to ourselves, returns immediately. */ public void connectToHostAsynchronously(String hostname, int portnum, ConnectType type); /** * Returns the number of initialized messaging connections. */ public int getNumInitializedConnections(); }