BPackageManager: Abstract installed repository initialization
* Rename TransactionHandler -> InstallationInterface and DaemonClientTransactionHandler -> ClientInstallationInterface. * Add InstallationInterface::InitInstalledRepository(). Use in _AddInstalledRepository() to get the repository packages instead of using the package roster. The ClientInstallationInterface implementation does it that way.
This commit is contained in:
parent
c138f1f2af
commit
cf3bb0d753
@ -37,8 +37,8 @@ public:
|
||||
class RemoteRepository;
|
||||
class InstalledRepository;
|
||||
class Transaction;
|
||||
class TransactionHandler;
|
||||
class DaemonClientTransactionHandler;
|
||||
class InstallationInterface;
|
||||
class ClientInstallationInterface;
|
||||
class UserInteractionHandler;
|
||||
class RequestHandler;
|
||||
|
||||
@ -122,7 +122,7 @@ protected:
|
||||
TransactionList fTransactions;
|
||||
|
||||
// must be set by the derived class
|
||||
TransactionHandler* fTransactionHandler;
|
||||
InstallationInterface* fInstallationInterface;
|
||||
RequestHandler* fRequestHandler;
|
||||
UserInteractionHandler* fUserInteractionHandler;
|
||||
};
|
||||
@ -195,9 +195,12 @@ private:
|
||||
};
|
||||
|
||||
|
||||
class BPackageManager::TransactionHandler {
|
||||
class BPackageManager::InstallationInterface {
|
||||
public:
|
||||
virtual ~TransactionHandler();
|
||||
virtual ~InstallationInterface();
|
||||
|
||||
virtual void InitInstalledRepository(
|
||||
InstalledRepository& repository) = 0;
|
||||
|
||||
virtual status_t PrepareTransaction(Transaction& transaction)
|
||||
= 0;
|
||||
@ -207,11 +210,14 @@ public:
|
||||
};
|
||||
|
||||
|
||||
class BPackageManager::DaemonClientTransactionHandler
|
||||
: public TransactionHandler {
|
||||
class BPackageManager::ClientInstallationInterface
|
||||
: public InstallationInterface {
|
||||
public:
|
||||
DaemonClientTransactionHandler();
|
||||
virtual ~DaemonClientTransactionHandler();
|
||||
ClientInstallationInterface();
|
||||
virtual ~ClientInstallationInterface();
|
||||
|
||||
virtual void InitInstalledRepository(
|
||||
InstalledRepository& repository);
|
||||
|
||||
virtual status_t PrepareTransaction(Transaction& transaction);
|
||||
virtual status_t CommitTransaction(Transaction& transaction,
|
||||
|
@ -28,9 +28,9 @@ PackageManager::PackageManager(BPackageInstallationLocation location)
|
||||
fDecisionProvider(),
|
||||
fJobStateListener(JobStateListener::EXIT_ON_ABORT),
|
||||
fContext(fDecisionProvider, fJobStateListener),
|
||||
fDaemonClientTransactionHandler()
|
||||
fClientInstallationInterface()
|
||||
{
|
||||
fTransactionHandler = &fDaemonClientTransactionHandler;
|
||||
fInstallationInterface = &fClientInstallationInterface;
|
||||
fRequestHandler = this;
|
||||
fUserInteractionHandler = this;
|
||||
}
|
||||
|
@ -59,8 +59,8 @@ private:
|
||||
DecisionProvider fDecisionProvider;
|
||||
JobStateListener fJobStateListener;
|
||||
BContext fContext;
|
||||
BPackageManager::DaemonClientTransactionHandler
|
||||
fDaemonClientTransactionHandler;
|
||||
BPackageManager::ClientInstallationInterface
|
||||
fClientInstallationInterface;
|
||||
};
|
||||
|
||||
|
||||
|
@ -49,7 +49,7 @@ BPackageManager::BPackageManager(BPackageInstallationLocation location)
|
||||
fInstalledRepositories(10),
|
||||
fOtherRepositories(10, true),
|
||||
fTransactions(5, true),
|
||||
fTransactionHandler(NULL),
|
||||
fInstallationInterface(NULL),
|
||||
fRequestHandler(NULL),
|
||||
fUserInteractionHandler(NULL)
|
||||
{
|
||||
@ -399,7 +399,7 @@ BPackageManager::_PreparePackageChanges(
|
||||
throw std::bad_alloc();
|
||||
}
|
||||
|
||||
status_t error = fTransactionHandler->PrepareTransaction(*transaction);
|
||||
status_t error = fInstallationInterface->PrepareTransaction(*transaction);
|
||||
if (error != B_OK)
|
||||
DIE(error, "failed to create transaction");
|
||||
|
||||
@ -463,7 +463,7 @@ BPackageManager::_CommitPackageChanges(Transaction& transaction)
|
||||
|
||||
// commit the transaction
|
||||
BDaemonClient::BCommitTransactionResult transactionResult;
|
||||
status_t error = fTransactionHandler->CommitTransaction(transaction,
|
||||
status_t error = fInstallationInterface->CommitTransaction(transaction,
|
||||
transactionResult);
|
||||
if (error != B_OK) {
|
||||
DIE("failed to commit transaction: %s",
|
||||
@ -576,9 +576,9 @@ BPackageManager::_InstallationRepository()
|
||||
void
|
||||
BPackageManager::_AddInstalledRepository(InstalledRepository* repository)
|
||||
{
|
||||
const char* name = repository->InitialName();
|
||||
BRepositoryBuilder(*repository, name)
|
||||
.AddPackages(repository->Location(), name)
|
||||
fInstallationInterface->InitInstalledRepository(*repository);
|
||||
|
||||
BRepositoryBuilder(*repository)
|
||||
.AddToSolver(fSolver, repository->Location() == fLocation);
|
||||
repository->SetPriority(repository->InitialPriority());
|
||||
|
||||
@ -757,33 +757,41 @@ BPackageManager::Transaction::~Transaction()
|
||||
}
|
||||
|
||||
|
||||
// #pragma mark - TransactionHandler
|
||||
// #pragma mark - InstallationInterface
|
||||
|
||||
|
||||
BPackageManager::TransactionHandler::~TransactionHandler()
|
||||
BPackageManager::InstallationInterface::~InstallationInterface()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
// #pragma mark - DaemonClientTransactionHandler
|
||||
// #pragma mark - ClientInstallationInterface
|
||||
|
||||
|
||||
BPackageManager::DaemonClientTransactionHandler
|
||||
::DaemonClientTransactionHandler()
|
||||
BPackageManager::ClientInstallationInterface::ClientInstallationInterface()
|
||||
:
|
||||
fDaemonClient()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
BPackageManager::DaemonClientTransactionHandler
|
||||
::~DaemonClientTransactionHandler()
|
||||
BPackageManager::ClientInstallationInterface::~ClientInstallationInterface()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
BPackageManager::ClientInstallationInterface::InitInstalledRepository(
|
||||
InstalledRepository& repository)
|
||||
{
|
||||
const char* name = repository.InitialName();
|
||||
BRepositoryBuilder(repository, name)
|
||||
.AddPackages(repository.Location(), name);
|
||||
}
|
||||
|
||||
|
||||
status_t
|
||||
BPackageManager::DaemonClientTransactionHandler::PrepareTransaction(
|
||||
BPackageManager::ClientInstallationInterface::PrepareTransaction(
|
||||
Transaction& transaction)
|
||||
{
|
||||
return fDaemonClient.CreateTransaction(transaction.Repository().Location(),
|
||||
@ -793,7 +801,7 @@ BPackageManager::DaemonClientTransactionHandler::PrepareTransaction(
|
||||
|
||||
|
||||
status_t
|
||||
BPackageManager::DaemonClientTransactionHandler::CommitTransaction(
|
||||
BPackageManager::ClientInstallationInterface::CommitTransaction(
|
||||
Transaction& transaction, BDaemonClient::BCommitTransactionResult& _result)
|
||||
{
|
||||
return fDaemonClient.CommitTransaction(transaction.ActivationTransaction(),
|
||||
|
Loading…
x
Reference in New Issue
Block a user