| OLD | NEW |
| 1 // Copyright 2014 The Crashpad Authors. All rights reserved. | 1 // Copyright 2014 The Crashpad Authors. All rights reserved. |
| 2 // | 2 // |
| 3 // Licensed under the Apache License, Version 2.0 (the "License"); | 3 // Licensed under the Apache License, Version 2.0 (the "License"); |
| 4 // you may not use this file except in compliance with the License. | 4 // you may not use this file except in compliance with the License. |
| 5 // You may obtain a copy of the License at | 5 // You may obtain a copy of the License at |
| 6 // | 6 // |
| 7 // http://www.apache.org/licenses/LICENSE-2.0 | 7 // http://www.apache.org/licenses/LICENSE-2.0 |
| 8 // | 8 // |
| 9 // Unless required by applicable law or agreed to in writing, software | 9 // Unless required by applicable law or agreed to in writing, software |
| 10 // distributed under the License is distributed on an "AS IS" BASIS, | 10 // distributed under the License is distributed on an "AS IS" BASIS, |
| 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 12 // See the License for the specific language governing permissions and | 12 // See the License for the specific language governing permissions and |
| 13 // limitations under the License. | 13 // limitations under the License. |
| 14 | 14 |
| 15 #ifndef CRASHPAD_UTIL_NET_HTTP_BODY_H_ | 15 #ifndef CRASHPAD_UTIL_NET_HTTP_BODY_H_ |
| 16 #define CRASHPAD_UTIL_NET_HTTP_BODY_H_ | 16 #define CRASHPAD_UTIL_NET_HTTP_BODY_H_ |
| 17 | 17 |
| 18 #include <stdint.h> | 18 #include <stdint.h> |
| 19 #include <sys/types.h> | 19 #include <sys/types.h> |
| 20 | 20 |
| 21 #include <string> | 21 #include <string> |
| 22 #include <vector> | 22 #include <vector> |
| 23 | 23 |
| 24 #include "base/basictypes.h" | 24 #include "base/basictypes.h" |
| 25 #include "base/files/file_path.h" | 25 #include "base/files/file_path.h" |
| 26 #include "util/file/file_io.h" |
| 26 | 27 |
| 27 namespace crashpad { | 28 namespace crashpad { |
| 28 | 29 |
| 29 //! \brief An interface to a stream that can be used for an HTTP request body. | 30 //! \brief An interface to a stream that can be used for an HTTP request body. |
| 30 class HTTPBodyStream { | 31 class HTTPBodyStream { |
| 31 public: | 32 public: |
| 32 virtual ~HTTPBodyStream() {} | 33 virtual ~HTTPBodyStream() {} |
| 33 | 34 |
| 34 //! \brief Copies up to \a max_len bytes into the user-supplied buffer. | 35 //! \brief Copies up to \a max_len bytes into the user-supplied buffer. |
| 35 //! | 36 //! |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 76 //! | 77 //! |
| 77 //! \param[in] path The file from which this HTTPBodyStream will read. | 78 //! \param[in] path The file from which this HTTPBodyStream will read. |
| 78 explicit FileHTTPBodyStream(const base::FilePath& path); | 79 explicit FileHTTPBodyStream(const base::FilePath& path); |
| 79 | 80 |
| 80 ~FileHTTPBodyStream() override; | 81 ~FileHTTPBodyStream() override; |
| 81 | 82 |
| 82 // HTTPBodyStream: | 83 // HTTPBodyStream: |
| 83 ssize_t GetBytesBuffer(uint8_t* buffer, size_t max_len) override; | 84 ssize_t GetBytesBuffer(uint8_t* buffer, size_t max_len) override; |
| 84 | 85 |
| 85 private: | 86 private: |
| 86 enum InvalidFD { | 87 enum FileState { |
| 87 kUnopenedFile = -1, | 88 kUnopenedFile, |
| 88 kFileOpenError = -2, | 89 kFileOpenError, |
| 89 kClosedAtEOF = -3, | 90 kClosedAtEOF, |
| 91 kReading, |
| 90 }; | 92 }; |
| 91 | 93 |
| 92 base::FilePath path_; | 94 base::FilePath path_; |
| 93 | 95 ScopedFileHandle file_; |
| 94 // If |fd_| is greater than or equal to zero, it is an opened descriptor | 96 FileState file_state_; |
| 95 // from which an instance of this class is reading. If |fd_| is less than | |
| 96 // zero, the value corresponds to an InvalidFD value. | |
| 97 int fd_; | |
| 98 | 97 |
| 99 DISALLOW_COPY_AND_ASSIGN(FileHTTPBodyStream); | 98 DISALLOW_COPY_AND_ASSIGN(FileHTTPBodyStream); |
| 100 }; | 99 }; |
| 101 | 100 |
| 102 //! \brief An implementation of HTTPBodyStream that combines an array of | 101 //! \brief An implementation of HTTPBodyStream that combines an array of |
| 103 //! several other HTTPBodyStream objects into a single, unified stream. | 102 //! several other HTTPBodyStream objects into a single, unified stream. |
| 104 class CompositeHTTPBodyStream : public HTTPBodyStream { | 103 class CompositeHTTPBodyStream : public HTTPBodyStream { |
| 105 public: | 104 public: |
| 106 using PartsList = std::vector<HTTPBodyStream*>; | 105 using PartsList = std::vector<HTTPBodyStream*>; |
| 107 | 106 |
| (...skipping 13 matching lines...) Expand all Loading... |
| 121 private: | 120 private: |
| 122 PartsList parts_; | 121 PartsList parts_; |
| 123 PartsList::iterator current_part_; | 122 PartsList::iterator current_part_; |
| 124 | 123 |
| 125 DISALLOW_COPY_AND_ASSIGN(CompositeHTTPBodyStream); | 124 DISALLOW_COPY_AND_ASSIGN(CompositeHTTPBodyStream); |
| 126 }; | 125 }; |
| 127 | 126 |
| 128 } // namespace crashpad | 127 } // namespace crashpad |
| 129 | 128 |
| 130 #endif // CRASHPAD_UTIL_NET_HTTP_BODY_H_ | 129 #endif // CRASHPAD_UTIL_NET_HTTP_BODY_H_ |
| OLD | NEW |