java.lang.Object
com.biglybt.core.peermanager.messaging.bittorrent.BTHandshake
All Implemented Interfaces:
RawMessage, BTMessage, Message

public class BTHandshake extends Object implements BTMessage, RawMessage
BitTorrent handshake message.
  • Field Details

    • PROTOCOL

      public static final String 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

      private DirectByteBuffer buffer
    • description

      private String description
    • reserved_bytes

      private final byte[] reserved_bytes
    • datahash_bytes

      private final byte[] datahash_bytes
    • peer_id_bytes

      private final 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()
    • 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