@cryptotaxi247 / kubo / commits / c341df0a4

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"))