MCPcopy Create free account
hub / github.com/couchbase/moss / Mutate

Method Mutate

store_compact.go:550–606  ·  view source on GitHub ↗
(operation uint64, key, val []byte)

Source from the content-addressed store, hash-verified

548}
549
550func (cw *compactWriter) Mutate(operation uint64, key, val []byte) error {
551 if cw.syncAfterBytes > 0 && cw.bytesSinceSync > cw.syncAfterBytes {
552 err := cw.file.Sync()
553 if err != nil {
554 return err
555 }
556 cw.bytesSinceSync = 0
557 }
558
559 keyStart := cw.bufWriter.Written()
560 _, err := cw.bufWriter.Write(key)
561 if err != nil {
562 return err
563 }
564
565 _, err = cw.bufWriter.Write(val)
566 if err != nil {
567 return err
568 }
569
570 keyLen := len(key)
571 valLen := len(val)
572
573 opKlVl := encodeOpKeyLenValLen(operation, keyLen, valLen)
574
575 if keyLen <= 0 && valLen <= 0 {
576 keyStart = 0
577 }
578
579 pair := []uint64{opKlVl, uint64(keyStart)}
580 kvsBuf, err := Uint64SliceToByteSlice(pair)
581 if err != nil {
582 return err
583 }
584
585 _, err = cw.kvsWriter.Write(kvsBuf)
586 if err != nil {
587 return err
588 }
589
590 switch operation {
591 case OperationSet:
592 cw.totOperationSet++
593 case OperationDel:
594 cw.totOperationDel++
595 case OperationMerge:
596 cw.totOperationMerge++
597 default:
598 }
599
600 cw.totKeyByte += uint64(keyLen)
601 cw.totValByte += uint64(valLen)
602
603 cw.bytesSinceSync += keyLen + valLen + 16 /* len(kvsBuf) */
604
605 return nil
606}

Callers

nothing calls this directly

Calls 5

encodeOpKeyLenValLenFunction · 0.85
SyncMethod · 0.80
WrittenMethod · 0.80
WriteMethod · 0.80
Uint64SliceToByteSliceFunction · 0.70

Tested by

no test coverage detected