package com.limegroup.gnutella.messages; import org.limewire.io.GUID; public interface PingRequest extends Message { /* various flags related to the SCP ggep field */ /** Mask for where leaf/ultrapeer requests are. */ public static final byte SCP_ULTRAPEER_OR_LEAF_MASK = 0x1; /** If we're requesting leaf hosts. */ public static final byte SCP_LEAF = 0x0; /** If we're requesting ultrapeer hosts. */ public static final byte SCP_ULTRAPEER = 0x1; /** If we support incoming TLS. */ public static final byte SCP_TLS = 0x2; /** * GUID to send out for UDP pings. */ public static final GUID UDP_GUID = new GUID(); /** * Accessor for whether or not this ping meets the criteria for being a * "heartbeat" ping, namely having ttl=0 and hops=1. * * @return <tt>true</tt> if this ping appears to be a "heartbeat" ping, * otherwise <tt>false</tt> */ public boolean isHeartbeat(); /** * Marks this ping request as requesting a pong carrying * an ip:port info. */ public void addIPRequest(); /** * get locale of this PingRequest. */ public String getLocale(); /** * Determines if this PingRequest has the 'supports cached pongs' * marking. */ public boolean supportsCachedPongs(); /** * Gets the data value for the SCP field, if one exists. * If none exist, null is returned. Else, a byte[] of some * size is returned. */ public byte[] getSupportsCachedPongData(); public boolean isQueryKeyRequest(); /** * @return whether this ping wants a reply carrying IP:Port info. */ public boolean requestsIP(); /** * @return whether this ping wants a reply carrying DHT IPP info */ public boolean requestsDHTIPP(); }