// Server TODO(rjeczalik): document func (cl *CLI) Reply(ctx *cli.Context) { l, err := fakerpc.ReadLog(ctx.GlobalString("log")) if err != nil { cl.Err(err) cl.Exit(1) } srv, err := fakerpc.NewServer(ctx.GlobalString("addr"), l) if err != nil { cl.Err(err) cl.Exit(1) } srv.Reply = func(src, dst *net.TCPAddr, n int64, err error) { if err != nil { cl.Err(fmt.Sprintf("fakerpc: T %s -> %s (%d) error: %v", src, dst, n, err)) } else { cl.Out(fmt.Sprintf("fakerpc: T %s -> %s (%d)", src, dst, n)) } } done := make(chan struct{}) go func() { if err := srv.ListenAndServe(); err != nil { cl.Err(err) cl.Exit(1) } close(done) }() cl.Out(fmt.Sprintf("fakerpc: Server replying on %s . . .", srv.Addr())) <-done }
// Show TODO(rjeczalik): document func (cl *CLI) Show(ctx *cli.Context) { l, err := fakerpc.ReadLog(ctx.GlobalString("log")) if err != nil { cl.Err(err) cl.Exit(1) } var buf bytes.Buffer if err = fakerpc.NgrepMarshal(&buf, l); err != nil { cl.Err(err) cl.Exit(1) } cl.Out(buf.String()) }