X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=conn_stats.go;h=0c5bfc784e88d4ce142cff68bb552e681cac9e1e;hb=a11739a667be8c5bfaad2cf73417eba0e9adab2c;hp=bb2bc26bc90b38f120ba8cd301894d311b2d3d89;hpb=1d5b8f7451ca9ba6c1bb9582b6652bee420b8c4f;p=btrtrc.git diff --git a/conn_stats.go b/conn_stats.go index bb2bc26b..0c5bfc78 100644 --- a/conn_stats.go +++ b/conn_stats.go @@ -10,19 +10,20 @@ import ( pp "github.com/anacrolix/torrent/peer_protocol" ) -// Various connection-level metrics. At the Torrent level these are -// aggregates. Chunks are messages with data payloads. Data is actual torrent -// content without any overhead. Useful is something we needed locally. -// Unwanted is something we didn't ask for (but may still be useful). Written -// is things sent to the peer, and Read is stuff received from them. +// Various connection-level metrics. At the Torrent level these are aggregates. Chunks are messages +// with data payloads. Data is actual torrent content without any overhead. Useful is something we +// needed locally. Unwanted is something we didn't ask for (but may still be useful). Written is +// things sent to the peer, and Read is stuff received from them. Due to the implementation of +// Count, must be aligned on some platforms: See https://github.com/anacrolix/torrent/issues/262. type ConnStats struct { // Total bytes on the wire. Includes handshakes and encryption. BytesWritten Count BytesWrittenData Count - BytesRead Count - BytesReadData Count - BytesReadUsefulData Count + BytesRead Count + BytesReadData Count + BytesReadUsefulData Count + BytesReadUsefulIntendedData Count ChunksWritten Count @@ -78,14 +79,9 @@ func (cs *ConnStats) wroteMsg(msg *pp.Message) { } } -func (cs *ConnStats) readMsg(msg *pp.Message) { - // We want to also handle extended metadata pieces here, but we wouldn't - // have decoded the extended payload yet. - switch msg.Type { - case pp.Piece: - cs.ChunksRead.Add(1) - cs.BytesReadData.Add(int64(len(msg.Piece))) - } +func (cs *ConnStats) receivedChunk(size int64) { + cs.ChunksRead.Add(1) + cs.BytesReadData.Add(size) } func (cs *ConnStats) incrementPiecesDirtiedGood() { @@ -105,7 +101,7 @@ func add(n int64, f func(*ConnStats) *Count) func(*ConnStats) { type connStatsReadWriter struct { rw io.ReadWriter - c *connection + c *PeerConn } func (me connStatsReadWriter) Write(b []byte) (n int, err error) {