mirror of
https://github.com/octoleo/syncthing.git
synced 2024-11-09 23:00:58 +00:00
Report rates over the wire, not uncompressed
This commit is contained in:
parent
39be6932b5
commit
1207223f3d
36
protocol/counting.go
Normal file
36
protocol/counting.go
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
package protocol
|
||||||
|
|
||||||
|
import (
|
||||||
|
"io"
|
||||||
|
"sync/atomic"
|
||||||
|
)
|
||||||
|
|
||||||
|
type countingReader struct {
|
||||||
|
io.Reader
|
||||||
|
tot uint64
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *countingReader) Read(bs []byte) (int, error) {
|
||||||
|
n, err := c.Reader.Read(bs)
|
||||||
|
atomic.AddUint64(&c.tot, uint64(n))
|
||||||
|
return n, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *countingReader) Tot() uint64 {
|
||||||
|
return atomic.LoadUint64(&c.tot)
|
||||||
|
}
|
||||||
|
|
||||||
|
type countingWriter struct {
|
||||||
|
io.Writer
|
||||||
|
tot uint64
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *countingWriter) Write(bs []byte) (int, error) {
|
||||||
|
n, err := c.Writer.Write(bs)
|
||||||
|
atomic.AddUint64(&c.tot, uint64(n))
|
||||||
|
return n, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *countingWriter) Tot() uint64 {
|
||||||
|
return atomic.LoadUint64(&c.tot)
|
||||||
|
}
|
@ -69,8 +69,10 @@ type rawConnection struct {
|
|||||||
id string
|
id string
|
||||||
receiver Model
|
receiver Model
|
||||||
reader io.ReadCloser
|
reader io.ReadCloser
|
||||||
|
cr *countingReader
|
||||||
xr *xdr.Reader
|
xr *xdr.Reader
|
||||||
writer io.WriteCloser
|
writer io.WriteCloser
|
||||||
|
cw *countingWriter
|
||||||
wb *bufio.Writer
|
wb *bufio.Writer
|
||||||
xw *xdr.Writer
|
xw *xdr.Writer
|
||||||
closed chan struct{}
|
closed chan struct{}
|
||||||
@ -93,8 +95,11 @@ const (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func NewConnection(nodeID string, reader io.Reader, writer io.Writer, receiver Model) Connection {
|
func NewConnection(nodeID string, reader io.Reader, writer io.Writer, receiver Model) Connection {
|
||||||
flrd := flate.NewReader(reader)
|
cr := &countingReader{Reader: reader}
|
||||||
flwr, err := flate.NewWriter(writer, flate.BestSpeed)
|
cw := &countingWriter{Writer: writer}
|
||||||
|
|
||||||
|
flrd := flate.NewReader(cr)
|
||||||
|
flwr, err := flate.NewWriter(cw, flate.BestSpeed)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
@ -104,8 +109,10 @@ func NewConnection(nodeID string, reader io.Reader, writer io.Writer, receiver M
|
|||||||
id: nodeID,
|
id: nodeID,
|
||||||
receiver: nativeModel{receiver},
|
receiver: nativeModel{receiver},
|
||||||
reader: flrd,
|
reader: flrd,
|
||||||
|
cr: cr,
|
||||||
xr: xdr.NewReader(flrd),
|
xr: xdr.NewReader(flrd),
|
||||||
writer: flwr,
|
writer: flwr,
|
||||||
|
cw: cw,
|
||||||
wb: wb,
|
wb: wb,
|
||||||
xw: xdr.NewWriter(wb),
|
xw: xdr.NewWriter(wb),
|
||||||
closed: make(chan struct{}),
|
closed: make(chan struct{}),
|
||||||
@ -461,7 +468,7 @@ type Statistics struct {
|
|||||||
func (c *rawConnection) Statistics() Statistics {
|
func (c *rawConnection) Statistics() Statistics {
|
||||||
return Statistics{
|
return Statistics{
|
||||||
At: time.Now(),
|
At: time.Now(),
|
||||||
InBytesTotal: int(c.xr.Tot()),
|
InBytesTotal: int(c.cr.Tot()),
|
||||||
OutBytesTotal: int(c.xw.Tot()),
|
OutBytesTotal: int(c.cw.Tot()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user