Merge "updater: Defer the creation of the new data writer."
am: ddc81680e6
Change-Id: Ibfcc5b765103b41316549ee45636ebf4c377cf84
This commit is contained in:
+24
-24
@@ -1603,29 +1603,6 @@ static Value* PerformBlockImageUpdate(const char* name, State* state,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (params.canwrite) {
|
|
||||||
params.nti.za = za;
|
|
||||||
params.nti.entry = new_entry;
|
|
||||||
params.nti.brotli_compressed = android::base::EndsWith(new_data_fn->data, ".br");
|
|
||||||
if (params.nti.brotli_compressed) {
|
|
||||||
// Initialize brotli decoder state.
|
|
||||||
params.nti.brotli_decoder_state = BrotliDecoderCreateInstance(nullptr, nullptr, nullptr);
|
|
||||||
}
|
|
||||||
params.nti.receiver_available = true;
|
|
||||||
|
|
||||||
pthread_mutex_init(¶ms.nti.mu, nullptr);
|
|
||||||
pthread_cond_init(¶ms.nti.cv, nullptr);
|
|
||||||
pthread_attr_t attr;
|
|
||||||
pthread_attr_init(&attr);
|
|
||||||
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
|
|
||||||
|
|
||||||
int error = pthread_create(¶ms.thread, &attr, unzip_new_data, ¶ms.nti);
|
|
||||||
if (error != 0) {
|
|
||||||
PLOG(ERROR) << "pthread_create failed";
|
|
||||||
return StringValue("");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static constexpr size_t kTransferListHeaderLines = 4;
|
static constexpr size_t kTransferListHeaderLines = 4;
|
||||||
std::vector<std::string> lines = android::base::Split(transfer_list_value->data, "\n");
|
std::vector<std::string> lines = android::base::Split(transfer_list_value->data, "\n");
|
||||||
if (lines.size() < kTransferListHeaderLines) {
|
if (lines.size() < kTransferListHeaderLines) {
|
||||||
@@ -1668,9 +1645,32 @@ static Value* PerformBlockImageUpdate(const char* name, State* state,
|
|||||||
if (res == -1) {
|
if (res == -1) {
|
||||||
return StringValue("");
|
return StringValue("");
|
||||||
}
|
}
|
||||||
|
|
||||||
params.createdstash = res;
|
params.createdstash = res;
|
||||||
|
|
||||||
|
// Set up the new data writer.
|
||||||
|
if (params.canwrite) {
|
||||||
|
params.nti.za = za;
|
||||||
|
params.nti.entry = new_entry;
|
||||||
|
params.nti.brotli_compressed = android::base::EndsWith(new_data_fn->data, ".br");
|
||||||
|
if (params.nti.brotli_compressed) {
|
||||||
|
// Initialize brotli decoder state.
|
||||||
|
params.nti.brotli_decoder_state = BrotliDecoderCreateInstance(nullptr, nullptr, nullptr);
|
||||||
|
}
|
||||||
|
params.nti.receiver_available = true;
|
||||||
|
|
||||||
|
pthread_mutex_init(¶ms.nti.mu, nullptr);
|
||||||
|
pthread_cond_init(¶ms.nti.cv, nullptr);
|
||||||
|
pthread_attr_t attr;
|
||||||
|
pthread_attr_init(&attr);
|
||||||
|
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
|
||||||
|
|
||||||
|
int error = pthread_create(¶ms.thread, &attr, unzip_new_data, ¶ms.nti);
|
||||||
|
if (error != 0) {
|
||||||
|
LOG(ERROR) << "pthread_create failed: " << strerror(error);
|
||||||
|
return StringValue("");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// When performing an update, save the index and cmdline of the current command into the
|
// When performing an update, save the index and cmdline of the current command into the
|
||||||
// last_command_file.
|
// last_command_file.
|
||||||
// Upon resuming an update, read the saved index first; then
|
// Upon resuming an update, read the saved index first; then
|
||||||
|
|||||||
Reference in New Issue
Block a user