Ejemplo n.º 1
0
        public override async Task <object> Fetch()
        {
            var u = new Uri(uri);

            using (var stream = await ListAction.Action(u, new BaseQuery(this)))
            {
                return(BaseResource.FromStream(u, stream));
            }
        }
Ejemplo n.º 2
0
        public async override Task <FileSize> GetSize(Action <BaseResource, List <BaseResource> > lambda)
        {
            List <BaseResource> contents;

            await Request.GetLock();

            try
            {
                using (var stream = await ListAction.Action(GetUri(), new Queries.BaseQuery()))
                {
                    contents = BaseResource.FromStream(GetUri(), stream);
                }
            }
            finally
            {
                Request.ReleaseLock();
            }

            lambda(this, contents);

            var subfolder = new List <Task>();

            foreach (var c in contents)
            {
                subfolder.Add(Task.Run(async() =>
                {
                    var s        = await c.GetSize(lambda);
                    var sizeLock = new object();
                    lock (sizeLock)
                    {
                        Size += s;
                    }
                }));
            }
            await Task.WhenAll(subfolder);

            return(Size);
        }