summaryrefslogtreecommitdiff
path: root/payload_generator/blob_file_writer.cc
diff options
context:
space:
mode:
authorSen Jiang <senj@chromium.org>2015-08-10 10:04:54 -0700
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2015-08-13 21:40:57 +0000
commit8cc502dacbccdab96824d42287f230ce04004784 (patch)
tree1e5cf087e09bb55ee76545414385d18c1f8478fc /payload_generator/blob_file_writer.cc
parent535f3b738b0bcbca23a6e361c84bf84145d6a3e6 (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.cc34
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