com.aelitis.azureus.core.peermanager.messaging.bittorrent
Class BTHandshake

java.lang.Object
  extended by com.aelitis.azureus.core.peermanager.messaging.bittorrent.BTHandshake
All Implemented Interfaces:
RawMessage, BTMessage, Message

public class BTHandshake
extends Object
implements BTMessage, RawMessage

BitTorrent handshake message.


Field Summary
static int AZ_RESERVED_MODE
           
static int BT_RESERVED_MODE
           
static boolean FAST_EXTENSION_ENABLED
           
static int LT_RESERVED_MODE
           
static String PROTOCOL
           
 
Fields inherited from interface com.aelitis.azureus.core.peermanager.messaging.bittorrent.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_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_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
 
Fields inherited from interface com.aelitis.azureus.core.networkmanager.RawMessage
PRIORITY_HIGH, PRIORITY_LOW, PRIORITY_NORMAL
 
Fields inherited from interface com.aelitis.azureus.core.peermanager.messaging.Message
TYPE_DATA_PAYLOAD, TYPE_PROTOCOL_PAYLOAD
 
Constructor Summary
BTHandshake(byte[] data_hash, byte[] peer_id, int reserved_mode, byte version)
          Used for outgoing handshake message.
 
Method Summary
 Message deserialize(DirectByteBuffer data, byte version)
          Create a new instance of this message by decoding the given byte serialization.
 void destroy()
          Destroy the message; i.e.
 Message getBaseMessage()
          Get the message this raw message is based upon.
 DirectByteBuffer[] getData()
          Get message payload data.
 byte[] getDataHash()
           
 String getDescription()
          Get textual description of this particular message.
 String getFeatureID()
          Get the main feature set name this message belongs to.
 int getFeatureSubID()
          Get the static message sub-id for the feature.
 String getID()
          Get message id.
 byte[] getIDBytes()
           
 byte[] getPeerId()
           
 int getPriority()
          Get the message's queue priority.
 DirectByteBuffer[] getRawData()
          Get the message's raw data payload.
 byte[] getReserved()
           
 int getType()
          Get message type.
 byte getVersion()
           
 boolean isNoDelay()
          Is this a no-delay message.
 Message[] messagesToRemove()
          Get the yet-unsent message types that should be removed before queueing this message for sending.
static void setFastExtensionEnabled(boolean enabled)
           
static void setMainlineDHTEnabled(boolean enabled)
           
 void setNoDelay()
          Set no-delay for this message
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

PROTOCOL

public static final String PROTOCOL
See Also:
Constant Field Values

BT_RESERVED_MODE

public static final int BT_RESERVED_MODE
See Also:
Constant Field Values

LT_RESERVED_MODE

public static final int LT_RESERVED_MODE
See Also:
Constant Field Values

AZ_RESERVED_MODE

public static final int AZ_RESERVED_MODE
See Also:
Constant Field Values

FAST_EXTENSION_ENABLED

public static final boolean FAST_EXTENSION_ENABLED
See Also:
Constant Field Values
Constructor Detail

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 -
Method Detail

setMainlineDHTEnabled

public static void setMainlineDHTEnabled(boolean enabled)

setFastExtensionEnabled

public static void setFastExtensionEnabled(boolean enabled)

getReserved

public byte[] getReserved()

getDataHash

public byte[] getDataHash()

getPeerId

public byte[] getPeerId()

getID

public String getID()
Description copied from interface: Message
Get message id.

Specified by:
getID in interface Message
Returns:
id

getIDBytes

public byte[] getIDBytes()
Specified by:
getIDBytes in interface Message

getFeatureID

public String getFeatureID()
Description copied from interface: Message
Get the main feature set name this message belongs to.

Specified by:
getFeatureID in interface Message
Returns:
feature id

getFeatureSubID

public int getFeatureSubID()
Description copied from interface: Message
Get the static message sub-id for the feature.

Specified by:
getFeatureSubID in interface Message
Returns:
sub id

getType

public int getType()
Description copied from interface: Message
Get message type.

Specified by:
getType in interface Message
Returns:
type

getVersion

public byte getVersion()
Specified by:
getVersion in interface Message

getDescription

public String getDescription()
Description copied from interface: Message
Get textual description of this particular message.

Specified by:
getDescription in interface Message
Returns:
description

getData

public DirectByteBuffer[] getData()
Description copied from interface: Message
Get message payload data.

Specified by:
getData in interface Message
Returns:
message data buffers

deserialize

public Message deserialize(DirectByteBuffer data,
                           byte version)
                    throws MessageException
Description copied from interface: Message
Create a new instance of this message by decoding the given byte serialization.

Specified by:
deserialize in interface Message
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

public DirectByteBuffer[] getRawData()
Description copied from interface: RawMessage
Get the message's raw data payload.

Specified by:
getRawData in interface RawMessage
Returns:
data payload buffers

getPriority

public int getPriority()
Description copied from interface: RawMessage
Get the message's queue priority.

Specified by:
getPriority in interface RawMessage
Returns:
priority

isNoDelay

public boolean isNoDelay()
Description copied from interface: RawMessage
Is this a no-delay message. No-delay messages are transmitted immediately, i.e. force-flushed out the transport.

Specified by:
isNoDelay in interface RawMessage
Returns:
true if a no-delay message

setNoDelay

public void setNoDelay()
Description copied from interface: RawMessage
Set no-delay for this message

Specified by:
setNoDelay in interface RawMessage

messagesToRemove

public Message[] messagesToRemove()
Description copied from interface: RawMessage
Get the yet-unsent message types that should be removed before queueing this message for sending.

Specified by:
messagesToRemove in interface RawMessage
Returns:
message types; null if no types

destroy

public void destroy()
Description copied from interface: Message
Destroy the message; i.e. perform cleanup actions.

Specified by:
destroy in interface Message

getBaseMessage

public Message getBaseMessage()
Description copied from interface: RawMessage
Get the message this raw message is based upon.

Specified by:
getBaseMessage in interface RawMessage
Returns:
original message