)
func (cn *connection) fillWriteBuffer(msg func(pp.Message) bool) {
+ numFillBuffers.Add(1)
rs, i := cn.desiredRequestState()
if !cn.SetInterested(i, msg) {
return
}
+ sentCancels := false
for r := range cn.requests {
if _, ok := rs[r]; !ok {
+ sentCancels = true
delete(cn.requests, r)
// log.Printf("%p: cancelling request: %v", cn, r)
if !msg(pp.Message{
}
}
}
+ if sentCancels {
+ fillBufferSentCancels.Add(1)
+ }
+ sentRequests := false
for r := range rs {
if _, ok := cn.requests[r]; !ok {
if cn.requests == nil {
cn.requests = make(map[request]struct{}, cn.nominalMaxRequests())
}
cn.requests[r] = struct{}{}
+ sentRequests = true
// log.Printf("%p: requesting %v", cn, r)
if !msg(pp.Message{
Type: pp.Request,
}
}
}
+ if sentRequests {
+ fillBufferSentRequests.Add(1)
+ }
}
// Writes buffers to the socket from the write channel.
pieceInclinationsReused = expvar.NewInt("pieceInclinationsReused")
pieceInclinationsNew = expvar.NewInt("pieceInclinationsNew")
pieceInclinationsPut = expvar.NewInt("pieceInclinationsPut")
+
+ fillBufferSentCancels = expvar.NewInt("fillBufferSentCancels")
+ fillBufferSentRequests = expvar.NewInt("fillBufferSentRequests")
+ numFillBuffers = expvar.NewInt("numFillBuffers")
)