예제 #1
0
func (self *VarcharStore) Get(bytes bs.ByteSlice) (key, value bs.ByteSlice, err error) {
	vc := self.varchar
	vkey := int64(bytes.Int64())
	bytes, err = vc.Read(vkey)
	if err != nil {
		return nil, nil, err
	}
	kv := load_varchar_kv(bytes)
	return kv.key, kv.val, nil
}
예제 #2
0
func (self *VarcharStore) Update(bytes, key, value bs.ByteSlice) (rbytes bs.ByteSlice, err error) {
	vc := self.varchar
	vkey := int64(bytes.Int64())
	kv := new_varchar_kv(key, value).Bytes()
	oldkv, err := vc.Read(vkey)
	if err != nil {
		return nil, err
	}
	if len(oldkv) == len(kv) {
		err = vc.Update(vkey, kv)
		if err != nil {
			return nil, err
		}
		return bs.ByteSlice64(uint64(vkey)), nil
	} else {
		err := vc.Remove(vkey)
		if err != nil {
			return nil, err
		}
		return self.Put(key, value)
	}
}
예제 #3
0
func (self *VarcharStore) Remove(bytes bs.ByteSlice) (err error) {
	vc := self.varchar
	vkey := int64(bytes.Int64())
	return vc.Remove(vkey)
}