diff options
| author | chrislu <chris.lu@gmail.com> | 2025-06-11 20:46:13 -0700 |
|---|---|---|
| committer | chrislu <chris.lu@gmail.com> | 2025-06-11 20:46:13 -0700 |
| commit | e71d681feee81dbe01c59dbc657f8ce85be3f415 (patch) | |
| tree | 2053e1127874e14fbdc54e9dae873a7552e47f18 /weed | |
| parent | 7c4d98446b99fcaec16527ceefd1d670f21f9902 (diff) | |
| download | seaweedfs-e71d681feee81dbe01c59dbc657f8ce85be3f415.tar.xz seaweedfs-e71d681feee81dbe01c59dbc657f8ce85be3f415.zip | |
refactor
Diffstat (limited to 'weed')
| -rw-r--r-- | weed/storage/needle/needle_read.go | 38 | ||||
| -rw-r--r-- | weed/storage/needle/needle_read_tail.go | 15 |
2 files changed, 26 insertions, 27 deletions
diff --git a/weed/storage/needle/needle_read.go b/weed/storage/needle/needle_read.go index 416c8f4cb..25eabb2b3 100644 --- a/weed/storage/needle/needle_read.go +++ b/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 diff --git a/weed/storage/needle/needle_read_tail.go b/weed/storage/needle/needle_read_tail.go index f53a5654f..7dc1340e6 100644 --- a/weed/storage/needle/needle_read_tail.go +++ b/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)) +} |
