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 |
Mark Mentovai
2014/12/19 22:55:56
Nit: blank line not necessary now that there’s no
scottmg
2014/12/19 22:58:33
Done.
| |
94 // If |fd_| is greater than or equal to zero, it is an opened descriptor | 96 FileState file_state_; |
Mark Mentovai
2014/12/19 22:55:55
Nit: sort for optimal structure packing, file_ pre
scottmg
2014/12/19 22:58:33
Done.
| |
95 // from which an instance of this class is reading. If |fd_| is less than | 97 ScopedFileHandle file_; |
96 // zero, the value corresponds to an InvalidFD value. | |
97 int fd_; | |
98 | 98 |
99 DISALLOW_COPY_AND_ASSIGN(FileHTTPBodyStream); | 99 DISALLOW_COPY_AND_ASSIGN(FileHTTPBodyStream); |
100 }; | 100 }; |
101 | 101 |
102 //! \brief An implementation of HTTPBodyStream that combines an array of | 102 //! \brief An implementation of HTTPBodyStream that combines an array of |
103 //! several other HTTPBodyStream objects into a single, unified stream. | 103 //! several other HTTPBodyStream objects into a single, unified stream. |
104 class CompositeHTTPBodyStream : public HTTPBodyStream { | 104 class CompositeHTTPBodyStream : public HTTPBodyStream { |
105 public: | 105 public: |
106 using PartsList = std::vector<HTTPBodyStream*>; | 106 using PartsList = std::vector<HTTPBodyStream*>; |
107 | 107 |
(...skipping 13 matching lines...) Expand all Loading... | |
121 private: | 121 private: |
122 PartsList parts_; | 122 PartsList parts_; |
123 PartsList::iterator current_part_; | 123 PartsList::iterator current_part_; |
124 | 124 |
125 DISALLOW_COPY_AND_ASSIGN(CompositeHTTPBodyStream); | 125 DISALLOW_COPY_AND_ASSIGN(CompositeHTTPBodyStream); |
126 }; | 126 }; |
127 | 127 |
128 } // namespace crashpad | 128 } // namespace crashpad |
129 | 129 |
130 #endif // CRASHPAD_UTIL_NET_HTTP_BODY_H_ | 130 #endif // CRASHPAD_UTIL_NET_HTTP_BODY_H_ |
OLD | NEW |