diff options
| author | Chris Lu <chris.lu@gmail.com> | 2012-12-21 02:20:38 -0800 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2012-12-21 02:20:38 -0800 |
| commit | 37afb31d0515e7b5231cb370d7ac18e2e3956c1e (patch) | |
| tree | 62b81f1ddf01cda190ee4492a3555622538f49a0 /weed-fs/src/pkg | |
| parent | 315879ce47cbc762eb4e689ac6d62614a546699f (diff) | |
| download | seaweedfs-37afb31d0515e7b5231cb370d7ac18e2e3956c1e.tar.xz seaweedfs-37afb31d0515e7b5231cb370d7ac18e2e3956c1e.zip | |
parallel logic for read and write
Diffstat (limited to 'weed-fs/src/pkg')
| -rw-r--r-- | weed-fs/src/pkg/storage/needle_read_write.go | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/weed-fs/src/pkg/storage/needle_read_write.go b/weed-fs/src/pkg/storage/needle_read_write.go index 0b8b98c5b..fce67fc60 100644 --- a/weed-fs/src/pkg/storage/needle_read_write.go +++ b/weed-fs/src/pkg/storage/needle_read_write.go @@ -19,7 +19,7 @@ func (n *Needle) Append(w io.Writer, version Version) uint32 { rest := NeedlePaddingSize - ((NeedleHeaderSize + n.Size + 4) % NeedlePaddingSize) util.Uint32toBytes(header[0:4], n.Checksum.Value()) w.Write(header[0 : 4+rest]) - return n.Size + return n.Size } else if version == Version2 { header := make([]byte, NeedleHeaderSize) util.Uint32toBytes(header[0:4], n.Cookie) @@ -56,7 +56,7 @@ func (n *Needle) Append(w io.Writer, version Version) uint32 { rest := NeedlePaddingSize - ((NeedleHeaderSize + n.Size + 4) % NeedlePaddingSize) util.Uint32toBytes(header[0:4], n.Checksum.Value()) w.Write(header[0 : 4+rest]) - return n.DataSize + return n.DataSize } return n.Size } @@ -90,20 +90,22 @@ func (n *Needle) readNeedleHeader(bytes []byte) { n.Size = util.BytesToUint32(bytes[12:NeedleHeaderSize]) } func (n *Needle) readNeedleDataVersion2(bytes []byte) { - index := 0 - n.DataSize = util.BytesToUint32(bytes[index : index+4]) - index = index + 4 - n.Data = bytes[index : index+int(n.DataSize)] - index = index + int(n.DataSize) - n.Flags = bytes[index] - index = index + 1 - if index < len(bytes) { + index, lenBytes := 0, len(bytes) + if index < lenBytes { + n.DataSize = util.BytesToUint32(bytes[index : index+4]) + index = index + 4 + n.Data = bytes[index : index+int(n.DataSize)] + index = index + int(n.DataSize) + n.Flags = bytes[index] + index = index + 1 + } + if index < lenBytes { n.NameSize = uint8(bytes[index]) index = index + 1 n.Name = bytes[index : index+int(n.NameSize)] index = index + int(n.NameSize) } - if index < len(bytes) { + if index < lenBytes { n.MimeSize = uint8(bytes[index]) index = index + 1 n.Mime = bytes[index : index+int(n.MimeSize)] |
