package server // import ( // "github.com/siddontang/go/hack" // "github.com/siddontang/ledisdb/ledis" // "strings" // ) // func bgetCommand(c *client) error { // args := c.args // if len(args) != 1 { // return ErrCmdParams // } // if v, err := c.db.BGet(args[0]); err != nil { // return err // } else { // c.resp.writeBulk(v) // } // return nil // } // func bdeleteCommand(c *client) error { // args := c.args // if len(args) != 1 { // return ErrCmdParams // } // if n, err := c.db.BDelete(args[0]); err != nil { // return err // } else { // c.resp.writeInteger(n) // } // return nil // } // func bsetbitCommand(c *client) error { // args := c.args // if len(args) != 3 { // return ErrCmdParams // } // var err error // var offset int32 // var val int8 // offset, err = ledis.StrInt32(args[1], nil) // if err != nil { // return ErrOffset // } // val, err = ledis.StrInt8(args[2], nil) // if val != 0 && val != 1 { // return ErrBool // } // if err != nil { // return ErrBool // } // if ori, err := c.db.BSetBit(args[0], offset, uint8(val)); err != nil { // return err // } else { // c.resp.writeInteger(int64(ori)) // } // return nil // } // func bgetbitCommand(c *client) error { // args := c.args // if len(args) != 2 { // return ErrCmdParams // } // offset, err := ledis.StrInt32(args[1], nil) // if err != nil { // return ErrOffset // } // if v, err := c.db.BGetBit(args[0], offset); err != nil { // return err // } else { // c.resp.writeInteger(int64(v)) // } // return nil // } // func bmsetbitCommand(c *client) error { // args := c.args // if len(args) < 3 { // return ErrCmdParams // } // key := args[0] // if len(args[1:])&1 != 0 { // return ErrCmdParams // } else { // args = args[1:] // } // var err error // var offset int32 // var val int8 // pairs := make([]ledis.BitPair, len(args)>>1) // for i := 0; i < len(pairs); i++ { // offset, err = ledis.StrInt32(args[i<<1], nil) // if err != nil { // return ErrOffset // } // val, err = ledis.StrInt8(args[i<<1+1], nil) // if val != 0 && val != 1 { // return ErrBool // } // if err != nil { // return ErrBool // } // pairs[i].Pos = offset // pairs[i].Val = uint8(val) // } // if place, err := c.db.BMSetBit(key, pairs...); err != nil { // return err // } else { // c.resp.writeInteger(place) // } // return nil // } // func bcountCommand(c *client) error { // args := c.args // argCnt := len(args) // if !(argCnt > 0 && argCnt <= 3) { // return ErrCmdParams // } // // BCount(key []byte, start int32, end int32) (cnt int32, err error) { // var err error // var start, end int32 = 0, -1 // if argCnt > 1 { // start, err = ledis.StrInt32(args[1], nil) // if err != nil { // return ErrValue // } // } // if argCnt > 2 { // end, err = ledis.StrInt32(args[2], nil) // if err != nil { // return ErrValue // } // } // if cnt, err := c.db.BCount(args[0], start, end); err != nil { // return err // } else { // c.resp.writeInteger(int64(cnt)) // } // return nil // } // func boptCommand(c *client) error { // args := c.args // if len(args) < 2 { // return ErrCmdParams // } // opDesc := strings.ToLower(hack.String(args[0])) // dstKey := args[1] // srcKeys := args[2:] // var op uint8 // switch opDesc { // case "and": // op = ledis.OPand // case "or": // op = ledis.OPor // case "xor": // op = ledis.OPxor // case "not": // op = ledis.OPnot // default: // return ErrCmdParams // } // if len(srcKeys) == 0 { // return ErrCmdParams // } // if blen, err := c.db.BOperation(op, dstKey, srcKeys...); err != nil { // return err // } else { // c.resp.writeInteger(int64(blen)) // } // return nil // } // func bexpireCommand(c *client) error { // args := c.args // if len(args) != 2 { // return ErrCmdParams // } // duration, err := ledis.StrInt64(args[1], nil) // if err != nil { // return ErrValue // } // if v, err := c.db.BExpire(args[0], duration); err != nil { // return err // } else { // c.resp.writeInteger(v) // } // return nil // } // func bexpireAtCommand(c *client) error { // args := c.args // if len(args) != 2 { // return ErrCmdParams // } // when, err := ledis.StrInt64(args[1], nil) // if err != nil { // return ErrValue // } // if v, err := c.db.BExpireAt(args[0], when); err != nil { // return err // } else { // c.resp.writeInteger(v) // } // return nil // } // func bttlCommand(c *client) error { // args := c.args // if len(args) != 1 { // return ErrCmdParams // } // if v, err := c.db.BTTL(args[0]); err != nil { // return err // } else { // c.resp.writeInteger(v) // } // return nil // } // func bpersistCommand(c *client) error { // args := c.args // if len(args) != 1 { // return ErrCmdParams // } // if n, err := c.db.BPersist(args[0]); err != nil { // return err // } else { // c.resp.writeInteger(n) // } // return nil // } // func init() { // register("bget", bgetCommand) // register("bdelete", bdeleteCommand) // register("bsetbit", bsetbitCommand) // register("bgetbit", bgetbitCommand) // register("bmsetbit", bmsetbitCommand) // register("bcount", bcountCommand) // register("bopt", boptCommand) // register("bexpire", bexpireCommand) // register("bexpireat", bexpireAtCommand) // register("bttl", bttlCommand) // register("bpersist", bpersistCommand) // }