resp server
This commit is contained in:
parent
cdeb9d704b
commit
b11c619650
@ -8,6 +8,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"os"
|
"os"
|
||||||
|
"runtime"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
@ -316,7 +317,6 @@ func (c *Controller) command(msg *server.Message, w io.Writer) (res string, d co
|
|||||||
}
|
}
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
okResp = okResp
|
|
||||||
switch msg.Command {
|
switch msg.Command {
|
||||||
default:
|
default:
|
||||||
err = fmt.Errorf("unknown command '%s'", msg.Values[0])
|
err = fmt.Errorf("unknown command '%s'", msg.Values[0])
|
||||||
@ -357,8 +357,8 @@ func (c *Controller) command(msg *server.Message, w io.Writer) (res string, d co
|
|||||||
// resp = okResp()
|
// resp = okResp()
|
||||||
// case "stats":
|
// case "stats":
|
||||||
// resp, err = c.cmdStats(nline)
|
// resp, err = c.cmdStats(nline)
|
||||||
// case "server":
|
case "server":
|
||||||
// resp, err = c.cmdServer(nline)
|
res, err = c.cmdServer(msg)
|
||||||
case "scan":
|
case "scan":
|
||||||
res, err = c.cmdScan(msg)
|
res, err = c.cmdScan(msg)
|
||||||
case "nearby":
|
case "nearby":
|
||||||
@ -375,8 +375,9 @@ func (c *Controller) command(msg *server.Message, w io.Writer) (res string, d co
|
|||||||
// err = c.cmdAOF(nline, w)
|
// err = c.cmdAOF(nline, w)
|
||||||
// case "aofmd5":
|
// case "aofmd5":
|
||||||
// resp, err = c.cmdAOFMD5(nline)
|
// resp, err = c.cmdAOFMD5(nline)
|
||||||
// case "gc":
|
case "gc":
|
||||||
// go runtime.GC()
|
go runtime.GC()
|
||||||
|
res = okResp()
|
||||||
// resp = okResp()
|
// resp = okResp()
|
||||||
// case "aofshrink":
|
// case "aofshrink":
|
||||||
// go c.aofshrink()
|
// go c.aofshrink()
|
||||||
|
@ -4,9 +4,12 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"runtime"
|
"runtime"
|
||||||
|
"sort"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/google/btree"
|
"github.com/google/btree"
|
||||||
|
"github.com/tidwall/resp"
|
||||||
|
"github.com/tidwall/tile38/controller/server"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (c *Controller) cmdStats(line string) (string, error) {
|
func (c *Controller) cmdStats(line string) (string, error) {
|
||||||
@ -36,9 +39,9 @@ func (c *Controller) cmdStats(line string) (string, error) {
|
|||||||
}
|
}
|
||||||
return `{"ok":true,"stats":` + string(data) + `,"elapsed":"` + time.Now().Sub(start).String() + "\"}", nil
|
return `{"ok":true,"stats":` + string(data) + `,"elapsed":"` + time.Now().Sub(start).String() + "\"}", nil
|
||||||
}
|
}
|
||||||
func (c *Controller) cmdServer(line string) (string, error) {
|
func (c *Controller) cmdServer(msg *server.Message) (res string, err error) {
|
||||||
start := time.Now()
|
start := time.Now()
|
||||||
if line != "" {
|
if len(msg.Values) != 1 {
|
||||||
return "", errInvalidNumberOfArguments
|
return "", errInvalidNumberOfArguments
|
||||||
}
|
}
|
||||||
m := make(map[string]interface{})
|
m := make(map[string]interface{})
|
||||||
@ -77,11 +80,35 @@ func (c *Controller) cmdServer(line string) (string, error) {
|
|||||||
m["pointer_size"] = (32 << uintptr(uint64(^uintptr(0))>>63)) / 8
|
m["pointer_size"] = (32 << uintptr(uint64(^uintptr(0))>>63)) / 8
|
||||||
m["read_only"] = c.config.ReadOnly
|
m["read_only"] = c.config.ReadOnly
|
||||||
|
|
||||||
|
switch msg.OutputType {
|
||||||
|
case server.JSON:
|
||||||
data, err := json.Marshal(m)
|
data, err := json.Marshal(m)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
return `{"ok":true,"stats":` + string(data) + `,"elapsed":"` + time.Now().Sub(start).String() + "\"}", nil
|
res = `{"ok":true,"stats":` + string(data) + `,"elapsed":"` + time.Now().Sub(start).String() + "\"}"
|
||||||
|
case server.RESP:
|
||||||
|
var keys []string
|
||||||
|
for key, _ := range m {
|
||||||
|
keys = append(keys, key)
|
||||||
|
}
|
||||||
|
sort.Strings(keys)
|
||||||
|
|
||||||
|
var vals []resp.Value
|
||||||
|
|
||||||
|
for _, key := range keys {
|
||||||
|
val := m[key]
|
||||||
|
vals = append(vals, resp.StringValue(key))
|
||||||
|
vals = append(vals, resp.StringValue(fmt.Sprintf("%v", val)))
|
||||||
|
}
|
||||||
|
data, err := resp.ArrayValue(vals).MarshalRESP()
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
res = string(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
return res, nil
|
||||||
}
|
}
|
||||||
func (c *Controller) statsCollections(line string) (string, error) {
|
func (c *Controller) statsCollections(line string) (string, error) {
|
||||||
start := time.Now()
|
start := time.Now()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user