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_FRAMER_H_ | 5 #ifndef NET_SPDY_SPDY_FRAMER_H_ |
6 #define NET_SPDY_SPDY_FRAMER_H_ | 6 #define NET_SPDY_SPDY_FRAMER_H_ |
7 | 7 |
8 #include <list> | 8 #include <list> |
9 #include <map> | 9 #include <map> |
10 #include <string> | 10 #include <string> |
(...skipping 457 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
468 // On failure, returns NULL. | 468 // On failure, returns NULL. |
469 SpdyFrame* CompressFrame(const SpdyFrame& frame); | 469 SpdyFrame* CompressFrame(const SpdyFrame& frame); |
470 | 470 |
471 // Create a copy of a frame. | 471 // Create a copy of a frame. |
472 // Returned frame must be freed with "delete". | 472 // Returned frame must be freed with "delete". |
473 SpdyFrame* DuplicateFrame(const SpdyFrame& frame); | 473 SpdyFrame* DuplicateFrame(const SpdyFrame& frame); |
474 | 474 |
475 // Returns true if a frame could be compressed. | 475 // Returns true if a frame could be compressed. |
476 bool IsCompressible(const SpdyFrame& frame) const; | 476 bool IsCompressible(const SpdyFrame& frame) const; |
477 | 477 |
478 // Get the minimum size of the control frame for the given control frame | |
479 // type. This is useful for validating frame blocks. | |
480 static size_t GetMinimumControlFrameSize(int version, SpdyControlType type); | |
481 | |
482 // Get the stream ID for the given control frame (SYN_STREAM, SYN_REPLY, and | 478 // Get the stream ID for the given control frame (SYN_STREAM, SYN_REPLY, and |
483 // HEADERS). If the control frame is NULL or of another type, this | 479 // HEADERS). If the control frame is NULL or of another type, this |
484 // function returns kInvalidStream. | 480 // function returns kInvalidStream. |
485 static SpdyStreamId GetControlFrameStreamId( | 481 static SpdyStreamId GetControlFrameStreamId( |
486 const SpdyControlFrame* control_frame); | 482 const SpdyControlFrame* control_frame); |
487 | 483 |
488 // For ease of testing and experimentation we can tweak compression on/off. | 484 // For ease of testing and experimentation we can tweak compression on/off. |
489 void set_enable_compression(bool value) { | 485 void set_enable_compression(bool value) { |
490 enable_compression_ = value; | 486 enable_compression_ = value; |
491 } | 487 } |
492 | 488 |
493 // Used only in log messages. | 489 // Used only in log messages. |
494 void set_display_protocol(const std::string& protocol) { | 490 void set_display_protocol(const std::string& protocol) { |
495 display_protocol_ = protocol; | 491 display_protocol_ = protocol; |
496 } | 492 } |
497 | 493 |
| 494 // Returns the (minimum) size of control frames (sans variable-length |
| 495 // portions). |
| 496 size_t GetControlFrameMinimumSize() const; |
| 497 size_t GetSynStreamMinimumSize() const; |
| 498 size_t GetSynReplyMinimumSize() const; |
| 499 size_t GetRstStreamSize() const; |
| 500 size_t GetSettingsMinimumSize() const; |
| 501 size_t GetPingSize() const; |
| 502 size_t GetGoAwaySize() const; |
| 503 size_t GetHeadersMinimumSize() const; |
| 504 size_t GetWindowUpdateSize() const; |
| 505 size_t GetCredentialMinimumSize() const; |
| 506 |
498 // For debugging. | 507 // For debugging. |
499 static const char* StateToString(int state); | 508 static const char* StateToString(int state); |
500 static const char* ErrorCodeToString(int error_code); | 509 static const char* ErrorCodeToString(int error_code); |
501 static const char* StatusCodeToString(int status_code); | 510 static const char* StatusCodeToString(int status_code); |
502 static const char* ControlTypeToString(SpdyControlType type); | 511 static const char* ControlTypeToString(SpdyControlType type); |
503 | 512 |
504 int protocol_version() const { return spdy_version_; } | 513 int protocol_version() const { return spdy_version_; } |
505 | 514 |
506 bool probable_http_response() const { return probable_http_response_; } | 515 bool probable_http_response() const { return probable_http_response_; } |
507 | 516 |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
659 // starts with HTTP. If it does, we likely have an HTTP response. This | 668 // starts with HTTP. If it does, we likely have an HTTP response. This |
660 // isn't guaranteed though: we could have gotten a settings frame and then | 669 // isn't guaranteed though: we could have gotten a settings frame and then |
661 // corrupt data that just looks like HTTP, but deterministic checking requires | 670 // corrupt data that just looks like HTTP, but deterministic checking requires |
662 // a lot more state. | 671 // a lot more state. |
663 bool probable_http_response_; | 672 bool probable_http_response_; |
664 }; | 673 }; |
665 | 674 |
666 } // namespace net | 675 } // namespace net |
667 | 676 |
668 #endif // NET_SPDY_SPDY_FRAMER_H_ | 677 #endif // NET_SPDY_SPDY_FRAMER_H_ |
OLD | NEW |