Browse Source

refactor

pull/6714/merge
chrislu 4 days ago
parent
commit
e71d681fee
  1. 38
      weed/storage/needle/needle_read.go
  2. 15
      weed/storage/needle/needle_read_tail.go

38
weed/storage/needle/needle_read.go

@ -177,38 +177,22 @@ func (n *Needle) readNeedleDataVersion2NonData(bytes []byte) (index int, err err
func ReadNeedleHeader(r backend.BackendStorageFile, version Version, offset int64) (n *Needle, bytes []byte, bodyLength int64, err error) {
n = new(Needle)
if version == Version1 || version == Version2 || version == Version3 {
bytes = make([]byte, NeedleHeaderSize)
var count int
count, err = r.ReadAt(bytes, offset)
if err == io.EOF && count == NeedleHeaderSize {
err = nil
}
if count <= 0 || err != nil {
return nil, bytes, 0, err
}
bytes = make([]byte, NeedleHeaderSize)
n.ParseNeedleHeader(bytes)
bodyLength = NeedleBodyLength(n.Size, version)
var count int
count, err = r.ReadAt(bytes, offset)
if err == io.EOF && count == NeedleHeaderSize {
err = nil
}
return
}
func PaddingLength(needleSize Size, version Version) Size {
if version == Version3 {
// this is same value as version2, but just listed here for clarity
return NeedlePaddingSize - ((NeedleHeaderSize + needleSize + NeedleChecksumSize + TimestampSize) % NeedlePaddingSize)
if count <= 0 || err != nil {
return nil, bytes, 0, err
}
return NeedlePaddingSize - ((NeedleHeaderSize + needleSize + NeedleChecksumSize) % NeedlePaddingSize)
}
func NeedleBodyLength(needleSize Size, version Version) int64 {
if version == Version3 {
return int64(needleSize) + NeedleChecksumSize + TimestampSize + int64(PaddingLength(needleSize, version))
}
return int64(needleSize) + NeedleChecksumSize + int64(PaddingLength(needleSize, version))
n.ParseNeedleHeader(bytes)
bodyLength = NeedleBodyLength(n.Size, version)
return
}
// n should be a needle already read the header

15
weed/storage/needle/needle_read_tail.go

@ -33,3 +33,18 @@ func (n *Needle) readNeedleTail(needleBody []byte, version Version) error {
}
return nil
}
func PaddingLength(needleSize Size, version Version) Size {
if version == Version3 {
// this is same value as version2, but just listed here for clarity
return NeedlePaddingSize - ((NeedleHeaderSize + needleSize + NeedleChecksumSize + TimestampSize) % NeedlePaddingSize)
}
return NeedlePaddingSize - ((NeedleHeaderSize + needleSize + NeedleChecksumSize) % NeedlePaddingSize)
}
func NeedleBodyLength(needleSize Size, version Version) int64 {
if version == Version3 {
return int64(needleSize) + NeedleChecksumSize + TimestampSize + int64(PaddingLength(needleSize, version))
}
return int64(needleSize) + NeedleChecksumSize + int64(PaddingLength(needleSize, version))
}
Loading…
Cancel
Save