muxer: log precisely which muxer (useful in tests)
Juan Batiz-Benet committed
Dec 27, 2014 at 22:55 UTC
bbcddd6c1f02cd3d542e04f9b2e769e7e9746930
1 file changed
+9
-3
net/mux.go
+9
-3
@@ -1,7 +1,6 @@
1
package net
2
3
import (
4
- "errors"
4
"fmt"
5
"io"
6
"sync"
@@ -66,17 +65,24 @@ func (m *Mux) ReadProtocolHeader(s io.Reader) (string, StreamHandler, error) {
65
case !found && m.Default != nil:
66
return name, m.Default, nil
67
case !found && m.Default == nil:
69
- return name, nil, errors.New("no handler with name: " + name)
68
+ return name, nil, fmt.Errorf("%s no handler with name: %s (%d)", m, name, len(name))
69
default:
70
return name, h, nil
71
}
72
}
73
74
+// String returns the muxer's printing representation
75
+func (m *Mux) String() string {
76
+ m.RLock()
77
+ defer m.RUnlock()
78
+ return fmt.Sprintf("<Muxer %p %d>", m, len(m.Handlers))
79
+}
80
+
81
// SetHandler sets the protocol handler on the Network's Muxer.
82
// This operation is threadsafe.
83
func (m *Mux) SetHandler(p ProtocolID, h StreamHandler) {
84
+ log.Debugf("%s setting handler for protocol: %s (%d)", m, p, len(p))
85
m.Lock()
79
- log.Debug("setting protocol ", p)
86
m.Handlers[p] = h
87
m.Unlock()
88
}