diff options
Diffstat (limited to 'src/pkg/netchan/export.go')
-rw-r--r-- | src/pkg/netchan/export.go | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/src/pkg/netchan/export.go b/src/pkg/netchan/export.go index 55eba0e2e..2209f04e8 100644 --- a/src/pkg/netchan/export.go +++ b/src/pkg/netchan/export.go @@ -181,8 +181,8 @@ func (client *expClient) run() { // The header is passed by value to avoid issues of overwriting. func (client *expClient) serveRecv(nch *netChan, hdr header, count int64) { for { - val, closed := nch.recv() - if closed { + val, ok := nch.recv() + if !ok { if err := client.encode(&hdr, payClosed, nil); err != nil { expLog("error encoding server closed message:", err) } @@ -221,7 +221,7 @@ func (client *expClient) serveSend(hdr header) { return } // Create a new value for each received item. - val := reflect.MakeZero(nch.ch.Type().(*reflect.ChanType).Elem()) + val := reflect.Zero(nch.ch.Type().Elem()) if err := client.decode(val); err != nil { expLog("value decode:", err, "; type ", nch.ch.Type()) return @@ -340,26 +340,26 @@ func (exp *Exporter) Sync(timeout int64) os.Error { return exp.clientSet.sync(timeout) } -func checkChan(chT interface{}, dir Dir) (*reflect.ChanValue, os.Error) { - chanType, ok := reflect.Typeof(chT).(*reflect.ChanType) - if !ok { - return nil, os.ErrorString("not a channel") +func checkChan(chT interface{}, dir Dir) (reflect.Value, os.Error) { + chanType := reflect.Typeof(chT) + if chanType.Kind() != reflect.Chan { + return reflect.Value{}, os.ErrorString("not a channel") } if dir != Send && dir != Recv { - return nil, os.ErrorString("unknown channel direction") + return reflect.Value{}, os.ErrorString("unknown channel direction") } - switch chanType.Dir() { + switch chanType.ChanDir() { case reflect.BothDir: case reflect.SendDir: if dir != Recv { - return nil, os.ErrorString("to import/export with Send, must provide <-chan") + return reflect.Value{}, os.ErrorString("to import/export with Send, must provide <-chan") } case reflect.RecvDir: if dir != Send { - return nil, os.ErrorString("to import/export with Recv, must provide chan<-") + return reflect.Value{}, os.ErrorString("to import/export with Recv, must provide chan<-") } } - return reflect.NewValue(chT).(*reflect.ChanValue), nil + return reflect.NewValue(chT), nil } // Export exports a channel of a given type and specified direction. The |