annotated_operation.h revision aea4c1cea20dda7ae7e85fc8924a2d784f70d806
1//
2// Copyright (C) 2015 The Android Open Source Project
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8//      http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15//
16
17#ifndef UPDATE_ENGINE_PAYLOAD_GENERATOR_ANNOTATED_OPERATION_H_
18#define UPDATE_ENGINE_PAYLOAD_GENERATOR_ANNOTATED_OPERATION_H_
19
20#include <ostream>  // NOLINT(readability/streams)
21#include <string>
22
23#include <chromeos/secure_blob.h>
24
25#include "update_engine/payload_generator/blob_file_writer.h"
26#include "update_engine/update_metadata.pb.h"
27
28namespace chromeos_update_engine {
29
30struct AnnotatedOperation {
31  // The name given to the operation, for logging and debugging purposes only.
32  // This normally includes the path to the file and the chunk used, if any.
33  std::string name;
34
35  // The InstallOperation, as defined by the protobuf.
36  InstallOperation op;
37
38  // Writes |blob| to the end of |data_fd|, and updates |data_file_size| to
39  // match the new size of |data_fd|. It sets the data_offset and data_length
40  // in AnnotatedOperation to match the offset and size of |blob| in |data_fd|.
41  bool SetOperationBlob(chromeos::Blob* blob, BlobFileWriter* blob_file);
42};
43
44// For logging purposes.
45std::ostream& operator<<(std::ostream& os, const AnnotatedOperation& aop);
46
47std::string InstallOperationTypeName(InstallOperation_Type op_type);
48
49}  // namespace chromeos_update_engine
50
51#endif  // UPDATE_ENGINE_PAYLOAD_GENERATOR_ANNOTATED_OPERATION_H_
52