1
0
Fork 0

CLI flush action

This commit is contained in:
Gregory Eremin 2014-09-28 18:17:02 +04:00
parent 5f1ed72712
commit a79904ece6
2 changed files with 21 additions and 7 deletions

View File

@ -1,6 +1,7 @@
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"os"
@ -89,6 +90,18 @@ func main() {
}
},
},
{
Name: "flush",
Usage: "Flush all messages from given queues",
Action: func(c *cli.Context) {
if msgs := bsq.Flush(c.Args()...); msgs != nil {
jsn, _ := json.Marshal(msgs)
fmt.Println(string(jsn))
} else {
fmt.Printf("Failed to flush queues %s\n", strings.Join(c.Args(), ", "))
}
},
},
{
Name: "status",
Usage: "Show server status",

View File

@ -103,32 +103,33 @@ func (c *Client) Subscribe(queues ...string) *Message {
}
}
func (c *Client) Flush(queues ...string) (messages []*Message) {
func (c *Client) Flush(queues ...string) []*Message {
url := c.url(flushEndpoint, "?queues=", strings.Join(queues, ","))
_, body := c.get(url)
var tmp []map[string]string
if err := json.Unmarshal(body, &tmp); err != nil {
return
return nil
}
messages = []*Message{}
messages := []*Message{}
for _, msg := range tmp {
messages = append(messages, &Message{msg["queue"], []byte(msg["message"])})
}
return
return messages
}
func (c *Client) Status() (stat []*QueueInfo) {
func (c *Client) Status() []*QueueInfo {
url := c.url(statusEndpoit)
_, body := c.get(url)
tmp := make(map[string]map[string]int)
if err := json.Unmarshal(body, &tmp); err != nil {
return
return nil
}
stat := []*QueueInfo{}
for queue, info := range tmp {
qi := &QueueInfo{
Name: queue,
@ -138,7 +139,7 @@ func (c *Client) Status() (stat []*QueueInfo) {
stat = append(stat, qi)
}
return
return stat
}
func (c *Client) Debug() *DebugInfo {