fix(mux) expose method to SetDefaultHandler
Brian Tiger Chow committed
Jan 14, 2015 at 16:23 UTC
c341df0a4c7957d162e3fc11f4317ec77afcf33c
2 files changed
+12
-6
p2p/protocol/mux.go
+11
-5
@@ -24,8 +24,8 @@ type streamHandlerMap map[ID]inet.StreamHandler
24
// It contains the handlers for each protocol accepted.
25
// It dispatches handlers for streams opened by remote peers.
26
type Mux struct {
27
- // Default handles unknown protocols. Callers modify at your own risk.
28
- Default inet.StreamHandler
27
+ // defaultHandler handles unknown protocols. Callers modify at your own risk.
28
+ defaultHandler inet.StreamHandler
29
30
lock sync.RWMutex
31
handlers streamHandlerMap
@@ -63,9 +63,9 @@ func (m *Mux) readHeader(s io.Reader) (ID, inet.StreamHandler, error) {
63
m.lock.RUnlock()
64
65
switch {
66
- case !found && m.Default != nil:
67
- return p, m.Default, nil
68
- case !found && m.Default == nil:
66
+ case !found && m.defaultHandler != nil:
67
+ return p, m.defaultHandler, nil
68
+ case !found && m.defaultHandler == nil:
69
return p, nil, fmt.Errorf("%s no handler with name: %s (%d)", m, p, len(p))
70
default:
71
return p, h, nil
@@ -79,6 +79,12 @@ func (m *Mux) String() string {
79
return fmt.Sprintf("<Muxer %p %d>", m, len(m.handlers))
80
}
81
82
+func (m *Mux) SetDefaultHandler(h inet.StreamHandler) {
83
+ m.lock.Lock()
84
+ m.defaultHandler = h
85
+ m.lock.Unlock()
86
+}
87
+
88
// SetHandler sets the protocol handler on the Network's Muxer.
89
// This operation is threadsafe.
90
func (m *Mux) SetHandler(p ID, h inet.StreamHandler) {
p2p/protocol/mux_test.go
+1
-1
@@ -39,7 +39,7 @@ func TestHandler(t *testing.T) {
39
}
40
41
m := NewMux()
42
- m.Default = h("default")
42
+ m.SetDefaultHandler(h("default"))
43
m.SetHandler("/dht", h("bitswap"))
44
// m.Handlers["/ipfs"] = h("bitswap") // default!
45
m.SetHandler("/bitswap", h("bitswap"))