X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=peer-impl.go;h=f9f9096b198ea5d247d157fb940fbc9172ace1ac;hb=HEAD;hp=4dbc6b4c08046832804203eb80a638d944e28619;hpb=8eec0b665eaa9bb7bcd7e17aa4982cce7b2ab7e5;p=btrtrc.git diff --git a/peer-impl.go b/peer-impl.go index 4dbc6b4c..f9f9096b 100644 --- a/peer-impl.go +++ b/peer-impl.go @@ -1,6 +1,8 @@ package torrent import ( + "github.com/RoaringBitmap/roaring" + "github.com/anacrolix/torrent/metainfo" ) @@ -12,15 +14,24 @@ type peerImpl interface { handleUpdateRequests() writeInterested(interested bool) bool - // Neither of these return buffer room anymore, because they're currently both posted. There's - // also PeerConn.writeBufferFull for when/where it matters. - _cancel(RequestIndex) bool + // _cancel initiates cancellation of a request and returns acked if it expects the cancel to be + // handled by a follow-up event. + _cancel(RequestIndex) (acked bool) _request(Request) bool - connectionFlags() string onClose() onGotInfo(*metainfo.Info) + // Drop connection. This may be a no-op if there is no connection. drop() + // Rebuke the peer + ban() String() string - connStatusString() string + peerImplStatusLines() []string + + // All if the peer should have everything, known if we know that for a fact. For example, we can + // guess at how many pieces are in a torrent, and assume they have all pieces based on them + // having sent haves for everything, but we don't know for sure. But if they send a have-all + // message, then it's clear that they do. + peerHasAllPieces() (all, known bool) + peerPieces() *roaring.Bitmap }