class PeerState extends Object implements DataLoader
| Modifier and Type | Field and Description |
|---|---|
(package private) BitField |
bitfield
the pieces the peer has.
|
(package private) boolean |
choked |
(package private) boolean |
choking |
(package private) PeerConnectionIn |
in |
(package private) boolean |
interested |
(package private) boolean |
interesting |
(package private) PeerListener |
listener
Fixme, used by Peer.disconnect() to get to the coordinator
|
static int |
MAX_PIPELINE |
static int |
MIN_PIPELINE |
(package private) PeerConnectionOut |
out |
static int |
PARTSIZE |
| Constructor and Description |
|---|
PeerState(Peer peer,
PeerListener listener,
BandwidthListener bwl,
MetaInfo metainfo,
PeerConnectionIn in,
PeerConnectionOut out) |
| Modifier and Type | Method and Description |
|---|---|
(package private) void |
addRequest()
Adds a new request to the outstanding requests list.
|
(package private) void |
allowedFastMessage(int piece)
BEP 6 Ignored for now
|
(package private) void |
bitfieldMessage(byte[] bitmap) |
(package private) void |
cancelMessage(int piece,
int begin,
int length) |
(package private) void |
cancelPiece(int piece)
Tell the other side that we are no longer interested in any of the outstanding requests (if
any) for this piece.
|
(package private) void |
chokeMessage(boolean choke) |
(package private) void |
extensionMessage(int id,
byte[] bs) |
(package private) BandwidthListener |
getBandwidthListener() |
(package private) Request |
getOutstandingRequest(int piece,
int begin,
int length)
Called when a piece message is being processed by the incoming connection.
|
(package private) String |
getRequests()
debug
|
(package private) void |
haveMessage(boolean isAll)
BEP 6
|
(package private) void |
haveMessage(int piece) |
(package private) void |
havePiece(int piece)
We now have this piece.
|
(package private) void |
interestedMessage(boolean interest) |
(package private) void |
keepAlive() |
(package private) void |
keepAliveMessage() |
ByteArray |
loadData(int piece,
int begin,
int length)
This is the callback that PeerConnectionOut calls
|
(package private) void |
pieceMessage(Request req)
Called when a full chunk (i.e.
|
(package private) void |
portMessage(int port)
Unused
|
(package private) void |
rejectMessage(int piece,
int begin,
int length)
BEP 6
|
(package private) void |
requestMessage(int piece,
int begin,
int length) |
(package private) void |
retransmitRequests() |
(package private) List<Request> |
returnPartialPieces()
Get partial pieces, give them back to PeerCoordinator.
|
(package private) void |
setChoking(boolean choke) |
(package private) void |
setInteresting(boolean interest) |
void |
setMetaInfo(MetaInfo meta)
Switch from magnet mode to normal mode.
|
(package private) void |
suggestMessage(int piece)
BEP 6 Treated as "have" for now
|
(package private) void |
unknownMessage(int type,
byte[] bs) |
(package private) void |
uploaded(int size)
Called when some bytes have left the outgoing connection.
|
BitField bitfield
volatile boolean choked
volatile boolean choking
final PeerConnectionIn in
volatile boolean interested
volatile boolean interesting
final PeerListener listener
public static final int MAX_PIPELINE
public static final int MIN_PIPELINE
final PeerConnectionOut out
public static final int PARTSIZE
PeerState(Peer peer, PeerListener listener, BandwidthListener bwl, MetaInfo metainfo, PeerConnectionIn in, PeerConnectionOut out)
metainfo - null if in magnet modevoid addRequest()
This is called from several places:
By getOutstandingRequest() when the first part of a chunk comes in By havePiece() when somebody got a new piece completed By chokeMessage() when we receive an unchoke By setInteresting() when we are now interested By PeerCoordinator.updatePiecePriorities()
void allowedFastMessage(int piece)
void bitfieldMessage(byte[] bitmap)
void cancelMessage(int piece,
int begin,
int length)
void cancelPiece(int piece)
void chokeMessage(boolean choke)
void extensionMessage(int id,
byte[] bs)
BandwidthListener getBandwidthListener()
Request getOutstandingRequest(int piece, int begin, int length)
String getRequests()
void haveMessage(boolean isAll)
isAll - true for have_all, false for have_nonevoid haveMessage(int piece)
void havePiece(int piece)
void interestedMessage(boolean interest)
void keepAlive()
void keepAliveMessage()
public ByteArray loadData(int piece, int begin, int length)
loadData in interface DataLoaderRuntimeException - on IOE getting the datavoid pieceMessage(Request req)
This may block quite a while if it is the last chunk for a piece, as it calls the listener, who stores the piece and then calls havePiece for every peer on the torrent (including us).
void portMessage(int port)
void rejectMessage(int piece,
int begin,
int length)
void requestMessage(int piece,
int begin,
int length)
void retransmitRequests()
List<Request> returnPartialPieces()
void setChoking(boolean choke)
void setInteresting(boolean interest)
public void setMetaInfo(MetaInfo meta)
meta - non-nullvoid suggestMessage(int piece)
void unknownMessage(int type,
byte[] bs)
void uploaded(int size)