Net::BitTorrent::Peer - Remote BitTorrent Peer
Net::BitTorrent::Peer represents a single peer connection.
- "new ( { [ARGS] } )"
- Creates a Net::BitTorrent::Peer object. This constructor should not be
used directly.
- "bitfield ( )"
- Returns a bitfield representing the pieces that have been reported to be
successfully downloaded by the remote peer.
- "am_choking ( )"
- Returns a boolean value based on whether or not we are currently choking
the remote peer.
- "am_interested ( )"
- Returns a boolean value based on whether or not we are currently
interested in the set of pieces held by the remote peer
- "host ( )"
- Returns the host (typically an IP address) of the remote peer.
- "incoming ( )"
- Returns a boolean value based on whether or not this connection was
initiated by the remote peer or us.
- "peer_choking ( )"
- Returns a boolean value based on whether or not the remote peer is
currently choking us.
- "peer_interested ( )"
- Returns a boolean value based on whether or not the remote peer is
currently interested in being unchoked or in requesting data from us.
- "peerid ( )"
- Returns the Peer ID used to identify this peer.
See also: theory.org (http://tinyurl.com/4a9cuv)
- "port ( )"
- The port used by the remote peer.
- "reserved_bytes ( )"
- Returns the 8 reserved bytes from the plaintext
handshake. Each bit in these bytes can be used to change the behavior of
the protocol.
See also: theory.org (http://tinyurl.com/aw76zb)
- "source ( )"
- In a future version, this will return how we obtained this connection
(DHT, user, incoming, certain tracker, etc.).
- "torrent ( )"
- Returns the related Net::BitTorrent::Torrent object. This will be
"undef" if the peer has not completed
the handshake.
- "as_string ( [ VERBOSE ] )"
- Returns a 'ready to print' dump of the object's data structure. If called
in void context, the structure is printed to
"STDERR".
"VERBOSE" is a boolean value.
As of version "0.049_8" of this module,
"peer_disconnect" callbacks are provided
with a language agnostic, numeric reason. So far, this is the list of possible
disconnections:
- DISCONNECT_BY_REMOTE
- The connection closed by remote peer for unknown reasons
- DISCONNECT_LOOPBACK
- We connected to ourself according to PeerID.
- DISCONNECT_NO_SUCH_TORRENT
- Remote peer attempted to create a session related to a torrent we aren't
currently serving. Occasionally, this will also provide an
"Infohash" parameter for your
callback.
- DISCONNECT_HANDSHAKE_INFOHASH
- A remote peer sent us a bad plaintext handshake. This is triggered when,
after a particular infohash was implied in an encrypted handshake, the
remote peer sent us a mismatched infohash in the plaintext handshake.
- DISCONNECT_MALFORMED_HANDSHAKE
- Bad plaintext handshake. May be malformed or, if encryption is disabled
locally, the remote peer attempted an encrypted handshake.
- DISCONNECT_MALFORMED_PACKET
- This is given when the remote peer gives us a malformed packet. See also
DISCONNECT_MALFORMED_HANDSHAKE.
- DISCONNECT_PREXISTING
- Already connected to this peer. When there are too many established
connections with a particular peer (as determined by their PeerID), we
disconnect further connections with the reason. This reason provides the
remote peer's "PeerID" when
triggered.
- DISCONNECT_TOO_MANY
- Enough peers already! We've hit the hard limit for the number of peers
allowed globally or per torrent.
- DISCONNECT_HASHCHECKING
- This reason is given when a remote peer connects to us while the torrent
they're seeking is busy being hash checked (potentially in another
thread).
- DISCONNECT_SEED
- This is given when we and the remote peer are both seeds.
- DISCONNECT_TIMEOUT_HANDSHAKE
- Peer failed to complete plaintext or encrypted handshake within 30s.
- DISCONNECT_USELESS_PEER
- Peer has been connected for at least 3m and is neither interested nor
interesting.
- DISCONNECT_HANDSHAKE_SYNC_DH5
- Failed to sync MSE handshake at stage five.
To import this list of keywords into your namespace, use the
"disconnect" tag. Please note that this
API tweak is experimental and may change or be removed in a future version.
...it's also probably incomplete.
Sanko Robinson <sanko@cpan.org> - http://sankorobinson.com/
CPAN ID: SANKO
Copyright (C) 2008-2009 by Sanko Robinson <sanko@cpan.org>
This program is free software; you can redistribute it and/or
modify it under the terms of The Artistic License 2.0. See the
LICENSE file included with this distribution or
http://www.perlfoundation.org/artistic_license_2_0. For clarification, see
http://www.perlfoundation.org/artistic_2_0_notes.
When separated from the distribution, all POD documentation is
covered by the Creative Commons Attribution-Share Alike 3.0 License. See
http://creativecommons.org/licenses/by-sa/3.0/us/legalcode. For
clarification, see http://creativecommons.org/licenses/by-sa/3.0/us/.
Neither this module nor the Author is affiliated with BitTorrent,
Inc.