aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2012-12-21 02:20:38 -0800
committerChris Lu <chris.lu@gmail.com>2012-12-21 02:20:38 -0800
commit37afb31d0515e7b5231cb370d7ac18e2e3956c1e (patch)
tree62b81f1ddf01cda190ee4492a3555622538f49a0
parent315879ce47cbc762eb4e689ac6d62614a546699f (diff)
downloadseaweedfs-37afb31d0515e7b5231cb370d7ac18e2e3956c1e.tar.xz
seaweedfs-37afb31d0515e7b5231cb370d7ac18e2e3956c1e.zip
parallel logic for read and write
-rw-r--r--weed-fs/src/pkg/storage/needle_read_write.go24
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)]