cubefs/blobstore/common/kvstore/proto.go
yuxiaobo 002bc4fbfb refactor(blobnode): optimize the implementation of blobnode meta
Signed-off-by: yuxiaobo <yuxiaobo@oppo.com>
2023-11-08 12:37:10 +08:00

49 lines
1.3 KiB
Go

// Copyright 2022 The CubeFS Authors.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
// implied. See the License for the specific language governing
// permissions and limitations under the License.
package kvstore
type KVStorage interface {
Put(kv KV) error
Get(key []byte) ([]byte, error)
Delete(key []byte) error
DeleteRange(start, end []byte) error
NewWriteBatch() *WriteBatch
DeleteBatch(keys [][]byte, safe bool) error
WriteBatch(kvs []KV, safe bool) error
DoBatch(batch *WriteBatch) error
Flush() error
NewSnapshot() *Snapshot
ReleaseSnapshot(snapshot *Snapshot)
NewIterator(snapshot *Snapshot, opts ...OpOption) Iterator
}
type Op struct {
// for put
PutKeys []KV
// for delete
DelKeys []KV
// for iterator
Ro *ReadOptions
Snap *Snapshot
}
type OpOption func(*Op)
func (op *Op) applyOpts(opts []OpOption) {
for _, opt := range opts {
opt(op)
}
}