Ver Fonte

beam/examples/beamsh: more useful debugging

Docker-DCO-1.1-Signed-off-by: Solomon Hykes <solomon@docker.com> (github: shykes)
Solomon Hykes há 11 anos atrás
pai
commit
34c5724b89
1 ficheiros alterados com 12 adições e 6 exclusões
  1. 12 6
      pkg/beam/examples/beamsh/beamsh.go

+ 12 - 6
pkg/beam/examples/beamsh/beamsh.go

@@ -56,23 +56,25 @@ func main() {
 	}
 }
 
-func beamCopy(dst *net.UnixConn, src *net.UnixConn) error {
+func beamCopy(dst *net.UnixConn, src *net.UnixConn) (int, error) {
+	var n int
 	for {
 		payload, attachment, err := beam.Receive(src)
 		if err == io.EOF {
-			return nil
+			return n, nil
 		} else if err != nil {
-			return err
+			return n, err
 		}
 		if err := beam.Send(dst, payload, attachment); err != nil {
 			if attachment != nil {
 				attachment.Close()
 			}
-			return err
+			return n, err
 		}
+		n++
 	}
 	panic("impossibru!")
-	return nil
+	return n, nil
 }
 
 type Handler func([]string, *net.UnixConn, *net.UnixConn)
@@ -165,7 +167,11 @@ func executeCommand(client *net.UnixConn, cmd *dockerscript.Command) error {
 	}()
 	go func() {
 		Debugf("[%s] copy start...\n", strings.Join(cmd.Args, " "))
-		beamCopy(client, outPub)
+		n, err := beamCopy(client, outPub)
+		if err != nil {
+			Fatal(err)
+		}
+		Debugf("[%s] copied %d messages\n", strings.Join(cmd.Args, " "), n)
 		Debugf("[%s] copy done\n", strings.Join(cmd.Args, " "))
 		tasks.Done()
 	}()