Android-cuttlefish cvd tool
copy.h
Go to the documentation of this file.
1//
2// Copyright (C) 2025 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#pragma once
17
18#include <stddef.h>
19
20#include "cuttlefish/io/io.h"
22
23namespace cuttlefish {
24
25// Moves data from the Reader to the Writer, without doing additional seeking on
26// either. This means if either has seek pointers set somewhere in the middle of
27// the data, reading and writing starts from that point.
28Result<void> Copy(Reader&, Writer&, size_t buffer_size = 1 << 26);
29
30// Moves data from the Reader to the WriterSeeker. Uses heuristics to detect
31// large chunks of zeroes, and performs forward seeks on the output rather than
32// writing the zeroes.
33//
34// This is helpful for writing large files to the filesystem, as it can use the
35// linux-sparse mechanism to not fully allocate blocks.
36Result<void> SparseCopy(Reader&, WriterSeeker&, size_t buffer_size = 1 << 26);
37
38} // namespace cuttlefish
Definition: alloc_driver.h:20
Result< void > Copy(std::string_view from, std::string_view to)
Definition: copy.cc:72
Result< void > SparseCopy(Reader &reader, WriterSeeker &writer, size_t buffer_size)
Definition: copy.cc:48