aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2020-12-12 12:42:53 -0800
committerChris Lu <chris.lu@gmail.com>2020-12-12 12:42:53 -0800
commit316d1b4e691f5218042a3b2ccbe8d234ef182171 (patch)
tree6343aa218b930179e1beccd3f1da4ad4046fa8fa
parent03637d6f57e34be281e778c5e9fa3e3096331c2d (diff)
downloadseaweedfs-316d1b4e691f5218042a3b2ccbe8d234ef182171.tar.xz
seaweedfs-316d1b4e691f5218042a3b2ccbe8d234ef182171.zip
refactor APIs
-rw-r--r--weed/pb/filer_pb/filer_client.go82
1 files changed, 44 insertions, 38 deletions
diff --git a/weed/pb/filer_pb/filer_client.go b/weed/pb/filer_pb/filer_client.go
index 9fe5fd146..079fbd671 100644
--- a/weed/pb/filer_pb/filer_client.go
+++ b/weed/pb/filer_pb/filer_client.go
@@ -85,57 +85,63 @@ func ReadDirAllEntries(filerClient FilerClient, fullDirPath util.FullPath, prefi
}
func List(filerClient FilerClient, parentDirectoryPath, prefix string, fn EachEntryFunciton, startFrom string, inclusive bool, limit uint32) (err error) {
- return doList(filerClient, util.FullPath(parentDirectoryPath), prefix, fn, startFrom, inclusive, limit)
+ return filerClient.WithFilerClient(func(client SeaweedFilerClient) error {
+ return doSeaweedList(client, util.FullPath(parentDirectoryPath), prefix, fn, startFrom, inclusive, limit)
+ })
}
func doList(filerClient FilerClient, fullDirPath util.FullPath, prefix string, fn EachEntryFunciton, startFrom string, inclusive bool, limit uint32) (err error) {
+ return filerClient.WithFilerClient(func(client SeaweedFilerClient) error {
+ return doSeaweedList(client, fullDirPath, prefix, fn, startFrom, inclusive, limit)
+ })
+}
- err = filerClient.WithFilerClient(func(client SeaweedFilerClient) error {
+func SeaweedList(client SeaweedFilerClient, parentDirectoryPath, prefix string, fn EachEntryFunciton, startFrom string, inclusive bool, limit uint32) (err error) {
+ return doSeaweedList(client, util.FullPath(parentDirectoryPath), prefix, fn, startFrom, inclusive, limit)
+}
- request := &ListEntriesRequest{
- Directory: string(fullDirPath),
- Prefix: prefix,
- StartFromFileName: startFrom,
- Limit: limit,
- InclusiveStartFrom: inclusive,
- }
+func doSeaweedList(client SeaweedFilerClient, fullDirPath util.FullPath, prefix string, fn EachEntryFunciton, startFrom string, inclusive bool, limit uint32) (err error) {
- glog.V(4).Infof("read directory: %v", request)
- ctx, cancel := context.WithCancel(context.Background())
- defer cancel()
- stream, err := client.ListEntries(ctx, request)
- if err != nil {
- return fmt.Errorf("list %s: %v", fullDirPath, err)
- }
+ request := &ListEntriesRequest{
+ Directory: string(fullDirPath),
+ Prefix: prefix,
+ StartFromFileName: startFrom,
+ Limit: limit,
+ InclusiveStartFrom: inclusive,
+ }
- var prevEntry *Entry
- for {
- resp, recvErr := stream.Recv()
- if recvErr != nil {
- if recvErr == io.EOF {
- if prevEntry != nil {
- if err := fn(prevEntry, true); err != nil {
- return err
- }
+ glog.V(4).Infof("read directory: %v", request)
+ ctx, cancel := context.WithCancel(context.Background())
+ defer cancel()
+ stream, err := client.ListEntries(ctx, request)
+ if err != nil {
+ return fmt.Errorf("list %s: %v", fullDirPath, err)
+ }
+
+ var prevEntry *Entry
+ for {
+ resp, recvErr := stream.Recv()
+ if recvErr != nil {
+ if recvErr == io.EOF {
+ if prevEntry != nil {
+ if err := fn(prevEntry, true); err != nil {
+ return err
}
- break
- } else {
- return recvErr
}
+ break
+ } else {
+ return recvErr
}
- if prevEntry != nil {
- if err := fn(prevEntry, false); err != nil {
- return err
- }
+ }
+ if prevEntry != nil {
+ if err := fn(prevEntry, false); err != nil {
+ return err
}
- prevEntry = resp.Entry
}
+ prevEntry = resp.Entry
+ }
- return nil
-
- })
-
- return
+ return nil
}
func Exists(filerClient FilerClient, parentDirectoryPath string, entryName string, isDirectory bool) (exists bool, err error) {