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 // This file contains some protocol structures for use with SPDY 2 and 3 | 5 // This file contains some protocol structures for use with SPDY 2 and 3 |
6 // The SPDY 2 spec can be found at: | 6 // The SPDY 2 spec can be found at: |
7 // http://dev.chromium.org/spdy/spdy-protocol/spdy-protocol-draft2 | 7 // http://dev.chromium.org/spdy/spdy-protocol/spdy-protocol-draft2 |
8 // The SPDY 3 spec can be found at: | 8 // The SPDY 3 spec can be found at: |
9 // http://dev.chromium.org/spdy/spdy-protocol/spdy-protocol-draft3 | 9 // http://dev.chromium.org/spdy/spdy-protocol/spdy-protocol-draft3 |
10 | 10 |
(...skipping 541 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
552 SpdyFrameIR() {} | 552 SpdyFrameIR() {} |
553 | 553 |
554 private: | 554 private: |
555 DISALLOW_COPY_AND_ASSIGN(SpdyFrameIR); | 555 DISALLOW_COPY_AND_ASSIGN(SpdyFrameIR); |
556 }; | 556 }; |
557 | 557 |
558 // Abstract class intended to be inherited by IRs that have a stream associated | 558 // Abstract class intended to be inherited by IRs that have a stream associated |
559 // to them. | 559 // to them. |
560 class NET_EXPORT_PRIVATE SpdyFrameWithStreamIdIR : public SpdyFrameIR { | 560 class NET_EXPORT_PRIVATE SpdyFrameWithStreamIdIR : public SpdyFrameIR { |
561 public: | 561 public: |
562 virtual ~SpdyFrameWithStreamIdIR() {} | 562 ~SpdyFrameWithStreamIdIR() override {} |
563 SpdyStreamId stream_id() const { return stream_id_; } | 563 SpdyStreamId stream_id() const { return stream_id_; } |
564 void set_stream_id(SpdyStreamId stream_id) { | 564 void set_stream_id(SpdyStreamId stream_id) { |
565 DCHECK_EQ(0u, stream_id & ~kStreamIdMask); | 565 DCHECK_EQ(0u, stream_id & ~kStreamIdMask); |
566 stream_id_ = stream_id; | 566 stream_id_ = stream_id; |
567 } | 567 } |
568 | 568 |
569 protected: | 569 protected: |
570 explicit SpdyFrameWithStreamIdIR(SpdyStreamId stream_id) { | 570 explicit SpdyFrameWithStreamIdIR(SpdyStreamId stream_id) { |
571 set_stream_id(stream_id); | 571 set_stream_id(stream_id); |
572 } | 572 } |
573 | 573 |
574 private: | 574 private: |
575 SpdyStreamId stream_id_; | 575 SpdyStreamId stream_id_; |
576 | 576 |
577 DISALLOW_COPY_AND_ASSIGN(SpdyFrameWithStreamIdIR); | 577 DISALLOW_COPY_AND_ASSIGN(SpdyFrameWithStreamIdIR); |
578 }; | 578 }; |
579 | 579 |
580 // Abstract class intended to be inherited by IRs that have the option of a FIN | 580 // Abstract class intended to be inherited by IRs that have the option of a FIN |
581 // flag. Implies SpdyFrameWithStreamIdIR. | 581 // flag. Implies SpdyFrameWithStreamIdIR. |
582 class NET_EXPORT_PRIVATE SpdyFrameWithFinIR : public SpdyFrameWithStreamIdIR { | 582 class NET_EXPORT_PRIVATE SpdyFrameWithFinIR : public SpdyFrameWithStreamIdIR { |
583 public: | 583 public: |
584 virtual ~SpdyFrameWithFinIR() {} | 584 ~SpdyFrameWithFinIR() override {} |
585 bool fin() const { return fin_; } | 585 bool fin() const { return fin_; } |
586 void set_fin(bool fin) { fin_ = fin; } | 586 void set_fin(bool fin) { fin_ = fin; } |
587 | 587 |
588 protected: | 588 protected: |
589 explicit SpdyFrameWithFinIR(SpdyStreamId stream_id) | 589 explicit SpdyFrameWithFinIR(SpdyStreamId stream_id) |
590 : SpdyFrameWithStreamIdIR(stream_id), | 590 : SpdyFrameWithStreamIdIR(stream_id), |
591 fin_(false) {} | 591 fin_(false) {} |
592 | 592 |
593 private: | 593 private: |
594 bool fin_; | 594 bool fin_; |
(...skipping 16 matching lines...) Expand all Loading... |
611 void SetHeader(const base::StringPiece& name, | 611 void SetHeader(const base::StringPiece& name, |
612 const base::StringPiece& value) { | 612 const base::StringPiece& value) { |
613 name_value_block_[name.as_string()] = value.as_string(); | 613 name_value_block_[name.as_string()] = value.as_string(); |
614 } | 614 } |
615 SpdyNameValueBlock* mutable_name_value_block() { | 615 SpdyNameValueBlock* mutable_name_value_block() { |
616 return &name_value_block_; | 616 return &name_value_block_; |
617 } | 617 } |
618 | 618 |
619 protected: | 619 protected: |
620 explicit SpdyFrameWithNameValueBlockIR(SpdyStreamId stream_id); | 620 explicit SpdyFrameWithNameValueBlockIR(SpdyStreamId stream_id); |
621 virtual ~SpdyFrameWithNameValueBlockIR(); | 621 ~SpdyFrameWithNameValueBlockIR() override; |
622 | 622 |
623 private: | 623 private: |
624 SpdyNameValueBlock name_value_block_; | 624 SpdyNameValueBlock name_value_block_; |
625 | 625 |
626 DISALLOW_COPY_AND_ASSIGN(SpdyFrameWithNameValueBlockIR); | 626 DISALLOW_COPY_AND_ASSIGN(SpdyFrameWithNameValueBlockIR); |
627 }; | 627 }; |
628 | 628 |
629 class NET_EXPORT_PRIVATE SpdyDataIR | 629 class NET_EXPORT_PRIVATE SpdyDataIR |
630 : public NON_EXPORTED_BASE(SpdyFrameWithFinIR) { | 630 : public NON_EXPORTED_BASE(SpdyFrameWithFinIR) { |
631 public: | 631 public: |
632 // Performs deep copy on data. | 632 // Performs deep copy on data. |
633 SpdyDataIR(SpdyStreamId stream_id, const base::StringPiece& data); | 633 SpdyDataIR(SpdyStreamId stream_id, const base::StringPiece& data); |
634 | 634 |
635 // Use in conjunction with SetDataShallow() for shallow-copy on data. | 635 // Use in conjunction with SetDataShallow() for shallow-copy on data. |
636 explicit SpdyDataIR(SpdyStreamId stream_id); | 636 explicit SpdyDataIR(SpdyStreamId stream_id); |
637 | 637 |
638 virtual ~SpdyDataIR(); | 638 ~SpdyDataIR() override; |
639 | 639 |
640 base::StringPiece data() const { return data_; } | 640 base::StringPiece data() const { return data_; } |
641 | 641 |
642 bool padded() const { return padded_; } | 642 bool padded() const { return padded_; } |
643 | 643 |
644 int padding_payload_len() const { return padding_payload_len_; } | 644 int padding_payload_len() const { return padding_payload_len_; } |
645 | 645 |
646 void set_padding_len(int padding_len) { | 646 void set_padding_len(int padding_len) { |
647 DCHECK_GT(padding_len, 0); | 647 DCHECK_GT(padding_len, 0); |
648 DCHECK_LE(padding_len, kPaddingSizePerFrame); | 648 DCHECK_LE(padding_len, kPaddingSizePerFrame); |
649 padded_ = true; | 649 padded_ = true; |
650 // The pad field takes one octet on the wire. | 650 // The pad field takes one octet on the wire. |
651 padding_payload_len_ = padding_len - 1; | 651 padding_payload_len_ = padding_len - 1; |
652 } | 652 } |
653 | 653 |
654 // Deep-copy of data (keep private copy). | 654 // Deep-copy of data (keep private copy). |
655 void SetDataDeep(const base::StringPiece& data) { | 655 void SetDataDeep(const base::StringPiece& data) { |
656 data_store_.reset(new std::string(data.data(), data.length())); | 656 data_store_.reset(new std::string(data.data(), data.length())); |
657 data_ = *(data_store_.get()); | 657 data_ = *(data_store_.get()); |
658 } | 658 } |
659 | 659 |
660 // Shallow-copy of data (do not keep private copy). | 660 // Shallow-copy of data (do not keep private copy). |
661 void SetDataShallow(const base::StringPiece& data) { | 661 void SetDataShallow(const base::StringPiece& data) { |
662 data_store_.reset(); | 662 data_store_.reset(); |
663 data_ = data; | 663 data_ = data; |
664 } | 664 } |
665 | 665 |
666 virtual void Visit(SpdyFrameVisitor* visitor) const override; | 666 void Visit(SpdyFrameVisitor* visitor) const override; |
667 | 667 |
668 private: | 668 private: |
669 // Used to store data that this SpdyDataIR should own. | 669 // Used to store data that this SpdyDataIR should own. |
670 scoped_ptr<std::string> data_store_; | 670 scoped_ptr<std::string> data_store_; |
671 base::StringPiece data_; | 671 base::StringPiece data_; |
672 | 672 |
673 bool padded_; | 673 bool padded_; |
674 // padding_payload_len_ = desired padding length - len(padding length field). | 674 // padding_payload_len_ = desired padding length - len(padding length field). |
675 int padding_payload_len_; | 675 int padding_payload_len_; |
676 | 676 |
(...skipping 14 matching lines...) Expand all Loading... |
691 void set_associated_to_stream_id(SpdyStreamId stream_id) { | 691 void set_associated_to_stream_id(SpdyStreamId stream_id) { |
692 associated_to_stream_id_ = stream_id; | 692 associated_to_stream_id_ = stream_id; |
693 } | 693 } |
694 SpdyPriority priority() const { return priority_; } | 694 SpdyPriority priority() const { return priority_; } |
695 void set_priority(SpdyPriority priority) { priority_ = priority; } | 695 void set_priority(SpdyPriority priority) { priority_ = priority; } |
696 bool unidirectional() const { return unidirectional_; } | 696 bool unidirectional() const { return unidirectional_; } |
697 void set_unidirectional(bool unidirectional) { | 697 void set_unidirectional(bool unidirectional) { |
698 unidirectional_ = unidirectional; | 698 unidirectional_ = unidirectional; |
699 } | 699 } |
700 | 700 |
701 virtual void Visit(SpdyFrameVisitor* visitor) const override; | 701 void Visit(SpdyFrameVisitor* visitor) const override; |
702 | 702 |
703 private: | 703 private: |
704 SpdyStreamId associated_to_stream_id_; | 704 SpdyStreamId associated_to_stream_id_; |
705 SpdyPriority priority_; | 705 SpdyPriority priority_; |
706 bool unidirectional_; | 706 bool unidirectional_; |
707 | 707 |
708 DISALLOW_COPY_AND_ASSIGN(SpdySynStreamIR); | 708 DISALLOW_COPY_AND_ASSIGN(SpdySynStreamIR); |
709 }; | 709 }; |
710 | 710 |
711 class NET_EXPORT_PRIVATE SpdySynReplyIR : public SpdyFrameWithNameValueBlockIR { | 711 class NET_EXPORT_PRIVATE SpdySynReplyIR : public SpdyFrameWithNameValueBlockIR { |
712 public: | 712 public: |
713 explicit SpdySynReplyIR(SpdyStreamId stream_id) | 713 explicit SpdySynReplyIR(SpdyStreamId stream_id) |
714 : SpdyFrameWithNameValueBlockIR(stream_id) {} | 714 : SpdyFrameWithNameValueBlockIR(stream_id) {} |
715 | 715 |
716 virtual void Visit(SpdyFrameVisitor* visitor) const override; | 716 void Visit(SpdyFrameVisitor* visitor) const override; |
717 | 717 |
718 private: | 718 private: |
719 DISALLOW_COPY_AND_ASSIGN(SpdySynReplyIR); | 719 DISALLOW_COPY_AND_ASSIGN(SpdySynReplyIR); |
720 }; | 720 }; |
721 | 721 |
722 class NET_EXPORT_PRIVATE SpdyRstStreamIR : public SpdyFrameWithStreamIdIR { | 722 class NET_EXPORT_PRIVATE SpdyRstStreamIR : public SpdyFrameWithStreamIdIR { |
723 public: | 723 public: |
724 SpdyRstStreamIR(SpdyStreamId stream_id, SpdyRstStreamStatus status, | 724 SpdyRstStreamIR(SpdyStreamId stream_id, SpdyRstStreamStatus status, |
725 base::StringPiece description); | 725 base::StringPiece description); |
726 | 726 |
727 virtual ~SpdyRstStreamIR(); | 727 ~SpdyRstStreamIR() override; |
728 | 728 |
729 SpdyRstStreamStatus status() const { | 729 SpdyRstStreamStatus status() const { |
730 return status_; | 730 return status_; |
731 } | 731 } |
732 void set_status(SpdyRstStreamStatus status) { | 732 void set_status(SpdyRstStreamStatus status) { |
733 status_ = status; | 733 status_ = status; |
734 } | 734 } |
735 | 735 |
736 base::StringPiece description() const { return description_; } | 736 base::StringPiece description() const { return description_; } |
737 | 737 |
738 void set_description(base::StringPiece description) { | 738 void set_description(base::StringPiece description) { |
739 description_ = description; | 739 description_ = description; |
740 } | 740 } |
741 | 741 |
742 virtual void Visit(SpdyFrameVisitor* visitor) const override; | 742 void Visit(SpdyFrameVisitor* visitor) const override; |
743 | 743 |
744 private: | 744 private: |
745 SpdyRstStreamStatus status_; | 745 SpdyRstStreamStatus status_; |
746 base::StringPiece description_; | 746 base::StringPiece description_; |
747 | 747 |
748 DISALLOW_COPY_AND_ASSIGN(SpdyRstStreamIR); | 748 DISALLOW_COPY_AND_ASSIGN(SpdyRstStreamIR); |
749 }; | 749 }; |
750 | 750 |
751 class NET_EXPORT_PRIVATE SpdySettingsIR : public SpdyFrameIR { | 751 class NET_EXPORT_PRIVATE SpdySettingsIR : public SpdyFrameIR { |
752 public: | 752 public: |
753 // Associates flags with a value. | 753 // Associates flags with a value. |
754 struct Value { | 754 struct Value { |
755 Value() : persist_value(false), | 755 Value() : persist_value(false), |
756 persisted(false), | 756 persisted(false), |
757 value(0) {} | 757 value(0) {} |
758 bool persist_value; | 758 bool persist_value; |
759 bool persisted; | 759 bool persisted; |
760 int32 value; | 760 int32 value; |
761 }; | 761 }; |
762 typedef std::map<SpdySettingsIds, Value> ValueMap; | 762 typedef std::map<SpdySettingsIds, Value> ValueMap; |
763 | 763 |
764 SpdySettingsIR(); | 764 SpdySettingsIR(); |
765 | 765 |
766 virtual ~SpdySettingsIR(); | 766 ~SpdySettingsIR() override; |
767 | 767 |
768 // Overwrites as appropriate. | 768 // Overwrites as appropriate. |
769 const ValueMap& values() const { return values_; } | 769 const ValueMap& values() const { return values_; } |
770 void AddSetting(SpdySettingsIds id, | 770 void AddSetting(SpdySettingsIds id, |
771 bool persist_value, | 771 bool persist_value, |
772 bool persisted, | 772 bool persisted, |
773 int32 value) { | 773 int32 value) { |
774 values_[id].persist_value = persist_value; | 774 values_[id].persist_value = persist_value; |
775 values_[id].persisted = persisted; | 775 values_[id].persisted = persisted; |
776 values_[id].value = value; | 776 values_[id].value = value; |
777 } | 777 } |
778 | 778 |
779 bool clear_settings() const { return clear_settings_; } | 779 bool clear_settings() const { return clear_settings_; } |
780 void set_clear_settings(bool clear_settings) { | 780 void set_clear_settings(bool clear_settings) { |
781 clear_settings_ = clear_settings; | 781 clear_settings_ = clear_settings; |
782 } | 782 } |
783 bool is_ack() const { return is_ack_; } | 783 bool is_ack() const { return is_ack_; } |
784 void set_is_ack(bool is_ack) { | 784 void set_is_ack(bool is_ack) { |
785 is_ack_ = is_ack; | 785 is_ack_ = is_ack; |
786 } | 786 } |
787 | 787 |
788 virtual void Visit(SpdyFrameVisitor* visitor) const override; | 788 void Visit(SpdyFrameVisitor* visitor) const override; |
789 | 789 |
790 private: | 790 private: |
791 ValueMap values_; | 791 ValueMap values_; |
792 bool clear_settings_; | 792 bool clear_settings_; |
793 bool is_ack_; | 793 bool is_ack_; |
794 | 794 |
795 DISALLOW_COPY_AND_ASSIGN(SpdySettingsIR); | 795 DISALLOW_COPY_AND_ASSIGN(SpdySettingsIR); |
796 }; | 796 }; |
797 | 797 |
798 class NET_EXPORT_PRIVATE SpdyPingIR : public SpdyFrameIR { | 798 class NET_EXPORT_PRIVATE SpdyPingIR : public SpdyFrameIR { |
799 public: | 799 public: |
800 explicit SpdyPingIR(SpdyPingId id) : id_(id), is_ack_(false) {} | 800 explicit SpdyPingIR(SpdyPingId id) : id_(id), is_ack_(false) {} |
801 SpdyPingId id() const { return id_; } | 801 SpdyPingId id() const { return id_; } |
802 | 802 |
803 // ACK logic is valid only for SPDY versions 4 and above. | 803 // ACK logic is valid only for SPDY versions 4 and above. |
804 bool is_ack() const { return is_ack_; } | 804 bool is_ack() const { return is_ack_; } |
805 void set_is_ack(bool is_ack) { is_ack_ = is_ack; } | 805 void set_is_ack(bool is_ack) { is_ack_ = is_ack; } |
806 | 806 |
807 virtual void Visit(SpdyFrameVisitor* visitor) const override; | 807 void Visit(SpdyFrameVisitor* visitor) const override; |
808 | 808 |
809 private: | 809 private: |
810 SpdyPingId id_; | 810 SpdyPingId id_; |
811 bool is_ack_; | 811 bool is_ack_; |
812 | 812 |
813 DISALLOW_COPY_AND_ASSIGN(SpdyPingIR); | 813 DISALLOW_COPY_AND_ASSIGN(SpdyPingIR); |
814 }; | 814 }; |
815 | 815 |
816 class NET_EXPORT_PRIVATE SpdyGoAwayIR : public SpdyFrameIR { | 816 class NET_EXPORT_PRIVATE SpdyGoAwayIR : public SpdyFrameIR { |
817 public: | 817 public: |
818 SpdyGoAwayIR(SpdyStreamId last_good_stream_id, SpdyGoAwayStatus status, | 818 SpdyGoAwayIR(SpdyStreamId last_good_stream_id, SpdyGoAwayStatus status, |
819 const base::StringPiece& description); | 819 const base::StringPiece& description); |
820 virtual ~SpdyGoAwayIR(); | 820 ~SpdyGoAwayIR() override; |
821 SpdyStreamId last_good_stream_id() const { return last_good_stream_id_; } | 821 SpdyStreamId last_good_stream_id() const { return last_good_stream_id_; } |
822 void set_last_good_stream_id(SpdyStreamId last_good_stream_id) { | 822 void set_last_good_stream_id(SpdyStreamId last_good_stream_id) { |
823 DCHECK_LE(0u, last_good_stream_id); | 823 DCHECK_LE(0u, last_good_stream_id); |
824 DCHECK_EQ(0u, last_good_stream_id & ~kStreamIdMask); | 824 DCHECK_EQ(0u, last_good_stream_id & ~kStreamIdMask); |
825 last_good_stream_id_ = last_good_stream_id; | 825 last_good_stream_id_ = last_good_stream_id; |
826 } | 826 } |
827 SpdyGoAwayStatus status() const { return status_; } | 827 SpdyGoAwayStatus status() const { return status_; } |
828 void set_status(SpdyGoAwayStatus status) { | 828 void set_status(SpdyGoAwayStatus status) { |
829 // TODO(hkhalil): Check valid ranges of status? | 829 // TODO(hkhalil): Check valid ranges of status? |
830 status_ = status; | 830 status_ = status; |
831 } | 831 } |
832 | 832 |
833 const base::StringPiece& description() const; | 833 const base::StringPiece& description() const; |
834 | 834 |
835 virtual void Visit(SpdyFrameVisitor* visitor) const override; | 835 void Visit(SpdyFrameVisitor* visitor) const override; |
836 | 836 |
837 private: | 837 private: |
838 SpdyStreamId last_good_stream_id_; | 838 SpdyStreamId last_good_stream_id_; |
839 SpdyGoAwayStatus status_; | 839 SpdyGoAwayStatus status_; |
840 const base::StringPiece description_; | 840 const base::StringPiece description_; |
841 | 841 |
842 DISALLOW_COPY_AND_ASSIGN(SpdyGoAwayIR); | 842 DISALLOW_COPY_AND_ASSIGN(SpdyGoAwayIR); |
843 }; | 843 }; |
844 | 844 |
845 class NET_EXPORT_PRIVATE SpdyHeadersIR : public SpdyFrameWithNameValueBlockIR { | 845 class NET_EXPORT_PRIVATE SpdyHeadersIR : public SpdyFrameWithNameValueBlockIR { |
846 public: | 846 public: |
847 explicit SpdyHeadersIR(SpdyStreamId stream_id) | 847 explicit SpdyHeadersIR(SpdyStreamId stream_id) |
848 : SpdyFrameWithNameValueBlockIR(stream_id), | 848 : SpdyFrameWithNameValueBlockIR(stream_id), |
849 has_priority_(false), | 849 has_priority_(false), |
850 priority_(0) {} | 850 priority_(0) {} |
851 | 851 |
852 virtual void Visit(SpdyFrameVisitor* visitor) const override; | 852 void Visit(SpdyFrameVisitor* visitor) const override; |
853 | 853 |
854 bool has_priority() const { return has_priority_; } | 854 bool has_priority() const { return has_priority_; } |
855 void set_has_priority(bool has_priority) { has_priority_ = has_priority; } | 855 void set_has_priority(bool has_priority) { has_priority_ = has_priority; } |
856 uint32 priority() const { return priority_; } | 856 uint32 priority() const { return priority_; } |
857 void set_priority(SpdyPriority priority) { priority_ = priority; } | 857 void set_priority(SpdyPriority priority) { priority_ = priority; } |
858 | 858 |
859 private: | 859 private: |
860 bool has_priority_; | 860 bool has_priority_; |
861 // 31-bit priority. | 861 // 31-bit priority. |
862 uint32 priority_; | 862 uint32 priority_; |
863 DISALLOW_COPY_AND_ASSIGN(SpdyHeadersIR); | 863 DISALLOW_COPY_AND_ASSIGN(SpdyHeadersIR); |
864 }; | 864 }; |
865 | 865 |
866 class NET_EXPORT_PRIVATE SpdyWindowUpdateIR : public SpdyFrameWithStreamIdIR { | 866 class NET_EXPORT_PRIVATE SpdyWindowUpdateIR : public SpdyFrameWithStreamIdIR { |
867 public: | 867 public: |
868 SpdyWindowUpdateIR(SpdyStreamId stream_id, int32 delta) | 868 SpdyWindowUpdateIR(SpdyStreamId stream_id, int32 delta) |
869 : SpdyFrameWithStreamIdIR(stream_id) { | 869 : SpdyFrameWithStreamIdIR(stream_id) { |
870 set_delta(delta); | 870 set_delta(delta); |
871 } | 871 } |
872 int32 delta() const { return delta_; } | 872 int32 delta() const { return delta_; } |
873 void set_delta(int32 delta) { | 873 void set_delta(int32 delta) { |
874 DCHECK_LT(0, delta); | 874 DCHECK_LT(0, delta); |
875 DCHECK_LE(delta, kSpdyMaximumWindowSize); | 875 DCHECK_LE(delta, kSpdyMaximumWindowSize); |
876 delta_ = delta; | 876 delta_ = delta; |
877 } | 877 } |
878 | 878 |
879 virtual void Visit(SpdyFrameVisitor* visitor) const override; | 879 void Visit(SpdyFrameVisitor* visitor) const override; |
880 | 880 |
881 private: | 881 private: |
882 int32 delta_; | 882 int32 delta_; |
883 | 883 |
884 DISALLOW_COPY_AND_ASSIGN(SpdyWindowUpdateIR); | 884 DISALLOW_COPY_AND_ASSIGN(SpdyWindowUpdateIR); |
885 }; | 885 }; |
886 | 886 |
887 class NET_EXPORT_PRIVATE SpdyBlockedIR | 887 class NET_EXPORT_PRIVATE SpdyBlockedIR |
888 : public NON_EXPORTED_BASE(SpdyFrameWithStreamIdIR) { | 888 : public NON_EXPORTED_BASE(SpdyFrameWithStreamIdIR) { |
889 public: | 889 public: |
890 explicit SpdyBlockedIR(SpdyStreamId stream_id) | 890 explicit SpdyBlockedIR(SpdyStreamId stream_id) |
891 : SpdyFrameWithStreamIdIR(stream_id) {} | 891 : SpdyFrameWithStreamIdIR(stream_id) {} |
892 | 892 |
893 virtual void Visit(SpdyFrameVisitor* visitor) const override; | 893 void Visit(SpdyFrameVisitor* visitor) const override; |
894 | 894 |
895 private: | 895 private: |
896 DISALLOW_COPY_AND_ASSIGN(SpdyBlockedIR); | 896 DISALLOW_COPY_AND_ASSIGN(SpdyBlockedIR); |
897 }; | 897 }; |
898 | 898 |
899 class NET_EXPORT_PRIVATE SpdyPushPromiseIR | 899 class NET_EXPORT_PRIVATE SpdyPushPromiseIR |
900 : public SpdyFrameWithNameValueBlockIR { | 900 : public SpdyFrameWithNameValueBlockIR { |
901 public: | 901 public: |
902 SpdyPushPromiseIR(SpdyStreamId stream_id, SpdyStreamId promised_stream_id) | 902 SpdyPushPromiseIR(SpdyStreamId stream_id, SpdyStreamId promised_stream_id) |
903 : SpdyFrameWithNameValueBlockIR(stream_id), | 903 : SpdyFrameWithNameValueBlockIR(stream_id), |
904 promised_stream_id_(promised_stream_id) {} | 904 promised_stream_id_(promised_stream_id) {} |
905 SpdyStreamId promised_stream_id() const { return promised_stream_id_; } | 905 SpdyStreamId promised_stream_id() const { return promised_stream_id_; } |
906 void set_promised_stream_id(SpdyStreamId id) { promised_stream_id_ = id; } | 906 void set_promised_stream_id(SpdyStreamId id) { promised_stream_id_ = id; } |
907 | 907 |
908 virtual void Visit(SpdyFrameVisitor* visitor) const override; | 908 void Visit(SpdyFrameVisitor* visitor) const override; |
909 | 909 |
910 private: | 910 private: |
911 SpdyStreamId promised_stream_id_; | 911 SpdyStreamId promised_stream_id_; |
912 DISALLOW_COPY_AND_ASSIGN(SpdyPushPromiseIR); | 912 DISALLOW_COPY_AND_ASSIGN(SpdyPushPromiseIR); |
913 }; | 913 }; |
914 | 914 |
915 // TODO(jgraettinger): This representation needs review. SpdyContinuationIR | 915 // TODO(jgraettinger): This representation needs review. SpdyContinuationIR |
916 // needs to frame a portion of a single, arbitrarily-broken encoded buffer. | 916 // needs to frame a portion of a single, arbitrarily-broken encoded buffer. |
917 class NET_EXPORT_PRIVATE SpdyContinuationIR | 917 class NET_EXPORT_PRIVATE SpdyContinuationIR |
918 : public SpdyFrameWithNameValueBlockIR { | 918 : public SpdyFrameWithNameValueBlockIR { |
919 public: | 919 public: |
920 explicit SpdyContinuationIR(SpdyStreamId stream_id) | 920 explicit SpdyContinuationIR(SpdyStreamId stream_id) |
921 : SpdyFrameWithNameValueBlockIR(stream_id), | 921 : SpdyFrameWithNameValueBlockIR(stream_id), |
922 end_headers_(false) {} | 922 end_headers_(false) {} |
923 | 923 |
924 virtual void Visit(SpdyFrameVisitor* visitor) const override; | 924 void Visit(SpdyFrameVisitor* visitor) const override; |
925 | 925 |
926 bool end_headers() const { return end_headers_; } | 926 bool end_headers() const { return end_headers_; } |
927 void set_end_headers(bool end_headers) {end_headers_ = end_headers;} | 927 void set_end_headers(bool end_headers) {end_headers_ = end_headers;} |
928 | 928 |
929 private: | 929 private: |
930 bool end_headers_; | 930 bool end_headers_; |
931 DISALLOW_COPY_AND_ASSIGN(SpdyContinuationIR); | 931 DISALLOW_COPY_AND_ASSIGN(SpdyContinuationIR); |
932 }; | 932 }; |
933 | 933 |
934 class NET_EXPORT_PRIVATE SpdyAltSvcIR : public SpdyFrameWithStreamIdIR { | 934 class NET_EXPORT_PRIVATE SpdyAltSvcIR : public SpdyFrameWithStreamIdIR { |
(...skipping 13 matching lines...) Expand all Loading... |
948 void set_protocol_id(SpdyProtocolId protocol_id) { | 948 void set_protocol_id(SpdyProtocolId protocol_id) { |
949 protocol_id_ = protocol_id; | 949 protocol_id_ = protocol_id; |
950 } | 950 } |
951 void set_host(std::string host) { | 951 void set_host(std::string host) { |
952 host_ = host; | 952 host_ = host; |
953 } | 953 } |
954 void set_origin(std::string origin) { | 954 void set_origin(std::string origin) { |
955 origin_ = origin; | 955 origin_ = origin; |
956 } | 956 } |
957 | 957 |
958 virtual void Visit(SpdyFrameVisitor* visitor) const override; | 958 void Visit(SpdyFrameVisitor* visitor) const override; |
959 | 959 |
960 private: | 960 private: |
961 uint32 max_age_; | 961 uint32 max_age_; |
962 uint16 port_; | 962 uint16 port_; |
963 SpdyProtocolId protocol_id_; | 963 SpdyProtocolId protocol_id_; |
964 std::string host_; | 964 std::string host_; |
965 std::string origin_; | 965 std::string origin_; |
966 DISALLOW_COPY_AND_ASSIGN(SpdyAltSvcIR); | 966 DISALLOW_COPY_AND_ASSIGN(SpdyAltSvcIR); |
967 }; | 967 }; |
968 | 968 |
969 class NET_EXPORT_PRIVATE SpdyPriorityIR : public SpdyFrameWithStreamIdIR { | 969 class NET_EXPORT_PRIVATE SpdyPriorityIR : public SpdyFrameWithStreamIdIR { |
970 public: | 970 public: |
971 explicit SpdyPriorityIR(SpdyStreamId stream_id); | 971 explicit SpdyPriorityIR(SpdyStreamId stream_id); |
972 explicit SpdyPriorityIR(SpdyStreamId stream_id, | 972 explicit SpdyPriorityIR(SpdyStreamId stream_id, |
973 SpdyStreamId parent_stream_id, | 973 SpdyStreamId parent_stream_id, |
974 uint8 weight, | 974 uint8 weight, |
975 bool exclusive); | 975 bool exclusive); |
976 SpdyStreamId parent_stream_id() const { return parent_stream_id_; } | 976 SpdyStreamId parent_stream_id() const { return parent_stream_id_; } |
977 void set_parent_stream_id(SpdyStreamId id) { parent_stream_id_ = id; } | 977 void set_parent_stream_id(SpdyStreamId id) { parent_stream_id_ = id; } |
978 uint8 weight() const { return weight_; } | 978 uint8 weight() const { return weight_; } |
979 void set_weight(uint8 weight) { weight_ = weight; } | 979 void set_weight(uint8 weight) { weight_ = weight; } |
980 bool exclusive() const { return exclusive_; } | 980 bool exclusive() const { return exclusive_; } |
981 void set_exclusive(bool exclusive) { exclusive_ = exclusive; } | 981 void set_exclusive(bool exclusive) { exclusive_ = exclusive; } |
982 | 982 |
983 virtual void Visit(SpdyFrameVisitor* visitor) const override; | 983 void Visit(SpdyFrameVisitor* visitor) const override; |
984 | 984 |
985 private: | 985 private: |
986 SpdyStreamId parent_stream_id_; | 986 SpdyStreamId parent_stream_id_; |
987 uint8 weight_; | 987 uint8 weight_; |
988 bool exclusive_; | 988 bool exclusive_; |
989 DISALLOW_COPY_AND_ASSIGN(SpdyPriorityIR); | 989 DISALLOW_COPY_AND_ASSIGN(SpdyPriorityIR); |
990 }; | 990 }; |
991 | 991 |
992 // ------------------------------------------------------------------------- | 992 // ------------------------------------------------------------------------- |
993 // Wrapper classes for various SPDY frames. | 993 // Wrapper classes for various SPDY frames. |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1057 SpdyFrameVisitor() {} | 1057 SpdyFrameVisitor() {} |
1058 virtual ~SpdyFrameVisitor() {} | 1058 virtual ~SpdyFrameVisitor() {} |
1059 | 1059 |
1060 private: | 1060 private: |
1061 DISALLOW_COPY_AND_ASSIGN(SpdyFrameVisitor); | 1061 DISALLOW_COPY_AND_ASSIGN(SpdyFrameVisitor); |
1062 }; | 1062 }; |
1063 | 1063 |
1064 } // namespace net | 1064 } // namespace net |
1065 | 1065 |
1066 #endif // NET_SPDY_SPDY_PROTOCOL_H_ | 1066 #endif // NET_SPDY_SPDY_PROTOCOL_H_ |
OLD | NEW |