123456789101112131415161718192021222324252627282930 |
- package needle_map
- import (
- . "github.com/chrislusf/seaweedfs/weed/storage/types"
- "github.com/chrislusf/seaweedfs/weed/util"
- "github.com/google/btree"
- )
- type NeedleValue struct {
- Key NeedleId
- Offset Offset `comment:"Volume offset"` //since aligned to 8 bytes, range is 4G*8=32G
- Size Size `comment:"Size of the data portion"`
- }
- func (this NeedleValue) Less(than btree.Item) bool {
- that := than.(NeedleValue)
- return this.Key < that.Key
- }
- func (nv NeedleValue) ToBytes() []byte {
- return ToBytes(nv.Key, nv.Offset, nv.Size)
- }
- func ToBytes(key NeedleId, offset Offset, size Size) []byte {
- bytes := make([]byte, NeedleIdSize+OffsetSize+SizeSize)
- NeedleIdToBytes(bytes[0:NeedleIdSize], key)
- OffsetToBytes(bytes[NeedleIdSize:NeedleIdSize+OffsetSize], offset)
- util.Uint32toBytes(bytes[NeedleIdSize+OffsetSize:NeedleIdSize+OffsetSize+SizeSize], uint32(size))
- return bytes
- }
|