39 lines
800 B
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() {
|
|
|
|
}
|