Class BTHandshake
java.lang.Object
com.biglybt.core.peermanager.messaging.bittorrent.BTHandshake
- All Implemented Interfaces:
RawMessage, BTMessage, Message
BitTorrent handshake message.
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final byte[]static final intprivate static final byte[]static final intprivate DirectByteBufferprivate final byte[]private Stringstatic final booleanprivate static final byte[]static final intprivate byte[]static final Stringprivate static final byte[][]private final byte[]private final byteFields inherited from interface BTMessage
BT_FEATURE_ID, ID_BT_ALLOWED_FAST, ID_BT_ALLOWED_FAST_BYTES, ID_BT_BITFIELD, ID_BT_BITFIELD_BYTES, ID_BT_CANCEL, ID_BT_CANCEL_BYTES, ID_BT_CHOKE, ID_BT_CHOKE_BYTES, ID_BT_DHT_PORT, ID_BT_DHT_PORT_BYTES, ID_BT_HANDSHAKE, ID_BT_HANDSHAKE_BYTES, ID_BT_HASH_REJECT, ID_BT_HASH_REJECT_BYTES, ID_BT_HASH_REQUEST, ID_BT_HASH_REQUEST_BYTES, ID_BT_HASHES, ID_BT_HASHES_BYTES, ID_BT_HAVE, ID_BT_HAVE_ALL, ID_BT_HAVE_ALL_BYTES, ID_BT_HAVE_BYTES, ID_BT_HAVE_NONE, ID_BT_HAVE_NONE_BYTES, ID_BT_INTERESTED, ID_BT_INTERESTED_BYTES, ID_BT_KEEP_ALIVE, ID_BT_KEEP_ALIVE_BYTES, ID_BT_LT_EXT_MESSAGE, ID_BT_LT_EXT_MESSAGE_BYTES, ID_BT_PIECE, ID_BT_PIECE_BYTES, ID_BT_REJECT_REQUEST, ID_BT_REJECT_REQUEST_BYTES, ID_BT_REQUEST, ID_BT_REQUEST_BYTES, ID_BT_SUGGEST_PIECE, ID_BT_SUGGEST_PIECE_BYTES, ID_BT_UNCHOKE, ID_BT_UNCHOKE_BYTES, ID_BT_UNINTERESTED, ID_BT_UNINTERESTED_BYTES, SUBID_BT_ALLOWED_FAST, SUBID_BT_BITFIELD, SUBID_BT_CANCEL, SUBID_BT_CHOKE, SUBID_BT_DHT_PORT, SUBID_BT_HANDSHAKE, SUBID_BT_HASH_REJECT, SUBID_BT_HASH_REQUEST, SUBID_BT_HASHES, SUBID_BT_HAVE, SUBID_BT_HAVE_ALL, SUBID_BT_HAVE_NONE, SUBID_BT_INTERESTED, SUBID_BT_KEEP_ALIVE, SUBID_BT_LT_EXT_MESSAGE, SUBID_BT_PIECE, SUBID_BT_REJECT_REQUEST, SUBID_BT_REQUEST, SUBID_BT_SUGGEST_PIECE, SUBID_BT_UNCHOKE, SUBID_BT_UNINTERESTED, SUBID_MAXFields inherited from interface Message
TYPE_DATA_PAYLOAD, TYPE_PROTOCOL_PAYLOADFields inherited from interface RawMessage
PRIORITY_HIGH, PRIORITY_LOW, PRIORITY_NORMAL -
Constructor Summary
ConstructorsModifierConstructorDescriptionprivateBTHandshake(byte[] reserved, byte[] data_hash, byte[] peer_id, byte version) BTHandshake(byte[] data_hash, byte[] peer_id, int reserved_mode, byte version) Used for outgoing handshake message. -
Method Summary
Modifier and TypeMethodDescriptionprivate voiddeserialize(DirectByteBuffer data, byte version) Create a new instance of this message by decoding the given byte serialization.voiddestroy()Destroy the message; i.e.private static byte[]duplicate(byte[] b) Get the message this raw message is based upon.getData()Get message payload data.byte[]Get textual description of this particular message.Get the main feature set name this message belongs to.intGet the static message sub-id for the feature.getID()Get message id.byte[]byte[]intGet the message's queue priority.Get the message's raw data payload.byte[]intgetType()Get message type.bytebooleanIs this a no-delay message.Message[]Get the yet-unsent message types that should be removed before queueing this message for sending.static voidsetFastExtensionEnabled(boolean enabled) static voidsetMainlineDHTEnabled(boolean enabled) voidSet no-delay for this messagevoidsetPeerId(byte[] id)
-
Field Details
-
PROTOCOL
- See Also:
-
BT_RESERVED
private static final byte[] BT_RESERVED -
LT_RESERVED
private static final byte[] LT_RESERVED -
AZ_RESERVED
public static final byte[] AZ_RESERVED -
BT_RESERVED_MODE
public static final int BT_RESERVED_MODE- See Also:
-
LT_RESERVED_MODE
public static final int LT_RESERVED_MODE- See Also:
-
AZ_RESERVED_MODE
public static final int AZ_RESERVED_MODE- See Also:
-
RESERVED
private static final byte[][] RESERVED -
FAST_EXTENSION_ENABLED
public static final boolean FAST_EXTENSION_ENABLED- See Also:
-
buffer
-
description
-
reserved_bytes
private final byte[] reserved_bytes -
datahash_bytes
private final byte[] datahash_bytes -
peer_id_bytes
private byte[] peer_id_bytes -
version
private final byte version
-
-
Constructor Details
-
BTHandshake
public BTHandshake(byte[] data_hash, byte[] peer_id, int reserved_mode, byte version) Used for outgoing handshake message.- Parameters:
data_hash-peer_id-set_reserve_bit-
-
BTHandshake
private BTHandshake(byte[] reserved, byte[] data_hash, byte[] peer_id, byte version)
-
-
Method Details
-
setMainlineDHTEnabled
public static void setMainlineDHTEnabled(boolean enabled) -
setFastExtensionEnabled
public static void setFastExtensionEnabled(boolean enabled) -
duplicate
private static byte[] duplicate(byte[] b) -
constructBuffer
private void constructBuffer() -
getReserved
public byte[] getReserved() -
getDataHash
public byte[] getDataHash() -
getPeerId
public byte[] getPeerId() -
setPeerId
public void setPeerId(byte[] id) -
getID
-
getIDBytes
public byte[] getIDBytes()- Specified by:
getIDBytesin interfaceMessage
-
getFeatureID
Description copied from interface:MessageGet the main feature set name this message belongs to.- Specified by:
getFeatureIDin interfaceMessage- Returns:
- feature id
-
getFeatureSubID
public int getFeatureSubID()Description copied from interface:MessageGet the static message sub-id for the feature.- Specified by:
getFeatureSubIDin interfaceMessage- Returns:
- sub id
-
getType
-
getVersion
public byte getVersion()- Specified by:
getVersionin interfaceMessage
-
getDescription
Description copied from interface:MessageGet textual description of this particular message.- Specified by:
getDescriptionin interfaceMessage- Returns:
- description
-
getData
Description copied from interface:MessageGet message payload data. -
deserialize
Description copied from interface:MessageCreate a new instance of this message by decoding the given byte serialization.- Specified by:
deserializein interfaceMessage- Parameters:
data- to deserialize- Returns:
- decoded message instance
- Throws:
MessageException- if the decoding process fails NOTE: Does not auto-return given direct buffer on thrown exception.
-
getRawData
Description copied from interface:RawMessageGet the message's raw data payload.- Specified by:
getRawDatain interfaceRawMessage- Returns:
- data payload buffers
-
getPriority
public int getPriority()Description copied from interface:RawMessageGet the message's queue priority.- Specified by:
getPriorityin interfaceRawMessage- Returns:
- priority
-
isNoDelay
public boolean isNoDelay()Description copied from interface:RawMessageIs this a no-delay message. No-delay messages are transmitted immediately, i.e. force-flushed out the transport.- Specified by:
isNoDelayin interfaceRawMessage- Returns:
- true if a no-delay message
-
setNoDelay
public void setNoDelay()Description copied from interface:RawMessageSet no-delay for this message- Specified by:
setNoDelayin interfaceRawMessage
-
messagesToRemove
Description copied from interface:RawMessageGet the yet-unsent message types that should be removed before queueing this message for sending.- Specified by:
messagesToRemovein interfaceRawMessage- Returns:
- message types; null if no types
-
destroy
-
getBaseMessage
Description copied from interface:RawMessageGet the message this raw message is based upon.- Specified by:
getBaseMessagein interfaceRawMessage- Returns:
- original message
-