github.com/keltia/go-ipfs@v0.3.8-0.20150909044612-210793031c63/routing/dht/dht_logger.go (about)

     1  package dht
     2  
     3  import (
     4  	"encoding/json"
     5  	"fmt"
     6  	"time"
     7  )
     8  
     9  type logDhtRPC struct {
    10  	Type     string
    11  	Start    time.Time
    12  	End      time.Time
    13  	Duration time.Duration
    14  	RPCCount int
    15  	Success  bool
    16  }
    17  
    18  func startNewRPC(name string) *logDhtRPC {
    19  	r := new(logDhtRPC)
    20  	r.Type = name
    21  	r.Start = time.Now()
    22  	return r
    23  }
    24  
    25  func (l *logDhtRPC) EndLog() {
    26  	l.End = time.Now()
    27  	l.Duration = l.End.Sub(l.Start)
    28  }
    29  
    30  func (l *logDhtRPC) Print() {
    31  	b, err := json.Marshal(l)
    32  	if err != nil {
    33  		log.Debugf("Error marshaling logDhtRPC object: %s", err)
    34  	} else {
    35  		log.Debug(string(b))
    36  	}
    37  }
    38  
    39  func (l *logDhtRPC) String() string {
    40  	return fmt.Sprintf("DHT RPC: %s took %s, success = %v", l.Type, l.Duration, l.Success)
    41  }
    42  
    43  func (l *logDhtRPC) EndAndPrint() {
    44  	l.EndLog()
    45  	l.Print()
    46  }