From 8e530ead6e54abf157362226af4b820e40a3e33c Mon Sep 17 00:00:00 2001 From: Aanand Prasad Date: Thu, 19 Jun 2014 14:53:22 +0100 Subject: [PATCH] Implement OnGet Signed-off-by: Aanand Prasad --- backends/dockerclient.go | 15 ++++++--------- beam/server.go | 11 +++++++++++ 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/backends/dockerclient.go b/backends/dockerclient.go index f99dad27d0..072473202e 100644 --- a/backends/dockerclient.go +++ b/backends/dockerclient.go @@ -134,7 +134,7 @@ func (b *dockerClientBackend) newContainer(id string) beam.Sender { instance.OnVerb(beam.Attach, beam.Handler(c.attach)) instance.OnStart(c.start) instance.OnStop(c.stop) - instance.OnVerb(beam.Get, beam.Handler(c.get)) + instance.OnGet(c.get) return instance } @@ -191,23 +191,20 @@ func (c *container) stop() error { return nil } -func (c *container) get(ctx *beam.Message) error { +func (c *container) get() (string, error) { path := fmt.Sprintf("/containers/%s/json", c.id) resp, err := c.backend.client.call("GET", path, "") if err != nil { - return err + return "", err } respBody, err := ioutil.ReadAll(resp.Body) if err != nil { - return err + return "", err } if resp.StatusCode != 200 { - return fmt.Errorf("%s", respBody) + return "", fmt.Errorf("%s", respBody) } - if _, err := ctx.Ret.Send(&beam.Message{Verb: beam.Set, Args: []string{string(respBody)}}); err != nil { - return err - } - return nil + return string(respBody), nil } type client struct { diff --git a/beam/server.go b/beam/server.go index b241edf6fe..63b35a8f70 100644 --- a/beam/server.go +++ b/beam/server.go @@ -49,6 +49,17 @@ func (s *Server) OnSpawn(h func(cmd ...string) (Sender, error)) *Server { })) } +func (s *Server) OnGet(h func() (string, error)) *Server { + return s.OnVerb(Get, Handler(func(msg *Message) error { + content, err := h() + if err != nil { + return err + } + _, err = msg.Ret.Send(&Message{Verb: Set, Args: []string{content}}) + return err + })) +} + func (s *Server) OnStart(h func() error) *Server { return s.OnVerb(Start, Handler(func(msg *Message) error { if err := h(); err != nil {