| // Copyright 2016 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef COMPONENTS_URL_PATTERN_INDEX_COPYING_FILE_STREAM_H_ |
| #define COMPONENTS_URL_PATTERN_INDEX_COPYING_FILE_STREAM_H_ |
| |
| #include "base/files/file.h" |
| #include "base/macros.h" |
| #include "third_party/protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.h" |
| |
| namespace url_pattern_index { |
| |
| // Implements a CopyingInputStream that reads from a base::File. Can be used in |
| // combination with CopyingInputStreamAdaptor for reading from that file through |
| // the ZeroCopyInputStream interface. |
| class CopyingFileInputStream : public google::protobuf::io::CopyingInputStream { |
| public: |
| explicit CopyingFileInputStream(base::File file); |
| ~CopyingFileInputStream() override; |
| |
| // google::protobuf::io::CopyingInputStream: |
| int Read(void* buffer, int size) override; |
| |
| private: |
| base::File file_; |
| |
| DISALLOW_COPY_AND_ASSIGN(CopyingFileInputStream); |
| }; |
| |
| // Implements a CopyingOutputStream that writes to a base::File. Can be used in |
| // combination with CopyingOutputStreamAdaptor for writing to that file through |
| // the ZeroCopyOutputStream interface. |
| class CopyingFileOutputStream |
| : public google::protobuf::io::CopyingOutputStream { |
| public: |
| explicit CopyingFileOutputStream(base::File file); |
| ~CopyingFileOutputStream() override; |
| |
| // google::protobuf::io::CopyingOutputStream: |
| bool Write(const void* buffer, int size) override; |
| |
| private: |
| base::File file_; |
| |
| DISALLOW_COPY_AND_ASSIGN(CopyingFileOutputStream); |
| }; |
| |
| } // namespace url_pattern_index |
| |
| #endif // COMPONENTS_URL_PATTERN_INDEX_COPYING_FILE_STREAM_H_ |