Fix Hub and StackSender to honor modes

StackSender.Send and Hub.Send now return a valid Sender and Receiver
when the corresponding flags are set in `mode`.

Signed-off-by: Solomon Hykes <solomon@docker.com>
This commit is contained in:
Solomon Hykes 2014-05-12 05:00:09 +00:00
parent e4beab1432
commit 2b547caa75
2 changed files with 10 additions and 4 deletions

View File

@ -9,11 +9,17 @@ import (
func TestHubSendEmpty(t *testing.T) {
hub := NewHub()
// Send to empty hub should silently drop
if r, w, err := hub.Send(&beam.Message{Name: "hello", Args: nil}, beam.R|beam.W); err != nil {
r, w, err := hub.Send(&beam.Message{Name: "hello", Args: nil}, beam.R|beam.W)
// Send must not return an error
if err != nil {
t.Fatal(err)
} else if r != nil {
}
// We set beam.R, so a valid receiver must be returned
if r == nil {
t.Fatalf("%#v", r)
} else if w != nil {
}
// We set beam.W, so a valid receiver must be returned
if w == nil {
t.Fatalf("%#v", w)
}
}

View File

@ -38,7 +38,7 @@ func (s *StackSender) Send(msg *beam.Message, mode int) (r beam.Receiver, w beam
return r, w, err
}
// Silently drop messages if no valid backend is available.
return nil, nil, nil
return NopSender{}.Send(msg, mode)
}
func (s *StackSender) Add(dst beam.Sender) *StackSender {