예제 #1
0
func dumpSetOp(conn *client.Conn, args []string) {
	op, err := setop.NewSetOpParser(args[2]).Parse()
	if err != nil {
		fmt.Println(err)
	} else {
		for _, res := range conn.SetExpression(setop.SetExpression{Dest: []byte(args[1]), Op: op}) {
			printSetOpRes(res)
		}
	}
}
예제 #2
0
func describeTree(conn *client.Conn, args []string) {
	if bytes, err := hex.DecodeString(args[1]); err != nil {
		fmt.Println(err)
	} else {
		if result, err := conn.DescribeTree(bytes); err != nil {
			fmt.Println(err)
		} else {
			fmt.Println(result)
		}
	}
}
예제 #3
0
func getActives(w http.ResponseWriter, r *http.Request, c *client.Conn) {
	var result []common.Message
	for _, item := range c.Slice(activeObjectsKey, nil, nil, true, true) {
		result = append(result, common.Message{
			Object: string(item.Key),
		})
	}
	w.Header().Set("Content-Type", "application/json; charset=UTF-8")
	if err := json.NewEncoder(w).Encode(result); err != nil {
		panic(err)
	}
}
예제 #4
0
func getViews(w http.ResponseWriter, r *http.Request, c *client.Conn) {
	uid := mux.Vars(r)["user_id"]
	vKey := uViewsKey(uid)
	var result []common.Message
	for _, item := range c.Slice(vKey, nil, nil, true, true) {
		result = append(result, common.Message{
			Type:   common.View,
			User:   uid,
			Object: string(item.Key),
		})
	}
	w.Header().Set("Content-Type", "application/json; charset=UTF-8")
	if err := json.NewEncoder(w).Encode(result); err != nil {
		panic(err)
	}
}
예제 #5
0
func testDump(t *testing.T, c *client.Conn) {
	ch, wa := c.Dump()
	ch <- [2][]byte{[]byte("testDumpk1"), []byte("testDumpv1")}
	ch <- [2][]byte{[]byte("testDumpk2"), []byte("testDumpv2")}
	close(ch)
	wa.Wait()
	if val, ex := c.Get([]byte("testDumpk1")); !ex || bytes.Compare(val, []byte("testDumpv1")) != 0 {
		t.Errorf("wrong value")
	}
	if val, ex := c.Get([]byte("testDumpk2")); !ex || bytes.Compare(val, []byte("testDumpv2")) != 0 {
		t.Errorf("wrong value")
	}
}
예제 #6
0
func describeAllTrees(conn *client.Conn, args []string) {
	fmt.Print(conn.DescribeAllTrees())
}
예제 #7
0
func subConfigure(conn *client.Conn, args []string) {
	conn.SubAddConfiguration([]byte(args[1]), args[2], args[3])
}
예제 #8
0
func del(conn *client.Conn, args []string) {
	conn.Del([]byte(args[1]))
}
예제 #9
0
func slice(conn *client.Conn, args []string) {
	for i, item := range conn.Slice([]byte(args[1]), []byte(args[2]), []byte(args[3]), true, false) {
		fmt.Printf("%v: %v => %v\n", i, string(item.Key), decode(item.Value))
	}
}
예제 #10
0
func put(conn *client.Conn, args []string) {
	conn.Put([]byte(args[1]), encode(args[2]))
}
예제 #11
0
func subClear(conn *client.Conn, args []string) {
	conn.SubClear([]byte(args[1]))
}
예제 #12
0
func nextIndex(conn *client.Conn, args []string) {
	if key, value, index, existed := conn.NextIndex([]byte(args[1]), *(mustAtoi(args[2]))); existed {
		fmt.Printf("%v: %v => %v\n", index, string(key), decode(value))
	}
}
예제 #13
0
func dump(conn *client.Conn, args []string) {
	dump, wait := conn.Dump()
	linedump(dump, wait)
}
예제 #14
0
func show(conn *client.Conn) {
	fmt.Println(conn.Describe())
}
예제 #15
0
func count(conn *client.Conn, args []string) {
	fmt.Println(conn.Count([]byte(args[1]), []byte(args[2]), []byte(args[3]), true, false))
}
예제 #16
0
func indexOf(conn *client.Conn, args []string) {
	if index, existed := conn.IndexOf([]byte(args[1]), []byte(args[2])); existed {
		fmt.Println(index)
	}
}
예제 #17
0
func size(conn *client.Conn, args []string) {
	fmt.Println(conn.Size())
}
예제 #18
0
func reverseSliceLen(conn *client.Conn, args []string) {
	for _, item := range conn.ReverseSliceLen([]byte(args[1]), []byte(args[2]), true, *(mustAtoi(args[3]))) {
		fmt.Printf("%v => %v\n", string(item.Key), decode(item.Value))
	}
}
예제 #19
0
func subGet(conn *client.Conn, args []string) {
	if value, existed := conn.SubGet([]byte(args[1]), []byte(args[2])); existed {
		fmt.Printf("%v\n", decode(value))
	}
}
예제 #20
0
func next(conn *client.Conn, args []string) {
	if key, value, existed := conn.Next([]byte(args[1])); existed {
		fmt.Printf("%v => %v\n", string(key), decode(value))
	}
}
예제 #21
0
func clear(conn *client.Conn, args []string) {
	conn.Clear()
}
예제 #22
0
func mirrorLast(conn *client.Conn, args []string) {
	if key, value, existed := conn.MirrorLast([]byte(args[1])); existed {
		fmt.Println(decode(key), "=>", string(value))
	}
}
예제 #23
0
func subDump(conn *client.Conn, args []string) {
	dump, wait := conn.SubDump([]byte(args[1]))
	linedump(dump, wait)
}
예제 #24
0
func subSize(conn *client.Conn, args []string) {
	fmt.Println(conn.SubSize([]byte(args[1])))
}
예제 #25
0
func subPut(conn *client.Conn, args []string) {
	conn.SubPut([]byte(args[1]), []byte(args[2]), encode(args[3]))
}
예제 #26
0
func subPrev(conn *client.Conn, args []string) {
	if key, value, existed := conn.SubPrev([]byte(args[1]), []byte(args[2])); existed {
		fmt.Printf("%v => %v\n", string(key), decode(value))
	}
}
예제 #27
0
func subDel(conn *client.Conn, args []string) {
	conn.SubDel([]byte(args[1]), []byte(args[2]))
}
예제 #28
0
func describeAll(conn *client.Conn, args []string) {
	for _, description := range conn.DescribeAllNodes() {
		fmt.Println(description.Describe())
	}
}
예제 #29
0
func last(conn *client.Conn, args []string) {
	if key, value, existed := conn.Last([]byte(args[1])); existed {
		fmt.Println(string(key), "=>", decode(value))
	}
}
예제 #30
0
func sliceIndex(conn *client.Conn, args []string) {
	for _, item := range conn.SliceIndex([]byte(args[1]), mustAtoi(args[2]), mustAtoi(args[3])) {
		fmt.Printf("%v: %v => %v\n", item.Index, string(item.Key), decode(item.Value))
	}
}