org.klomp.snark

## Class PeerID

- java.lang.Object
- - org.klomp.snark.PeerID

- All Implemented Interfaces:
    Comparable

      public class PeerID
      extends Object
      implements Comparable

  Store the address information about a peer. Prior to 0.8.1, an instantiation required a peer ID, and full Destination address. Starting with 0.8.1, to support compact tracker responses, a PeerID can be instantiated with a Destination Hash alone. The full destination lookup is deferred until getAddress() is called, and the PeerID is not required. Equality is now determined solely by the dest hash.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `PeerID(BDecoder be)` Creates a PeerID from a BDecoder.
    `PeerID(byte[] dest_hash)` Creates a PeerID from a destHash
    `PeerID(byte[] id, Destination address)`
    `PeerID(Map m)` Creates a PeerID from a Map containing BEncoded peer id, ip and port.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `compareTo(Object o)` Deprecated. unused? and will NPE now that address can be null?
    `boolean` | `equals(Object o)` Two PeerIDs are equal when they have the same dest hash
    `Destination` | `getAddress()` Get the destination.
    `byte[]` | `getDestHash()`
    `byte[]` | `getID()`
    `int` | `getPort()`
    `int` | `hashCode()` The hash code of a PeerID is the hashcode of the desthash
    `static String` | `idencode(byte[] bs)` Encode an id as a hex encoded string and remove leading zeros.
    `boolean` | `sameID(PeerID pid)` Returns true if and only if this peerID and the given peerID have the same destination hash
    `void` | `setID(byte[] xid)` for connecting out to peer based on desthash @since 0.8.1
    `String` | `toString()` Returns the String "id@address" where id is the base64 encoded id and address is the base64 dest (was the base64 hash of the dest) which should match what the bytemonsoon tracker reports on its web pages.

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### PeerID

          public PeerID(byte[] id,
                Destination address)

    - #### PeerID

          public PeerID(BDecoder be)
                 throws IOException

      Creates a PeerID from a BDecoder.
      Throws:
        `IOException`

    - #### PeerID

          public PeerID(Map m)
                 throws InvalidBEncodingException,
                        UnknownHostException

      Creates a PeerID from a Map containing BEncoded peer id, ip and port.
      Throws:
        `InvalidBEncodingException`
        `UnknownHostException`

    - #### PeerID

          public PeerID(byte[] dest_hash)
                 throws InvalidBEncodingException

      Creates a PeerID from a destHash
      Throws:
        `InvalidBEncodingException`
      Since:
        0.8.1

  - ### Method Detail

    - #### getID

          public byte[] getID()

    - #### setID

          public void setID(byte[] xid)

      for connecting out to peer based on desthash @since 0.8.1

    - #### getAddress

          public Destination getAddress()

      Get the destination. If this PeerId was instantiated with a destHash, and we have not yet done so, lookup the full destination, which may take up to 10 seconds.
      Returns:
        Dest or null if unknown

    - #### getPort

          public int getPort()

    - #### getDestHash

          public byte[] getDestHash()

      Since:
        0.8.1

    - #### hashCode

          public int hashCode()

      The hash code of a PeerID is the hashcode of the desthash
      Overrides:
        `hashCode` in class `Object`

    - #### sameID

          public boolean sameID(PeerID pid)

      Returns true if and only if this peerID and the given peerID have the same destination hash

    - #### equals

          public boolean equals(Object o)

      Two PeerIDs are equal when they have the same dest hash
      Overrides:
        `equals` in class `Object`

    - #### compareTo

          public int compareTo(Object o)

      Deprecated. unused? and will NPE now that address can be null?
      Compares port, address and id.
      Specified by:
        `compareTo` in interface `Comparable`

    - #### toString

          public String toString()

      Returns the String "id@address" where id is the base64 encoded id and address is the base64 dest (was the base64 hash of the dest) which should match what the bytemonsoon tracker reports on its web pages.
      Overrides:
        `toString` in class `Object`

    - #### idencode

          public static String idencode(byte[] bs)

      Encode an id as a hex encoded string and remove leading zeros.