1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef MOJO_SHELL_DATA_PIPE_UTILS_H_
6#define MOJO_SHELL_DATA_PIPE_UTILS_H_
7
8#include <string>
9
10#include "base/callback_forward.h"
11#include "mojo/common/mojo_common_export.h"
12#include "mojo/public/cpp/system/core.h"
13
14namespace base {
15class FilePath;
16class TaskRunner;
17}
18
19namespace mojo {
20namespace common {
21
22// Asynchronously copies data from source to the destination file. The given
23// |callback| is run upon completion. File writes will be scheduled to the
24// given |task_runner|.
25void MOJO_COMMON_EXPORT CopyToFile(
26    ScopedDataPipeConsumerHandle source,
27    const base::FilePath& destination,
28    base::TaskRunner* task_runner,
29    const base::Callback<void(bool /*success*/)>& callback);
30
31// Copies the data from |source| into |contents| and returns true on success and
32// false on error.  In case of I/O error, |contents| holds the data that could
33// be read from source before the error occurred.
34bool MOJO_COMMON_EXPORT BlockingCopyToString(
35    ScopedDataPipeConsumerHandle source,
36    std::string* contents);
37
38}  // namespace common
39}  // namespace mojo
40
41#endif  // MOJO_SHELL_DATA_PIPE_UTILS_H_
42