| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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_TOOLS_BALSA_BALSA_FRAME_H_ | 5 #ifndef NET_TOOLS_BALSA_BALSA_FRAME_H_ |
| 6 #define NET_TOOLS_BALSA_BALSA_FRAME_H_ | 6 #define NET_TOOLS_BALSA_BALSA_FRAME_H_ |
| 7 | 7 |
| 8 #include <stddef.h> |
| 9 #include <stdint.h> |
| 10 |
| 8 #include <utility> | 11 #include <utility> |
| 9 #include <vector> | 12 #include <vector> |
| 10 | 13 |
| 11 #include "base/compiler_specific.h" | 14 #include "base/compiler_specific.h" |
| 12 #include "net/tools/balsa/balsa_enums.h" | 15 #include "net/tools/balsa/balsa_enums.h" |
| 13 #include "net/tools/balsa/balsa_headers.h" | 16 #include "net/tools/balsa/balsa_headers.h" |
| 14 #include "net/tools/balsa/balsa_visitor_interface.h" | 17 #include "net/tools/balsa/balsa_visitor_interface.h" |
| 15 #include "net/tools/balsa/buffer_interface.h" | 18 #include "net/tools/balsa/buffer_interface.h" |
| 16 #include "net/tools/balsa/http_message_constants.h" | 19 #include "net/tools/balsa/http_message_constants.h" |
| 17 #include "net/tools/balsa/simple_buffer.h" | 20 #include "net/tools/balsa/simple_buffer.h" |
| 18 | 21 |
| 19 // For additional debug output, uncomment the following: | 22 // For additional debug output, uncomment the following: |
| 20 // #define DEBUGFRAMER 1 | 23 // #define DEBUGFRAMER 1 |
| 21 | 24 |
| 22 namespace net { | 25 namespace net { |
| 23 | 26 |
| 24 // BalsaFrame is a 'Model' of a framer (haha). | 27 // BalsaFrame is a 'Model' of a framer (haha). |
| 25 // It exists as a proof of concept headers framer. | 28 // It exists as a proof of concept headers framer. |
| 26 class BalsaFrame { | 29 class BalsaFrame { |
| 27 public: | 30 public: |
| 28 typedef std::vector<std::pair<size_t, size_t> > Lines; | 31 typedef std::vector<std::pair<size_t, size_t> > Lines; |
| 29 | 32 |
| 30 typedef BalsaHeaders::HeaderLineDescription HeaderLineDescription; | 33 typedef BalsaHeaders::HeaderLineDescription HeaderLineDescription; |
| 31 typedef BalsaHeaders::HeaderLines HeaderLines; | 34 typedef BalsaHeaders::HeaderLines HeaderLines; |
| 32 typedef BalsaHeaders::HeaderTokenList HeaderTokenList; | 35 typedef BalsaHeaders::HeaderTokenList HeaderTokenList; |
| 33 | 36 |
| 34 // TODO(fenix): get rid of the 'kValidTerm*' stuff by using the 'since last | 37 // TODO(fenix): get rid of the 'kValidTerm*' stuff by using the 'since last |
| 35 // index' strategy. Note that this implies getting rid of the HeaderFramed() | 38 // index' strategy. Note that this implies getting rid of the HeaderFramed() |
| 36 | 39 |
| 37 static const uint32 kValidTerm1 = '\n' << 16 | | 40 static const uint32_t kValidTerm1 = '\n' << 16 | '\r' << 8 | '\n'; |
| 38 '\r' << 8 | | 41 static const uint32_t kValidTerm1Mask = 0xFF << 16 | 0xFF << 8 | 0xFF; |
| 39 '\n'; | 42 static const uint32_t kValidTerm2 = '\n' << 8 | '\n'; |
| 40 static const uint32 kValidTerm1Mask = 0xFF << 16 | | 43 static const uint32_t kValidTerm2Mask = 0xFF << 8 | 0xFF; |
| 41 0xFF << 8 | | |
| 42 0xFF; | |
| 43 static const uint32 kValidTerm2 = '\n' << 8 | | |
| 44 '\n'; | |
| 45 static const uint32 kValidTerm2Mask = 0xFF << 8 | | |
| 46 0xFF; | |
| 47 BalsaFrame(); | 44 BalsaFrame(); |
| 48 ~BalsaFrame(); | 45 ~BalsaFrame(); |
| 49 | 46 |
| 50 // Reset reinitializes all the member variables of the framer and clears the | 47 // Reset reinitializes all the member variables of the framer and clears the |
| 51 // attached header object (but doesn't change the pointer value headers_). | 48 // attached header object (but doesn't change the pointer value headers_). |
| 52 void Reset(); | 49 void Reset(); |
| 53 | 50 |
| 54 const BalsaHeaders* const_balsa_headers() const { return headers_; } | 51 const BalsaHeaders* const_balsa_headers() const { return headers_; } |
| 55 BalsaHeaders* balsa_headers() { return headers_; } | 52 BalsaHeaders* balsa_headers() { return headers_; } |
| 56 // The method set_balsa_headers clears the headers provided and attaches them | 53 // The method set_balsa_headers clears the headers provided and attaches them |
| (...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 238 bool is_request_; // This is not reset in Reset() | 235 bool is_request_; // This is not reset in Reset() |
| 239 bool request_was_head_; // This is not reset in Reset() | 236 bool request_was_head_; // This is not reset in Reset() |
| 240 size_t max_header_length_; // This is not reset in Reset() | 237 size_t max_header_length_; // This is not reset in Reset() |
| 241 size_t max_request_uri_length_; // This is not reset in Reset() | 238 size_t max_request_uri_length_; // This is not reset in Reset() |
| 242 BalsaVisitorInterface* visitor_; | 239 BalsaVisitorInterface* visitor_; |
| 243 size_t chunk_length_remaining_; | 240 size_t chunk_length_remaining_; |
| 244 size_t content_length_remaining_; | 241 size_t content_length_remaining_; |
| 245 const char* last_slash_n_loc_; | 242 const char* last_slash_n_loc_; |
| 246 const char* last_recorded_slash_n_loc_; | 243 const char* last_recorded_slash_n_loc_; |
| 247 size_t last_slash_n_idx_; | 244 size_t last_slash_n_idx_; |
| 248 uint32 term_chars_; | 245 uint32_t term_chars_; |
| 249 BalsaFrameEnums::ParseState parse_state_; | 246 BalsaFrameEnums::ParseState parse_state_; |
| 250 BalsaFrameEnums::ErrorCode last_error_; | 247 BalsaFrameEnums::ErrorCode last_error_; |
| 251 | 248 |
| 252 Lines lines_; | 249 Lines lines_; |
| 253 | 250 |
| 254 BalsaHeaders* headers_; // This is not reset to NULL in Reset(). | 251 BalsaHeaders* headers_; // This is not reset to NULL in Reset(). |
| 255 DoNothingBalsaVisitor do_nothing_visitor_; | 252 DoNothingBalsaVisitor do_nothing_visitor_; |
| 256 }; | 253 }; |
| 257 | 254 |
| 258 } // namespace net | 255 } // namespace net |
| 259 | 256 |
| 260 #endif // NET_TOOLS_BALSA_BALSA_FRAME_H_ | 257 #endif // NET_TOOLS_BALSA_BALSA_FRAME_H_ |
| 261 | 258 |
| OLD | NEW |