seaweedfs/weed/storage/types/needle_types.go

54 lines
1.2 KiB
Go
Raw Normal View History

package types
import (
2018-07-22 00:39:10 +00:00
"fmt"
"github.com/chrislusf/seaweedfs/weed/util"
2018-07-22 00:39:10 +00:00
"math"
"strconv"
)
type Offset uint32
type Cookie uint32
const (
OffsetSize = 4
SizeSize = 4 // uint32 size
NeedleEntrySize = NeedleIdSize + OffsetSize + SizeSize
2018-07-24 08:36:04 +00:00
TimestampSize = 8 // int64 size
NeedlePaddingSize = 8
MaxPossibleVolumeSize = 4 * 1024 * 1024 * 1024 * 8
TombstoneFileSize = math.MaxUint32
CookieSize = 4
)
func CookieToBytes(bytes []byte, cookie Cookie) {
util.Uint32toBytes(bytes, uint32(cookie))
}
2018-07-22 00:39:10 +00:00
func Uint32ToCookie(cookie uint32) Cookie {
return Cookie(cookie)
}
2018-07-22 00:39:10 +00:00
func BytesToCookie(bytes []byte) Cookie {
return Cookie(util.BytesToUint32(bytes[0:4]))
}
2018-07-09 07:22:50 +00:00
func ParseCookie(cookieString string) (Cookie, error) {
cookie, err := strconv.ParseUint(cookieString, 16, 32)
if err != nil {
return 0, fmt.Errorf("needle cookie %s format error: %v", cookieString, err)
}
return Cookie(cookie), nil
}
func OffsetToBytes(bytes []byte, offset Offset) {
util.Uint32toBytes(bytes, uint32(offset))
}
2018-07-22 00:39:10 +00:00
func Uint32ToOffset(offset uint32) Offset {
2018-07-08 09:39:04 +00:00
return Offset(offset)
}
2018-07-22 00:39:10 +00:00
func BytesToOffset(bytes []byte) Offset {
return Offset(util.BytesToUint32(bytes[0:4]))
}