コード例 #1
0
ファイル: cli.go プロジェクト: rjeczalik/fakerpc
// 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
}
コード例 #2
0
ファイル: cli.go プロジェクト: rjeczalik/fakerpc
// 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())
}