Merge pull request #93 from shykes/pr_out_fix_debug_after_switch_to_libchan

This commit is contained in:
Solomon Hykes 2014-06-18 23:52:08 -07:00
commit 2f3ab83188
2 changed files with 34 additions and 4 deletions

30
beam/nop.go Normal file
View File

@ -0,0 +1,30 @@
package beam
import (
"github.com/docker/libchan"
"io"
)
type NopSender struct{}
func (s NopSender) Send(msg *Message) (Receiver, error) {
return NopReceiver{}, nil
}
func (s NopSender) Close() error {
return nil
}
func (s NopSender) Unwrap() libchan.Sender {
return libchan.NopSender{}
}
type NopReceiver struct{}
func (r NopReceiver) Receive(mode int) (*Message, error) {
return nil, io.EOF
}
func (r NopReceiver) Unwrap() libchan.Receiver {
return libchan.NopReceiver{}
}

View File

@ -77,7 +77,7 @@ func (dbg *debug) catchall(msg *beam.Message) (err error) {
Args: msg.Args, Args: msg.Args,
Att: msg.Att, Att: msg.Att,
Ret: &replyHandler{ Ret: &replyHandler{
out: msg.Ret, Sender: msg.Ret,
}, },
} }
@ -93,16 +93,16 @@ func (dbg *debug) catchall(msg *beam.Message) (err error) {
// We use a replyHandler to provide context for relaying the return channel // We use a replyHandler to provide context for relaying the return channel
// of the origin message. // of the origin message.
type replyHandler struct { type replyHandler struct {
out beam.Sender beam.Sender
} }
// Send a message using the out channel // Send a message using the out channel
func (rh *replyHandler) Send(msg *beam.Message) (receiver beam.Receiver, err error) { func (rh *replyHandler) Send(msg *beam.Message) (receiver beam.Receiver, err error) {
log.Printf("[debug] <--- Downstream Message { Verb: %s, Args: %v }\n", msg.Verb, msg.Args) log.Printf("[debug] <--- Downstream Message { Verb: %s, Args: %v }\n", msg.Verb, msg.Args)
return nil, forward(rh.out, msg) return nil, forward(rh.Sender, msg)
} }
func (rh *replyHandler) Close() (err error) { func (rh *replyHandler) Close() (err error) {
// Since we don't allow the downstream handler to close the return channel, we do so here. // Since we don't allow the downstream handler to close the return channel, we do so here.
return rh.out.Close() return rh.Sender.Close()
} }