diff options
author | Sen Jiang <senj@chromium.org> | 2015-08-10 10:04:54 -0700 |
---|---|---|
committer | ChromeOS Commit Bot <chromeos-commit-bot@chromium.org> | 2015-08-13 21:40:57 +0000 |
commit | 8cc502dacbccdab96824d42287f230ce04004784 (patch) | |
tree | 1e5cf087e09bb55ee76545414385d18c1f8478fc /payload_generator/blob_file_writer.cc | |
parent | 535f3b738b0bcbca23a6e361c84bf84145d6a3e6 (diff) |
update_engine: Change OperationsGenerator to use BlobFileWriter
BUG=chromium:517280
TEST=Unit test for BlobFileWriter
Change-Id: Ib49925676331acee97ff6b4cec38a81ca8b157a1
Reviewed-on: https://chromium-review.googlesource.com/291441
Tested-by: Sen Jiang <senj@chromium.org>
Reviewed-by: Alex Deymo <deymo@chromium.org>
Commit-Queue: Sen Jiang <senj@chromium.org>
Diffstat (limited to 'payload_generator/blob_file_writer.cc')
-rw-r--r-- | payload_generator/blob_file_writer.cc | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/payload_generator/blob_file_writer.cc b/payload_generator/blob_file_writer.cc new file mode 100644 index 00000000..2032e14f --- /dev/null +++ b/payload_generator/blob_file_writer.cc @@ -0,0 +1,34 @@ +// Copyright 2015 The Chromium OS Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "update_engine/payload_generator/blob_file_writer.h" + +#include "update_engine/utils.h" + +namespace chromeos_update_engine { + +off_t BlobFileWriter::StoreBlob(const chromeos::Blob& blob) { + base::AutoLock auto_lock(blob_mutex_); + if (!utils::PWriteAll(blob_fd_, blob.data(), blob.size(), *blob_file_size_)) + return -1; + + off_t result = *blob_file_size_; + *blob_file_size_ += blob.size(); + + stored_blobs_++; + if (total_blobs_ > 0 && + (10 * (stored_blobs_ - 1) / total_blobs_) != + (10 * stored_blobs_ / total_blobs_)) { + LOG(INFO) << (100 * stored_blobs_ / total_blobs_) + << "% complete " << stored_blobs_ << "/" << total_blobs_ + << " ops (output size: " << *blob_file_size_ << ")"; + } + return result; +} + +void BlobFileWriter::SetTotalBlobs(size_t total_blobs) { + total_blobs_ = total_blobs; +} + +} // namespace chromeos_update_engine |