github.com/Cloud-Foundations/Dominator@v0.3.4/lib/net/measuringDialer.go (about) 1 package net 2 3 import ( 4 "net" 5 "time" 6 ) 7 8 func newMeasuringDialer(dialer Dialer) *MeasuringDialer { 9 return &MeasuringDialer{dialer: dialer} 10 } 11 12 func (d *MeasuringDialer) Dial(network, address string) (net.Conn, error) { 13 startTime := time.Now() 14 netConn, err := d.dialer.Dial(network, address) 15 d.cumulativeDialTime += time.Since(startTime) 16 if err != nil { 17 return nil, err 18 } 19 return &MeasuringConnection{Conn: netConn}, nil 20 } 21 22 func (conn *MeasuringConnection) read(b []byte) (n int, err error) { 23 startTime := time.Now() 24 n, err = conn.Conn.Read(b) 25 conn.cumulativeReadTime += time.Since(startTime) 26 return 27 } 28 29 func (conn *MeasuringConnection) write(b []byte) (n int, err error) { 30 startTime := time.Now() 31 n, err = conn.Conn.Write(b) 32 conn.cumulativeWriteTime += time.Since(startTime) 33 return 34 }