Chris Lu
3 years ago
2 changed files with 45 additions and 31 deletions
@ -0,0 +1,42 @@ |
|||||
|
package storage |
||||
|
|
||||
|
import ( |
||||
|
"github.com/chrislusf/seaweedfs/weed/pb/volume_server_pb" |
||||
|
"github.com/chrislusf/seaweedfs/weed/storage/needle" |
||||
|
"github.com/chrislusf/seaweedfs/weed/storage/super_block" |
||||
|
) |
||||
|
|
||||
|
type VolumeFileScanner4ReadAll struct { |
||||
|
Stream volume_server_pb.VolumeServer_ReadAllNeedlesServer |
||||
|
V *Volume |
||||
|
} |
||||
|
|
||||
|
func (scanner *VolumeFileScanner4ReadAll) VisitSuperBlock(superBlock super_block.SuperBlock) error { |
||||
|
return nil |
||||
|
|
||||
|
} |
||||
|
func (scanner *VolumeFileScanner4ReadAll) ReadNeedleBody() bool { |
||||
|
return true |
||||
|
} |
||||
|
|
||||
|
func (scanner *VolumeFileScanner4ReadAll) VisitNeedle(n *needle.Needle, offset int64, needleHeader, needleBody []byte) error { |
||||
|
|
||||
|
nv, ok := scanner.V.nm.Get(n.Id) |
||||
|
if !ok { |
||||
|
return nil |
||||
|
} |
||||
|
if nv.Offset.ToActualOffset() != offset { |
||||
|
return nil |
||||
|
} |
||||
|
|
||||
|
sendErr := scanner.Stream.Send(&volume_server_pb.ReadAllNeedlesResponse{ |
||||
|
VolumeId: uint32(scanner.V.Id), |
||||
|
NeedleId: uint64(n.Id), |
||||
|
Cookie: uint32(n.Cookie), |
||||
|
NeedleBlob: n.Data, |
||||
|
}) |
||||
|
if sendErr != nil { |
||||
|
return sendErr |
||||
|
} |
||||
|
return nil |
||||
|
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue