Implement OnLog and OnError

Signed-off-by: Aanand Prasad <aanand.prasad@gmail.com>
This commit is contained in:
Aanand Prasad 2014-06-19 15:14:57 +01:00 committed by Aaron Feng
parent 3ac10e0c92
commit 97a0b78d35
2 changed files with 18 additions and 6 deletions

View File

@ -27,6 +27,12 @@ func (s *Server) OnVerb(v Verb, h Sender) *Server {
return s
}
func (s *Server) OnLog(h func(...string) error) *Server {
return s.OnVerb(Log, Handler(func(msg *Message) error {
return h(msg.Args...)
}))
}
func (s *Server) OnLs(h func() ([]string, error)) *Server {
return s.OnVerb(Ls, Handler(func(msg *Message) error {
names, err := h()
@ -55,6 +61,12 @@ func (s *Server) OnAttach(h func(name string, ret Sender) error) *Server {
}))
}
func (s *Server) OnError(h func(...string) error) *Server {
return s.OnVerb(Error, Handler(func(msg *Message) error {
return h(msg.Args...)
}))
}
func (s *Server) OnGet(h func() (string, error)) *Server {
return s.OnVerb(Get, Handler(func(msg *Message) error {
content, err := h()

View File

@ -25,14 +25,14 @@ func main() {
func cmdDaemon(c *cli.Context) {
app := beam.NewServer()
app.OnLog(beam.Handler(func(msg *beam.Message) error {
log.Printf("%s\n", strings.Join(msg.Args, " "))
app.OnLog(func(args ...string) error {
log.Printf("%s\n", strings.Join(args, " "))
return nil
}))
app.OnError(beam.Handler(func(msg *beam.Message) error {
Fatalf("Fatal: %v", strings.Join(msg.Args[:1], ""))
})
app.OnError(func(args ...string) error {
Fatalf("Fatal: %v", strings.Join(args[:1], ""))
return nil
}))
})
back := backends.New()
if len(c.Args()) == 0 {
names, err := back.Ls()