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  }