JCS-pub/client/internal/mount/vfs/dir_reader.go

39 lines
800 B
Go

package vfs
import "gitlink.org.cn/cloudream/jcs-pub/client/internal/mount/fuse"
type FuseDirReader struct {
allEntries []fuse.FsEntry
nextReadIndex int
}
func newFuseDirReader(entries []fuse.FsEntry) *FuseDirReader {
return &FuseDirReader{
allEntries: entries,
nextReadIndex: 0,
}
}
func (r *FuseDirReader) HasNext() bool {
return r.nextReadIndex < len(r.allEntries)
}
func (r *FuseDirReader) Next(n int) ([]fuse.FsEntry, error) {
if r.nextReadIndex >= len(r.allEntries) {
return nil, nil
}
if n > len(r.allEntries)-r.nextReadIndex {
n = len(r.allEntries) - r.nextReadIndex
}
entries := make([]fuse.FsEntry, n)
for i := 0; i < n; i++ {
entries[i] = r.allEntries[r.nextReadIndex+i]
}
r.nextReadIndex += n
return entries, nil
}
func (r *FuseDirReader) Close() {
}