123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- package grpc
- import (
- "bytes"
- "fmt"
- "io"
- "net"
- "strings"
- "sync"
- "time"
- "golang.org/x/net/trace"
- )
- var EnableTracing bool
- func methodFamily(m string) string {
- m = strings.TrimPrefix(m, "/")
- if i := strings.Index(m, "/"); i >= 0 {
- m = m[:i]
- }
- return m
- }
- type traceInfo struct {
- tr trace.Trace
- firstLine firstLine
- }
- type firstLine struct {
- mu sync.Mutex
- client bool
- remoteAddr net.Addr
- deadline time.Duration
- }
- func (f *firstLine) SetRemoteAddr(addr net.Addr) {
- f.mu.Lock()
- f.remoteAddr = addr
- f.mu.Unlock()
- }
- func (f *firstLine) String() string {
- f.mu.Lock()
- defer f.mu.Unlock()
- var line bytes.Buffer
- io.WriteString(&line, "RPC: ")
- if f.client {
- io.WriteString(&line, "to")
- } else {
- io.WriteString(&line, "from")
- }
- fmt.Fprintf(&line, " %v deadline:", f.remoteAddr)
- if f.deadline != 0 {
- fmt.Fprint(&line, f.deadline)
- } else {
- io.WriteString(&line, "none")
- }
- return line.String()
- }
- const truncateSize = 100
- func truncate(x string, l int) string {
- if l > len(x) {
- return x
- }
- return x[:l]
- }
- type payload struct {
- sent bool
- msg interface{}
-
- }
- func (p payload) String() string {
- if p.sent {
- return truncate(fmt.Sprintf("sent: %v", p.msg), truncateSize)
- }
- return truncate(fmt.Sprintf("recv: %v", p.msg), truncateSize)
- }
- type fmtStringer struct {
- format string
- a []interface{}
- }
- func (f *fmtStringer) String() string {
- return fmt.Sprintf(f.format, f.a...)
- }
- type stringer string
- func (s stringer) String() string { return string(s) }
|