package com.limegroup.gnutella.messages;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.util.List;
import org.limewire.io.IpPort;
import org.limewire.security.AddressSecurityToken;
import com.limegroup.gnutella.dht.DHTManager.DHTMode;
public interface PingReply extends Message {
/**
* Constant for the standard size of the pong payload.
*/
public static final int STANDARD_PAYLOAD_SIZE = 14;
/**
* Returns whether or not this pong is reporting any free slots on the
* remote host, either leaf or ultrapeer.
*
* @return <tt>true</tt> if the remote host has any free leaf or ultrapeer
* slots, otherwise <tt>false</tt>
*/
boolean hasFreeSlots();
/**
* Returns whether or not this pong is reporting free leaf slots on the
* remote host.
*
* @return <tt>true</tt> if the remote host has any free leaf slots,
* otherwise <tt>false</tt>
*/
boolean hasFreeLeafSlots();
/**
* Returns whether or not this pong is reporting free ultrapeer slots on
* the remote host.
*
* @return <tt>true</tt> if the remote host has any free ultrapeer slots,
* otherwise <tt>false</tt>
*/
boolean hasFreeUltrapeerSlots();
/**
* Accessor for the number of free leaf slots reported by the remote host.
* This will return -1 if the remote host did not include the necessary
* GGEP block reporting slots.
*
* @return the number of free leaf slots, or -1 if the remote host did not
* include this information
*/
int getNumLeafSlots();
/**
* Accessor for the number of free ultrapeer slots reported by the remote
* host. This will return -1 if the remote host did not include the
* necessary GGEP block reporting slots.
*
* @return the number of free ultrapeer slots, or -1 if the remote host did
* not include this information
*/
int getNumUltrapeerSlots();
/**
* Accessor for the port reported in this pong.
*
* @return the port number reported in the pong
*/
int getPort();
/**
* Returns the IP field in standard dotted decimal format, e.g.,
* "127.0.0.1". The most significant byte is written first.
*/
String getAddress();
/**
* Returns the ip address bytes (MSB first).
*/
byte[] getIPBytes();
/**
* Accessor for the number of files shared, as reported in the
* pong.
*
* @return the number of files reported shared
*/
long getFiles();
/**
* Accessor for the number of kilobytes shared, as reported in the
* pong.
*
* @return the number of kilobytes reported shared
*/
long getKbytes();
/** Returns the average daily uptime in seconds from the GGEP payload.
* If the pong did not report a daily uptime, returns -1.
*
* @return the daily uptime reported in the pong, or -1 if the uptime
* was not present or could not be read
*/
int getDailyUptime();
/** Returns whether or not this host support unicast, GUESS-style
* queries.
*
* @return <tt>true</tt> if this host does support GUESS-style queries,
* otherwise <tt>false</tt>
*/
boolean supportsUnicast();
/** Returns the AddressSecurityToken (if any) associated with this pong. May be null!
*
* @return the <tt>AddressSecurityToken</tt> for this pong, or <tt>null</tt> if no
* key was specified
*/
AddressSecurityToken getQueryKey();
/**
* Gets the list of packed IP/Ports.
*/
List<IpPort> getPackedIPPorts();
/**
* Gets the list of packed DHT IP/Ports.
*/
List<IpPort> getPackedDHTIPPorts();
/**
* Gets a list of packed IP/Ports of UDP Host Caches.
*/
List<IpPort> getPackedUDPHostCaches();
DHTMode getDHTMode();
int getDHTVersion();
/**
* Returns whether or not this pong has a GGEP extension.
*
* @return <tt>true</tt> if the pong has a GGEP extension, otherwise
* <tt>false</tt>
*/
boolean hasGGEPExtension();
/**
* Returns true if this message is "marked", i.e., likely from an
* Ultrapeer.
*
* @return <tt>true</tt> if this pong is marked as an Ultrapeer pong,
* otherwise <tt>false</tt>
*/
boolean isUltrapeer();
/**
* Implements <tt>IpPort</tt> interface. Returns the <tt>InetAddress</tt>
* for this host.
*
* @return the <tt>InetAddress</tt> for this host
*/
InetAddress getInetAddress();
InetSocketAddress getInetSocketAddress();
InetAddress getMyInetAddress();
int getMyPort();
/**
* Access the client_locale.
*/
String getClientLocale();
int getNumFreeLocaleSlots();
/**
* Accessor for host cacheness.
*/
boolean isUDPHostCache();
/**
* Gets the UDP host cache address.
*/
String getUDPCacheAddress();
/** Returns true if the host supports TLS. */
boolean isTLSCapable();
public byte[] getPayload();
}