Ejemplo n.º 1
0
        public IEnumerable <FsFileStatusPage> ListFilesPaged(FsPath path, FileListParameters parameters)
        {
            int    count = 0;
            string after = null;

            while (true)
            {
                var result = RestClients.FileSystemClient.FileSystem.ListFileStatus(this.Account.Name, path.ToString(), parameters.PageSize, after);

                if (result.FileStatuses.FileStatus.Count > 0)
                {
                    var childitems = result.FileStatuses.FileStatus.Select(i => new FsFileStatus(i)).ToList();
                    var page       = new FsFileStatusPage(path, childitems);
                    yield return(page);

                    count += page.FileItems.Count;

                    if (parameters.Top > 0 && count >= parameters.Top)
                    {
                        break;
                    }
                    after = result.FileStatuses.FileStatus[result.FileStatuses.FileStatus.Count - 1].PathSuffix;
                }
                else
                {
                    break;
                }
            }
        }
Ejemplo n.º 2
0
 public IEnumerable <FsPathAndFileStatusPair> ListFiles(FsPath path, FileListParameters parameters)
 {
     foreach (var page in ListFilesPaged(path, parameters))
     {
         foreach (var filestatus in page.FileItems)
         {
             var item = new FsPathAndFileStatusPair(page.Path, filestatus);
             yield return(item);
         }
     }
 }
        public void List_Files_Recursive()
        {
            this.Initialize();

            int page_count  = 0;
            int child_count = 0;

            var lfo = new FileListParameters();

            lfo.PageSize = 4;

            var folder = new FsPath("/test_adl_demo_client/List_Files_Recursive");

            if (StoreClient.FileSystem.FolderExists(folder))
            {
                StoreClient.FileSystem.Delete(folder, true);
            }

            var bytes = new byte[0];
            var fcp   = new AdlClient.Models.FileCreateParameters();

            StoreClient.FileSystem.Create(folder.Append("f1"), bytes, fcp);
            StoreClient.FileSystem.Create(folder.Append("f2"), bytes, fcp);
            StoreClient.FileSystem.Create(folder.Append("a/f3"), bytes, fcp);
            StoreClient.FileSystem.Create(folder.Append("a/f4"), bytes, fcp);
            StoreClient.FileSystem.Create(folder.Append("a/b/f5"), bytes, fcp);
            StoreClient.FileSystem.Create(folder.Append("a/b/f6"), bytes, fcp);
            StoreClient.FileSystem.CreateDirectory(folder.Append("b"));

            var rlfo = new FileListRecursiveParameters();

            rlfo.PageSize = 4;

            var pages = this.StoreClient.FileSystem.ListFilesRecursivePaged(folder, rlfo);

            foreach (var page in pages)
            {
                foreach (var child in page.FileItems)
                {
                    child_count++;
                }
                page_count++;
            }

            Assert.AreEqual(3, page_count);
            Assert.AreEqual(9, child_count);
        }
        public void List_Files_Non_Recursive()
        {
            this.Initialize();

            int page_count  = 0;
            int child_count = 0;

            var lfo = new FileListParameters();

            lfo.PageSize = 4;

            var pages = this.StoreClient.FileSystem.ListFilesPaged(FsPath.Root, lfo);

            foreach (var page in pages)
            {
                foreach (var fileitem in page.FileItems)
                {
                    child_count++;
                }
                page_count++;
            }
        }
Ejemplo n.º 5
0
        public IEnumerable <FsFileStatusPage> ListFilesRecursivePaged(FsPath path, FileListRecursiveParameters parameters)
        {
            var queue = new Queue <FsPath>();

            queue.Enqueue(path);

            var flp = new FileListParameters();

            flp.PageSize = parameters.PageSize;
            flp.Top      = 0;

            int count = 0;

            while (queue.Count > 0)
            {
                FsPath cur_path = queue.Dequeue();

                foreach (var page in ListFilesPaged(cur_path, flp))
                {
                    yield return(page);

                    count += page.FileItems.Count;

                    if (parameters.Top > 0 && count >= parameters.Top)
                    {
                        break;
                    }

                    foreach (var item in page.FileItems)
                    {
                        if (item.Type == MSADLS.Models.FileType.DIRECTORY)
                        {
                            var new_path = cur_path.Append(item.PathSuffix);
                            queue.Enqueue(new_path);
                        }
                    }
                }
            }
        }