Exemple #1
0
 /// <summary>
 /// Initializes route crawler
 /// </summary>
 /// <param name="path">Route path</param>
 /// <param name="railworksPath">RailWorks path</param>
 public RouteCrawler(string path, HashSet <string> dependencies, HashSet <string> scenarioDeps)
 {
     RoutePath    = path;
     Dependencies = dependencies;
     ScenarioDeps = scenarioDeps;
     Adapter      = new SqLiteAdapter(Path.Combine(RoutePath, "cache.dls"));
     SavedRoute   = Adapter.LoadSavedRoute();
 }
Exemple #2
0
        public void RemovePackage(int pkgId)
        {
            InstalledPackages.RemoveAll(x => x.PackageId == pkgId);
            List <string> removedFiles = Utils.RemoveFiles(SqLiteAdapter.LoadPackageFiles(pkgId));

            SqLiteAdapter.RemovePackageFiles(removedFiles);
            SqLiteAdapter.RemoveInstalledPackage(pkgId);
            SqLiteAdapter.FlushToFile(true);
        }
        public PackageManager(Uri apiUrl, MainWindow mw, string RWPath)
        {
            ApiUrl     = apiUrl;
            MainWindow = mw;

            SqLiteAdapter     = new SqLiteAdapter(Path.Combine(RWPath, "main.dls"));
            InstalledPackages = SqLiteAdapter.LoadInstalledPackages();
            CachedPackages    = CachedPackages.Union(InstalledPackages).ToList();
            WebWrapper        = new WebWrapper(ApiUrl);
        }
Exemple #4
0
        public PackageManager(Uri apiUrl, MainWindow mw, string RWPath)
        {
            ApiUrl     = apiUrl;
            MainWindow = mw;
            WebWrapper = new WebWrapper(ApiUrl);

            SqLiteAdapter     = new SqLiteAdapter(Path.Combine(RWPath, "main.dls"), true);
            InstalledPackages = SqLiteAdapter.LoadPackages();
            Task.Run(async() =>
            {
                await VerifyCache();
                //CachedPackages = CachedPackages.Union(InstalledPackages).ToList();
                CacheInit.Set();
            });
        }
Exemple #5
0
        public async Task VerifyCache()
        {
            List <Package> localCache = SqLiteAdapter.LoadPackages(true);

            ServerVersions = new Dictionary <int, int>();
            localCache.ForEach(x => ServerVersions[x.PackageId] = x.Version);
            Tuple <IEnumerable <Package>, HashSet <int> > tRemoteCache = await WebWrapper.ValidateCache(ServerVersions);

            IEnumerable <Package> remoteCache    = tRemoteCache.Item1;
            HashSet <int>         remoteVersions = tRemoteCache.Item2;

            lock (CachedPackages)
            {
                CachedPackages = remoteCache.ToList();
                localCache.ForEach(x =>
                {
                    if (!remoteVersions.Contains(x.PackageId))
                    {
                        CachedPackages.Add(x);
                    }
                    else
                    {
                        ServerVersions[x.PackageId] = CachedPackages.First(y => y.PackageId == x.PackageId).Version;
                    }
                });
                foreach (Package pkg in remoteCache)
                {
                    ServerVersions[pkg.PackageId] = pkg.Version;
                }
            }
            if (remoteVersions.Count > 0)
            {
                new Task(() =>
                {
                    foreach (Package pkg in CachedPackages)
                    {
                        SqLiteAdapter.SavePackage(pkg, true);
                    }
                    SqLiteAdapter.FlushToFile(true);
                }).Start();
            }
            CachedPackages.ForEach(x =>
            {
                if (x.IsPaid)
                {
                    x.FilesContained.ForEach(y =>
                    {
                        DownloadablePaidDepsPackages[y] = x.PackageId;
                        DownloadablePaidDeps.Add(y);
                    });
                }
                else
                {
                    x.FilesContained.ForEach(y =>
                    {
                        DownloadableDepsPackages[y] = x.PackageId;
                        DownloadableDeps.Add(y);
                    });
                }
            });
        }