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