internal bool ValidateTree(PackageInstallsFromCacheStatus installsFromCacheStatus)
        {
            var dependencies = this.GetDependencyCount(true);

            Debug.Assert(installsFromCacheStatus.Requested == 1);
            Debug.Assert(installsFromCacheStatus.Total == dependencies + 1);

            return(true);
        }
        public PackageInstallsFromCacheStatus GetInstallFromCacheStatus(string mode)
        {
            if (installsFromCacheStatus == null)
            {
                installsFromCacheStatus = new PackageInstallsFromCacheStatus("No activity reported");
            }
            else if (lastInstallsFromCacheStatusSummary == installsFromCacheStatus.StatusSummary)
            {
                installsFromCacheStatus.StatusSummary   = null;
                installsFromCacheStatus.StatusIsError   = false;
                installsFromCacheStatus.StatusIsSuccess = false;
            }

            installsFromCacheStatus.AddInstalls(installsFromCacheToProcess, DateTime.Now);

            installsFromCacheStatus.NothingToPoll = this.NothingToPoll;
            lastInstallsFromCacheStatusSummary    = installsFromCacheStatus.StatusSummary;

            return(installsFromCacheStatus);
        }
        public bool QueueInstallFromCache(string mode, string install, string cachePath, string packagePath)
        {
            using (lockObject.Lock())
            {
                if (NO_INSTALL_FROM_CACHE)
                {
                    return(false);
                }
                else
                {
                    if (!installsFromCacheToProcess.ContainsKey(install))
                    {
                        var workingInstallFromCache = new PackageWorkingInstallFromCache(mode, install, cachePath, packagePath, packageModules);

                        if (installsFromCacheStatus == null)
                        {
                            installsFromCacheStatus = new PackageInstallsFromCacheStatus("Queueing installs from cache");
                        }

                        if (!workingInstallFromCache.IsMissingPeer)
                        {
                            workingInstallFromCache.OnUpdateCacheStatus += WorkingInstallFromCache_OnUpdateCacheStatus;
                            workingInstallFromCache.OnAddInstallStatus  += WorkingInstallFromCache_OnAddInstallStatus;

                            this.NothingToPoll = false;

                            this.WriteLineNoLock("Adding '{0}' to install from cache", install);

                            installsFromCacheToProcess.AddToDictionaryIfNotExist(install, workingInstallFromCache);
                        }
                    }
                }

                return(true);
            }
        }