X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=peer-impl.go;h=f9f9096b198ea5d247d157fb940fbc9172ace1ac;hb=HEAD;hp=eb926c748d46cf5d75825201511f1832b7b74f9a;hpb=92d3e1ed6ddc5be42614d2ca15871a21670dd2db;p=btrtrc.git diff --git a/peer-impl.go b/peer-impl.go index eb926c74..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" ) @@ -8,18 +10,28 @@ import ( // BitTorrent protocol connections. Some methods are underlined so as to avoid collisions with // legacy PeerConn methods. type peerImpl interface { - updateRequests(reason string) + // Trigger the actual request state to get updated + 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 }