1 //
2 // Copyright (C) 2020 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 #include <cstddef>
18 #include <memory>
19
20 #include <base/logging.h>
21
22 #include "update_engine/payload_consumer/partition_writer.h"
23 #include "update_engine/payload_consumer/vabc_partition_writer.h"
24
25 namespace chromeos_update_engine::partition_writer {
26
CreatePartitionWriter(const PartitionUpdate & partition_update,const InstallPlan::Partition & install_part,DynamicPartitionControlInterface * dynamic_control,size_t block_size,bool is_interactive,bool is_dynamic_partition)27 std::unique_ptr<PartitionWriterInterface> CreatePartitionWriter(
28 const PartitionUpdate& partition_update,
29 const InstallPlan::Partition& install_part,
30 DynamicPartitionControlInterface* dynamic_control,
31 size_t block_size,
32 bool is_interactive,
33 bool is_dynamic_partition) {
34 if (dynamic_control && dynamic_control->UpdateUsesSnapshotCompression() &&
35 is_dynamic_partition) {
36 LOG(INFO)
37 << "Virtual AB Compression Enabled, using VABC Partition Writer for `"
38 << install_part.name << '`';
39 return std::make_unique<VABCPartitionWriter>(
40 partition_update, install_part, dynamic_control, block_size);
41 } else {
42 LOG(INFO) << "Virtual AB Compression disabled, using Partition Writer for `"
43 << install_part.name << '`';
44 return std::make_unique<PartitionWriter>(partition_update,
45 install_part,
46 dynamic_control,
47 block_size,
48 is_interactive);
49 }
50 }
51 } // namespace chromeos_update_engine::partition_writer
52