package com.limegroup.gnutella.messages.vendor; /** * The message that lets other know what capabilities you support. Every time * you add a capability you should modify this class. * */ public interface CapabilitiesVM extends VendorMessage.ControlMessage { /** * Bytes for advertising that we support a 'feature' search. * The value is 'WHAT' for legacy reasons, because 'what is new' * was the first feature search supported. */ static final byte[] FEATURE_SEARCH_BYTES = {(byte)87, (byte)72, (byte)65, (byte)84}; /** Bytes for supporting incoming TLS. */ static final byte[] TLS_SUPPORT_BYTES = { 'T', 'L', 'S', '!' }; /** Bytes for supporting FWT. */ static final byte[] FWT_SUPPORT_BYTES = { 'F', '2', 'F', 'T' }; /** Bytes for supporting incoming TCP connections. */ static final byte[] INCOMING_TCP_BYTES = { 'T', 'C', 'P', 'I' }; /** * The current version of this message. */ public static final int VERSION = 1; /** * @return -1 if the ability isn't supported, else it returns the version * of the message supported. */ public int supportsCapability(byte[] capabilityName); /** * Return 1 or higher if TLS is supported by the connection. * This does not necessarily mean the connection is over * TLS though. */ public int supportsTLS(); /** @return 1 or higher if capability queries are supported. the version * number gives some indication about what exactly is a supported. if no * support, returns -1. */ public int supportsFeatureQueries(); /** @return true if 'what is new' capability query feature is supported. */ public boolean supportsWhatIsNew(); /** * Returns the current DHT version if this node is an ACTIVE DHT node. */ public int isActiveDHTNode(); /** * Returns the current DHT version if this node is an PASSIVE DHT node. */ public int isPassiveDHTNode(); /** * Returns the current DHT version if this node is an PASSIVE_LEAF DHT node. */ public int isPassiveLeafNode(); /** * @return true unless the remote host indicated they can't accept * incoming tcp. If they didn't say anything we assume they can */ public boolean canAcceptIncomingTCP(); /** * @return true unless the remote host indicated they can't do * firewall-to-firewall transfers. If they didn't say anything we assume they can */ public boolean canDoFWT(); }