| 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 stream ID for the given control frame (SYN_STREAM, SYN_REPLY, and | |
| 479 // HEADERS). If the control frame is NULL or of another type, this | |
| 480 // function returns kInvalidStream. | |
| 481 static SpdyStreamId GetControlFrameStreamId( | |
| 482 const SpdyControlFrame* control_frame); | |
| 483 | |
| 484 // For ease of testing and experimentation we can tweak compression on/off. | 478 // For ease of testing and experimentation we can tweak compression on/off. |
| 485 void set_enable_compression(bool value) { | 479 void set_enable_compression(bool value) { |
| 486 enable_compression_ = value; | 480 enable_compression_ = value; |
| 487 } | 481 } |
| 488 | 482 |
| 489 // Used only in log messages. | 483 // Used only in log messages. |
| 490 void set_display_protocol(const std::string& protocol) { | 484 void set_display_protocol(const std::string& protocol) { |
| 491 display_protocol_ = protocol; | 485 display_protocol_ = protocol; |
| 492 } | 486 } |
| 493 | 487 |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 560 bool ProcessSetting(const char* data); // Always passed exactly 8 bytes. | 554 bool ProcessSetting(const char* data); // Always passed exactly 8 bytes. |
| 561 | 555 |
| 562 // Get (and lazily initialize) the ZLib state. | 556 // Get (and lazily initialize) the ZLib state. |
| 563 z_stream* GetHeaderCompressor(); | 557 z_stream* GetHeaderCompressor(); |
| 564 z_stream* GetHeaderDecompressor(); | 558 z_stream* GetHeaderDecompressor(); |
| 565 | 559 |
| 566 // Deliver the given control frame's compressed headers block to the visitor | 560 // Deliver the given control frame's compressed headers block to the visitor |
| 567 // in decompressed form, in chunks. Returns true if the visitor has | 561 // in decompressed form, in chunks. Returns true if the visitor has |
| 568 // accepted all of the chunks. | 562 // accepted all of the chunks. |
| 569 bool IncrementallyDecompressControlFrameHeaderData( | 563 bool IncrementallyDecompressControlFrameHeaderData( |
| 570 const SpdyControlFrame* frame, | 564 SpdyStreamId stream_id, |
| 571 const char* data, | 565 const char* data, |
| 572 size_t len); | 566 size_t len); |
| 573 | 567 |
| 574 // Deliver the given control frame's uncompressed headers block to the | 568 // Deliver the given control frame's uncompressed headers block to the |
| 575 // visitor in chunks. Returns true if the visitor has accepted all of the | 569 // visitor in chunks. Returns true if the visitor has accepted all of the |
| 576 // chunks. | 570 // chunks. |
| 577 bool IncrementallyDeliverControlFrameHeaderData(const SpdyControlFrame* frame, | 571 bool IncrementallyDeliverControlFrameHeaderData(SpdyStreamId stream_id, |
| 578 const char* data, | 572 const char* data, |
| 579 size_t len); | 573 size_t len); |
| 580 | 574 |
| 581 // Utility to copy the given data block to the current frame buffer, up | 575 // Utility to copy the given data block to the current frame buffer, up |
| 582 // to the given maximum number of bytes, and update the buffer | 576 // to the given maximum number of bytes, and update the buffer |
| 583 // data (pointer and length). Returns the number of bytes | 577 // data (pointer and length). Returns the number of bytes |
| 584 // read, and: | 578 // read, and: |
| 585 // *data is advanced the number of bytes read. | 579 // *data is advanced the number of bytes read. |
| 586 // *len is reduced by the number of bytes read. | 580 // *len is reduced by the number of bytes read. |
| 587 size_t UpdateCurrentFrameBuffer(const char** data, size_t* len, | 581 size_t UpdateCurrentFrameBuffer(const char** data, size_t* len, |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 668 // starts with HTTP. If it does, we likely have an HTTP response. This | 662 // starts with HTTP. If it does, we likely have an HTTP response. This |
| 669 // isn't guaranteed though: we could have gotten a settings frame and then | 663 // isn't guaranteed though: we could have gotten a settings frame and then |
| 670 // corrupt data that just looks like HTTP, but deterministic checking requires | 664 // corrupt data that just looks like HTTP, but deterministic checking requires |
| 671 // a lot more state. | 665 // a lot more state. |
| 672 bool probable_http_response_; | 666 bool probable_http_response_; |
| 673 }; | 667 }; |
| 674 | 668 |
| 675 } // namespace net | 669 } // namespace net |
| 676 | 670 |
| 677 #endif // NET_SPDY_SPDY_FRAMER_H_ | 671 #endif // NET_SPDY_SPDY_FRAMER_H_ |
| OLD | NEW |