OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef NET_SPDY_SPDY_HEADER_BLOCK_H_ | 5 #ifndef NET_SPDY_SPDY_HEADER_BLOCK_H_ |
6 #define NET_SPDY_SPDY_HEADER_BLOCK_H_ | 6 #define NET_SPDY_SPDY_HEADER_BLOCK_H_ |
7 | 7 |
8 #include <stddef.h> | 8 #include <stddef.h> |
9 | 9 |
10 #include <list> | 10 #include <list> |
11 #include <map> | 11 #include <map> |
12 #include <memory> | 12 #include <memory> |
13 #include <string> | |
14 #include <vector> | 13 #include <vector> |
15 | 14 |
16 #include "base/macros.h" | 15 #include "base/macros.h" |
17 #include "net/base/linked_hash_map.h" | 16 #include "net/base/linked_hash_map.h" |
18 #include "net/base/net_export.h" | 17 #include "net/base/net_export.h" |
19 #include "net/log/net_log.h" | 18 #include "net/log/net_log.h" |
| 19 #include "net/spdy/platform/api/spdy_string.h" |
20 #include "net/spdy/platform/api/spdy_string_piece.h" | 20 #include "net/spdy/platform/api/spdy_string_piece.h" |
21 | 21 |
22 namespace base { | 22 namespace base { |
23 class Value; | 23 class Value; |
24 } | 24 } |
25 | 25 |
26 namespace net { | 26 namespace net { |
27 | 27 |
28 class NetLogCaptureMode; | 28 class NetLogCaptureMode; |
29 | 29 |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
143 | 143 |
144 SpdyHeaderBlock& operator=(const SpdyHeaderBlock& other) = delete; | 144 SpdyHeaderBlock& operator=(const SpdyHeaderBlock& other) = delete; |
145 SpdyHeaderBlock& operator=(SpdyHeaderBlock&& other); | 145 SpdyHeaderBlock& operator=(SpdyHeaderBlock&& other); |
146 SpdyHeaderBlock Clone() const; | 146 SpdyHeaderBlock Clone() const; |
147 | 147 |
148 bool operator==(const SpdyHeaderBlock& other) const; | 148 bool operator==(const SpdyHeaderBlock& other) const; |
149 bool operator!=(const SpdyHeaderBlock& other) const; | 149 bool operator!=(const SpdyHeaderBlock& other) const; |
150 | 150 |
151 // Provides a human readable multi-line representation of the stored header | 151 // Provides a human readable multi-line representation of the stored header |
152 // keys and values. | 152 // keys and values. |
153 std::string DebugString() const; | 153 SpdyString DebugString() const; |
154 | 154 |
155 iterator begin() { return iterator(block_.begin()); } | 155 iterator begin() { return iterator(block_.begin()); } |
156 iterator end() { return iterator(block_.end()); } | 156 iterator end() { return iterator(block_.end()); } |
157 const_iterator begin() const { return const_iterator(block_.begin()); } | 157 const_iterator begin() const { return const_iterator(block_.begin()); } |
158 const_iterator end() const { return const_iterator(block_.end()); } | 158 const_iterator end() const { return const_iterator(block_.end()); } |
159 bool empty() const { return block_.empty(); } | 159 bool empty() const { return block_.empty(); } |
160 size_t size() const { return block_.size(); } | 160 size_t size() const { return block_.size(); } |
161 iterator find(SpdyStringPiece key) { return iterator(block_.find(key)); } | 161 iterator find(SpdyStringPiece key) { return iterator(block_.find(key)); } |
162 const_iterator find(SpdyStringPiece key) const { | 162 const_iterator find(SpdyStringPiece key) const { |
163 return const_iterator(block_.find(key)); | 163 return const_iterator(block_.find(key)); |
(...skipping 13 matching lines...) Expand all Loading... |
177 // existing header value, NUL ("\0") separated unless the key is cookie, in | 177 // existing header value, NUL ("\0") separated unless the key is cookie, in |
178 // which case the separator is "; ". | 178 // which case the separator is "; ". |
179 // If there is no such key, a new header with the key and value is added. | 179 // If there is no such key, a new header with the key and value is added. |
180 void AppendValueOrAddHeader(const SpdyStringPiece key, | 180 void AppendValueOrAddHeader(const SpdyStringPiece key, |
181 const SpdyStringPiece value); | 181 const SpdyStringPiece value); |
182 | 182 |
183 // Allows either lookup or mutation of the value associated with a key. | 183 // Allows either lookup or mutation of the value associated with a key. |
184 ValueProxy operator[](const SpdyStringPiece key); | 184 ValueProxy operator[](const SpdyStringPiece key); |
185 | 185 |
186 // This object provides automatic conversions that allow SpdyHeaderBlock to be | 186 // This object provides automatic conversions that allow SpdyHeaderBlock to be |
187 // nearly a drop-in replacement for linked_hash_map<string, string>. It reads | 187 // nearly a drop-in replacement for linked_hash_map<SpdyString, SpdyString>. |
188 // data from or writes data to a SpdyHeaderBlock::Storage. | 188 // It reads data from or writes data to a SpdyHeaderBlock::Storage. |
189 class NET_EXPORT ValueProxy { | 189 class NET_EXPORT ValueProxy { |
190 public: | 190 public: |
191 ~ValueProxy(); | 191 ~ValueProxy(); |
192 | 192 |
193 // Moves are allowed. | 193 // Moves are allowed. |
194 ValueProxy(ValueProxy&& other); | 194 ValueProxy(ValueProxy&& other); |
195 ValueProxy& operator=(ValueProxy&& other); | 195 ValueProxy& operator=(ValueProxy&& other); |
196 | 196 |
197 // Copies are not. | 197 // Copies are not. |
198 ValueProxy(const ValueProxy& other) = delete; | 198 ValueProxy(const ValueProxy& other) = delete; |
199 ValueProxy& operator=(const ValueProxy& other) = delete; | 199 ValueProxy& operator=(const ValueProxy& other) = delete; |
200 | 200 |
201 // Assignment modifies the underlying SpdyHeaderBlock. | 201 // Assignment modifies the underlying SpdyHeaderBlock. |
202 ValueProxy& operator=(const SpdyStringPiece other); | 202 ValueProxy& operator=(const SpdyStringPiece other); |
203 | 203 |
204 std::string as_string() const; | 204 SpdyString as_string() const; |
205 | 205 |
206 private: | 206 private: |
207 friend class SpdyHeaderBlock; | 207 friend class SpdyHeaderBlock; |
208 friend class test::ValueProxyPeer; | 208 friend class test::ValueProxyPeer; |
209 | 209 |
210 ValueProxy(SpdyHeaderBlock::MapType* block, | 210 ValueProxy(SpdyHeaderBlock::MapType* block, |
211 SpdyHeaderBlock::Storage* storage, | 211 SpdyHeaderBlock::Storage* storage, |
212 SpdyHeaderBlock::MapType::iterator lookup_result, | 212 SpdyHeaderBlock::MapType::iterator lookup_result, |
213 const SpdyStringPiece key); | 213 const SpdyStringPiece key); |
214 | 214 |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
250 // to |headers|. |event_param| must have been created by | 250 // to |headers|. |event_param| must have been created by |
251 // SpdyHeaderBlockNetLogCallback. On failure, returns false and clears | 251 // SpdyHeaderBlockNetLogCallback. On failure, returns false and clears |
252 // |headers|. | 252 // |headers|. |
253 NET_EXPORT bool SpdyHeaderBlockFromNetLogParam( | 253 NET_EXPORT bool SpdyHeaderBlockFromNetLogParam( |
254 const base::Value* event_param, | 254 const base::Value* event_param, |
255 SpdyHeaderBlock* headers); | 255 SpdyHeaderBlock* headers); |
256 | 256 |
257 } // namespace net | 257 } // namespace net |
258 | 258 |
259 #endif // NET_SPDY_SPDY_HEADER_BLOCK_H_ | 259 #endif // NET_SPDY_SPDY_HEADER_BLOCK_H_ |
OLD | NEW |