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.h | |
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.h')
-rw-r--r-- | payload_generator/blob_file_writer.h | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/payload_generator/blob_file_writer.h b/payload_generator/blob_file_writer.h new file mode 100644 index 00000000..be8fd0db --- /dev/null +++ b/payload_generator/blob_file_writer.h @@ -0,0 +1,46 @@ +// 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. + +#ifndef UPDATE_ENGINE_PAYLOAD_GENERATOR_BLOB_FILE_WRITER_H_ +#define UPDATE_ENGINE_PAYLOAD_GENERATOR_BLOB_FILE_WRITER_H_ + +#include <base/macros.h> + +#include <base/synchronization/lock.h> +#include <chromeos/secure_blob.h> + +namespace chromeos_update_engine { + +class BlobFileWriter { + public: + // Create the BlobFileWriter object that will manage the blobs stored to + // |blob_fd| in a thread safe way. + BlobFileWriter(int blob_fd, off_t* blob_file_size) + : blob_fd_(blob_fd), + blob_file_size_(blob_file_size) {} + + // Store the passed |blob| in the blob file. Returns the offset at which it + // was stored, or -1 in case of failure. + off_t StoreBlob(const chromeos::Blob& blob); + + // The number of |total_blobs| is the number of blobs that will be stored but + // is only used for logging purposes. If not set, logging will be skipped. + void SetTotalBlobs(size_t total_blobs); + + private: + size_t total_blobs_{0}; + size_t stored_blobs_{0}; + + // The file and its size are protected with the |blob_mutex_|. + int blob_fd_; + off_t* blob_file_size_; + + base::Lock blob_mutex_; + + DISALLOW_COPY_AND_ASSIGN(BlobFileWriter); +}; + +} // namespace chromeos_update_engine + +#endif // UPDATE_ENGINE_PAYLOAD_GENERATOR_BLOB_FILE_WRITER_H_ |