13ac0de3bSIngo Weinhold /* 23ac0de3bSIngo Weinhold * Copyright 2013, Haiku, Inc. All Rights Reserved. 33ac0de3bSIngo Weinhold * Distributed under the terms of the MIT License. 43ac0de3bSIngo Weinhold * 53ac0de3bSIngo Weinhold * Authors: 63ac0de3bSIngo Weinhold * Ingo Weinhold <ingo_weinhold@gmx.de> 73ac0de3bSIngo Weinhold */ 83ac0de3bSIngo Weinhold #ifndef PACKAGE_MANAGER_H 93ac0de3bSIngo Weinhold #define PACKAGE_MANAGER_H 103ac0de3bSIngo Weinhold 113ac0de3bSIngo Weinhold 123ac0de3bSIngo Weinhold #include <ObjectList.h> 133ac0de3bSIngo Weinhold #include <package/Context.h> 143ac0de3bSIngo Weinhold #include <package/PackageDefs.h> 153ac0de3bSIngo Weinhold #include <package/PackageRoster.h> 163ac0de3bSIngo Weinhold #include <package/RepositoryConfig.h> 173ac0de3bSIngo Weinhold #include <package/solver/Solver.h> 183ac0de3bSIngo Weinhold #include <package/solver/SolverRepository.h> 193ac0de3bSIngo Weinhold 203ac0de3bSIngo Weinhold #include "DecisionProvider.h" 213ac0de3bSIngo Weinhold #include "JobStateListener.h" 223ac0de3bSIngo Weinhold 233ac0de3bSIngo Weinhold 243ac0de3bSIngo Weinhold using namespace BPackageKit; 253ac0de3bSIngo Weinhold 263ac0de3bSIngo Weinhold 273ac0de3bSIngo Weinhold class PackageManager { 283ac0de3bSIngo Weinhold public: 293ac0de3bSIngo Weinhold struct Repository; 303ac0de3bSIngo Weinhold typedef BObjectList<Repository> RepositoryList; 313ac0de3bSIngo Weinhold 323ac0de3bSIngo Weinhold public: 333ac0de3bSIngo Weinhold PackageManager( 343ac0de3bSIngo Weinhold BPackageInstallationLocation location, 353ac0de3bSIngo Weinhold bool addInstalledRepositories, 363ac0de3bSIngo Weinhold bool addOtherRepositories); 373ac0de3bSIngo Weinhold ~PackageManager(); 383ac0de3bSIngo Weinhold 393ac0de3bSIngo Weinhold BSolver* Solver() const 403ac0de3bSIngo Weinhold { return fSolver; } 413ac0de3bSIngo Weinhold 423ac0de3bSIngo Weinhold const BSolverRepository* SystemRepository() const 433ac0de3bSIngo Weinhold { return &fSystemRepository; } 443ac0de3bSIngo Weinhold const BSolverRepository* CommonRepository() const 453ac0de3bSIngo Weinhold { return &fCommonRepository; } 463ac0de3bSIngo Weinhold const BSolverRepository* HomeRepository() const 473ac0de3bSIngo Weinhold { return &fHomeRepository; } 483ac0de3bSIngo Weinhold const BObjectList<BSolverRepository>& InstalledRepositories() const 493ac0de3bSIngo Weinhold { return fInstalledRepositories; } 503ac0de3bSIngo Weinhold const RepositoryList& OtherRepositories() const 513ac0de3bSIngo Weinhold { return fOtherRepositories; } 523ac0de3bSIngo Weinhold 533ac0de3bSIngo Weinhold void Install(const char* const* packages, 543ac0de3bSIngo Weinhold int packageCount); 55*df2685d8SIngo Weinhold void Uninstall(const char* const* packages, 56*df2685d8SIngo Weinhold int packageCount); 573ac0de3bSIngo Weinhold 583ac0de3bSIngo Weinhold private: 593ac0de3bSIngo Weinhold typedef BObjectList<BSolverPackage> PackageList; 603ac0de3bSIngo Weinhold 613ac0de3bSIngo Weinhold private: 623ac0de3bSIngo Weinhold void _HandleProblems(); 633ac0de3bSIngo Weinhold void _AnalyzeResult(); 643ac0de3bSIngo Weinhold void _PrintResult(); 653ac0de3bSIngo Weinhold void _ApplyPackageChanges(); 663ac0de3bSIngo Weinhold 673ac0de3bSIngo Weinhold private: 683ac0de3bSIngo Weinhold BPackageInstallationLocation fLocation; 693ac0de3bSIngo Weinhold BSolver* fSolver; 703ac0de3bSIngo Weinhold BSolverRepository fSystemRepository; 713ac0de3bSIngo Weinhold BSolverRepository fCommonRepository; 723ac0de3bSIngo Weinhold BSolverRepository fHomeRepository; 733ac0de3bSIngo Weinhold BObjectList<BSolverRepository> fInstalledRepositories; 743ac0de3bSIngo Weinhold RepositoryList fOtherRepositories; 753ac0de3bSIngo Weinhold DecisionProvider fDecisionProvider; 763ac0de3bSIngo Weinhold JobStateListener fJobStateListener; 773ac0de3bSIngo Weinhold BContext fContext; 783ac0de3bSIngo Weinhold PackageList fPackagesToActivate; 793ac0de3bSIngo Weinhold PackageList fPackagesToDeactivate; 803ac0de3bSIngo Weinhold }; 813ac0de3bSIngo Weinhold 823ac0de3bSIngo Weinhold 833ac0de3bSIngo Weinhold struct PackageManager::Repository : public BSolverRepository { 843ac0de3bSIngo Weinhold Repository(); 853ac0de3bSIngo Weinhold 863ac0de3bSIngo Weinhold status_t Init(BPackageRoster& roster, BContext& context, 873ac0de3bSIngo Weinhold const char* name); 883ac0de3bSIngo Weinhold 893ac0de3bSIngo Weinhold const BRepositoryConfig& Config() const; 903ac0de3bSIngo Weinhold 913ac0de3bSIngo Weinhold private: 923ac0de3bSIngo Weinhold BRepositoryConfig fConfig; 933ac0de3bSIngo Weinhold }; 943ac0de3bSIngo Weinhold 953ac0de3bSIngo Weinhold 963ac0de3bSIngo Weinhold #endif // PACKAGE_MANAGER_H 97