diff options
author | Alex Buynytskyy <alexbuy@google.com> | 2020-04-22 16:08:50 -0700 |
---|---|---|
committer | Alex Buynytskyy <alexbuy@google.com> | 2020-04-23 19:38:44 +0000 |
commit | ea1390ff324a8efab225955e507911bb1c44bca2 (patch) | |
tree | f555dcac42f4343663db8cf703f9a8f96c477c44 /services/incremental/IncrementalService.cpp | |
parent | eab14fca5dadd2b6f57ff37cce8ce2558c8b94f6 (diff) |
Keep only service binding in DataLoaderManager.
This simplifies:
- resource management - no extra copies of controls,
- state management - all states in one place, no more hidden (bound but
not created) state.
Bug: b/153874006
Test: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest
Change-Id: I3d16a099c7f42fcf14637c5a8e96bd6f99e073d1
Diffstat (limited to 'services/incremental/IncrementalService.cpp')
-rw-r--r-- | services/incremental/IncrementalService.cpp | 32 |
1 files changed, 26 insertions, 6 deletions
diff --git a/services/incremental/IncrementalService.cpp b/services/incremental/IncrementalService.cpp index a6c45cc6c26f..a1b4f2442153 100644 --- a/services/incremental/IncrementalService.cpp +++ b/services/incremental/IncrementalService.cpp @@ -1709,12 +1709,30 @@ bool IncrementalService::DataLoaderStub::waitForStatus(int status, Clock::durati [this, status] { return mCurrentStatus == status; }); } +bool IncrementalService::DataLoaderStub::bind() { + bool result = false; + auto status = mService.mDataLoaderManager->bindToDataLoader(mId, mParams, this, &result); + if (!status.isOk() || !result) { + LOG(ERROR) << "Failed to bind a data loader for mount " << mId; + return false; + } + return true; +} + bool IncrementalService::DataLoaderStub::create() { - bool created = false; - auto status = mService.mDataLoaderManager->initializeDataLoader(mId, mParams, mControl, this, - &created); - if (!status.isOk() || !created) { - LOG(ERROR) << "Failed to create a data loader for mount " << mId; + sp<IDataLoader> dataloader; + auto status = mService.mDataLoaderManager->getDataLoader(mId, &dataloader); + if (!status.isOk()) { + LOG(ERROR) << "Failed to get dataloader: " << status.toString8(); + return false; + } + if (!dataloader) { + LOG(ERROR) << "DataLoader is null: " << status.toString8(); + return false; + } + status = dataloader->create(mId, mParams, mControl, this); + if (!status.isOk()) { + LOG(ERROR) << "Failed to start DataLoader: " << status.toString8(); return false; } return true; @@ -1740,7 +1758,7 @@ bool IncrementalService::DataLoaderStub::start() { } bool IncrementalService::DataLoaderStub::destroy() { - mService.mDataLoaderManager->destroyDataLoader(mId); + mService.mDataLoaderManager->unbindFromDataLoader(mId); return true; } @@ -1776,6 +1794,8 @@ bool IncrementalService::DataLoaderStub::fsmStep() { case IDataLoaderStatusListener::DATA_LOADER_CREATED: switch (currentStatus) { case IDataLoaderStatusListener::DATA_LOADER_DESTROYED: + return bind(); + case IDataLoaderStatusListener::DATA_LOADER_BOUND: return create(); } break; |