本站源代码
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

40 行
633B

  1. package driver
  2. type BatchPuter interface {
  3. BatchPut([]Write) error
  4. }
  5. type Write struct {
  6. Key []byte
  7. Value []byte
  8. }
  9. type WriteBatch struct {
  10. batch BatchPuter
  11. wb []Write
  12. }
  13. func (w *WriteBatch) Put(key, value []byte) {
  14. if value == nil {
  15. value = []byte{}
  16. }
  17. w.wb = append(w.wb, Write{key, value})
  18. }
  19. func (w *WriteBatch) Delete(key []byte) {
  20. w.wb = append(w.wb, Write{key, nil})
  21. }
  22. func (w *WriteBatch) Commit() error {
  23. return w.batch.BatchPut(w.wb)
  24. }
  25. func (w *WriteBatch) Rollback() error {
  26. w.wb = w.wb[0:0]
  27. return nil
  28. }
  29. func NewWriteBatch(puter BatchPuter) IWriteBatch {
  30. return &WriteBatch{puter, []Write{}}
  31. }
上海开阖软件有限公司 沪ICP备12045867号-1