## Uses of Class
org.klomp.snark.Peer

- Packages that use Peer
  Package | Description
  --- | ---
  org.klomp.snark | I2P version of the snark bittorrent client, imported in 2005 and heavily enhanced to add a web UI, DHT support, and other features.

- - ### Uses of Peer in org.klomp.snark

    Subclasses of Peer in org.klomp.snark
    Modifier and Type | Class and Description
    --- | ---
    `(package private) class` | `WebPeer` BEP 19.

    Fields in org.klomp.snark with type parameters of type Peer
    Modifier and Type | Field and Description
    --- | ---
    `(package private) Deque<Peer>` | PeerCoordinator.`peers` synchronize on this when changing peers or downloaders.

    Methods in org.klomp.snark that return types with arguments of type Peer
    Modifier and Type | Method and Description
    --- | ---
    `List<Peer>` | Snark.`getPeerList()`
    `Set<Peer>` | TrackerInfo.`getPeers()`
    `List<Peer>` | PeerCoordinator.`peerList()` for web page detailed stats

    Methods in org.klomp.snark with parameters of type Peer
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | Piece.`addPeer(Peer peer)` caller must synchronize
    `boolean` | PeerCoordinator.`addPeer(Peer peer)` Add peer (inbound or outbound)
    `int` | Peer.`compareTo(Peer p)` Deprecated. unused?
    `void` | PeerListener.`connected(Peer peer)` Called when the connection to the peer has started and the handshake was successfull.
    `void` | PeerCoordinator.`connected(Peer peer)`
    `void` | PeerListener.`disconnected(Peer peer)` Called when the connection to the peer was terminated or the connection handshake failed.
    `void` | PeerCoordinator.`disconnected(Peer peer)`
    `PartialPiece` | PeerListener.`getPartialPiece(Peer peer, BitField havePieces)` Called when a peer has connected and there may be a partially downloaded piece that the coordinatorator can give the peer task
    `PartialPiece` | PeerCoordinator.`getPartialPiece(Peer peer, BitField havePieces)` Return partial piece to the PeerState if it's still wanted and peer has it.
    `boolean` | PeerListener.`gotBitField(Peer peer, BitField bitfield)` Called when a bitmap message is received.
    `boolean` | PeerCoordinator.`gotBitField(Peer peer, BitField bitfield)` Returns true if the given bitfield contains at least one piece we are interested in.
    `void` | PeerListener.`gotChoke(Peer peer, boolean choke)` Called when a choke message is received.
    `void` | PeerCoordinator.`gotChoke(Peer peer, boolean choke)` this does nothing but logging
    `void` | PeerListener.`gotCommentReq(Peer peer, int num)` Called when comments are requested via ut_comment
    `void` | PeerCoordinator.`gotCommentReq(Peer peer, int num)` Called when comments are requested via ut_comment
    `void` | PeerListener.`gotComments(Peer peer, List<Comment> comments)` Called when comments are received via ut_comment
    `void` | PeerCoordinator.`gotComments(Peer peer, List<Comment> comments)` Called when comments are received via ut_comment
    `void` | PeerListener.`gotExtension(Peer peer, int id, byte[] bs)` Called when an extension message is received.
    `void` | PeerCoordinator.`gotExtension(Peer peer, int id, byte[] bs)` PeerListener callback
    `boolean` | PeerListener.`gotHave(Peer peer, int piece)` Called when a have piece message is received.
    `boolean` | PeerCoordinator.`gotHave(Peer peer, int piece)`
    `void` | PeerListener.`gotInterest(Peer peer, boolean interest)` Called when an interested message is received.
    `void` | PeerCoordinator.`gotInterest(Peer peer, boolean interest)`
    `void` | PeerListener.`gotPeers(Peer peer, List<PeerID> pIDList)` Called when peers are received via PEX
    `void` | PeerCoordinator.`gotPeers(Peer peer, List<PeerID> peers)` Get peers from PEX - PeerListener callback
    `boolean` | PeerListener.`gotPiece(Peer peer, PartialPiece piece)` Called when a piece is received from the peer.
    `boolean` | PeerCoordinator.`gotPiece(Peer peer, PartialPiece pp)` Returns false if the piece is no good (according to the hash).
    `void` | PeerListener.`gotPort(Peer peer, int port, int rport)` Called when a DHT port message is received.
    `void` | PeerCoordinator.`gotPort(Peer peer, int port, int rport)` PeerListener callback Tell the DHT to ping it, this will get back the node info
    `ByteArray` | PeerListener.`gotRequest(Peer peer, int piece, int off, int len)` Called when the peer wants (part of) a piece from us.
    `ByteArray` | PeerCoordinator.`gotRequest(Peer peer, int piece, int off, int len)` Returns a byte array containing the requested piece or null of the piece is unknown.
    `static void` | ExtensionHandler.`handleMessage(Peer peer, PeerListener listener, int id, byte[] bs)`
    `boolean` | Piece.`isRequestedBy(Peer peer)` Checks if the given peer is currently requesting this piece.
    `static void` | ExtensionHandler.`locked_sendComments(Peer peer, int num, CommentSet comments)` Send comments Caller must sync on comments
    `boolean` | PeerListener.`needPiece(Peer peer, BitField bitfield)` Called when we are downloading from the peer and may need to ask for a new piece.
    `boolean` | PeerCoordinator.`needPiece(Peer peer, BitField havePieces)` Called when we are downloading from the peer and may need to ask for a new piece.
    `void` | Snark.`peerChange(PeerCoordinator coordinator, Peer peer)` CoordinatorListener - this does nothing
    `void` | CoordinatorListener.`peerChange(PeerCoordinator coordinator, Peer peer)` Called when the PeerCoordinator notices a change in the state of a peer.
    `boolean` | Piece.`removePeer(Peer peer)` Caller must synchronize.
    `void` | PeerListener.`savePartialPieces(Peer peer, List<Request> pcs)` Called when the peer has disconnected and the peer task may have a partially downloaded piece that the PeerCoordinator can save
    `void` | PeerCoordinator.`savePartialPieces(Peer peer, List<Request> partials)` Save partial pieces on peer disconnection and hopefully restart it later.
    `(package private) void` | PeerCoordinator.`sendCommentReq(Peer peer)` Send a commment request message to the peer, if he supports it.
    `static void` | ExtensionHandler.`sendCommentReq(Peer peer, int num)` Send comment request
    `(package private) void` | PeerCoordinator.`sendDHT(Peer peer)` Send a DHT message to the peer, if we both support DHT.
    `static void` | ExtensionHandler.`sendDHT(Peer peer, int qport, int rport)` Send the DHT port numbers
    `(package private) void` | PeerCoordinator.`sendPeers(Peer peer)` Send a PEX message to the peer, if he supports PEX.
    `static void` | ExtensionHandler.`sendPEX(Peer peer, List<Peer> pList)` added.f and dropped unsupported
    `void` | Piece.`setRequested(Peer peer, boolean requested)` Marks a peer as requesting or no longer requesting this piece.
    `boolean` | BandwidthListener.`shouldRequest(Peer peer, int size)` Checks if we should request the given number of bytes from a peer.
    `boolean` | Peer.`shouldRequest(Peer peer, int size)` Should we request this many bytes?
    `boolean` | BandwidthManager.`shouldRequest(Peer peer, int size)` Should we request this many bytes?
    `boolean` | PeerCoordinator.`shouldRequest(Peer peer, int size)` Should we request this many bytes?

    Method parameters in org.klomp.snark with type arguments of type Peer
    Modifier and Type | Method and Description
    --- | ---
    `static void` | ExtensionHandler.`sendPEX(Peer peer, List<Peer> pList)` added.f and dropped unsupported

    Constructors in org.klomp.snark with parameters of type Peer
    Constructor and Description
    `PeerConnectionIn(Peer peer, DataInputStream din)`
    `PeerConnectionOut(Peer peer, DataOutputStream dout)`
    `PeerState(Peer peer, PeerListener listener, BandwidthListener bwl, MetaInfo metainfo, PeerConnectionIn in, PeerConnectionOut out)`