From 2b547caa75d0c2e7d976d19d3ccb0ee20f4666cf Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Mon, 12 May 2014 05:00:09 +0000 Subject: [PATCH] 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 --- utils/hub_test.go | 12 +++++++++--- utils/stack.go | 2 +- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/utils/hub_test.go b/utils/hub_test.go index 3ecd5a0a61..c9b40a4817 100644 --- a/utils/hub_test.go +++ b/utils/hub_test.go @@ -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) } } diff --git a/utils/stack.go b/utils/stack.go index 1309402b83..a8b1f6baea 100644 --- a/utils/stack.go +++ b/utils/stack.go @@ -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 {