Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(172)

Side by Side Diff: net/spdy/spdy_protocol.h

Issue 9716020: Add base::HostToNetXX() & NetToHostXX(), and use them to replace htonX() & ntohX() in Chrome. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Switch a few remaining call-sites. Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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. 5 // This file contains some protocol structures for use with Spdy.
6 6
7 #ifndef NET_SPDY_SPDY_PROTOCOL_H_ 7 #ifndef NET_SPDY_SPDY_PROTOCOL_H_
8 #define NET_SPDY_SPDY_PROTOCOL_H_ 8 #define NET_SPDY_SPDY_PROTOCOL_H_
9 #pragma once 9 #pragma once
10 10
(...skipping 557 matching lines...) Expand 10 before | Expand all | Expand 10 after
568 } 568 }
569 569
570 // Provides access to the frame bytes, which is a buffer containing 570 // Provides access to the frame bytes, which is a buffer containing
571 // the frame packed as expected for sending over the wire. 571 // the frame packed as expected for sending over the wire.
572 char* data() const { return reinterpret_cast<char*>(frame_); } 572 char* data() const { return reinterpret_cast<char*>(frame_); }
573 573
574 uint8 flags() const { return frame_->flags_length_.flags_[0]; } 574 uint8 flags() const { return frame_->flags_length_.flags_[0]; }
575 void set_flags(uint8 flags) { frame_->flags_length_.flags_[0] = flags; } 575 void set_flags(uint8 flags) { frame_->flags_length_.flags_[0] = flags; }
576 576
577 uint32 length() const { 577 uint32 length() const {
578 return ntohl(frame_->flags_length_.length_) & kLengthMask; 578 return base::NetToHost32(frame_->flags_length_.length_) & kLengthMask;
579 } 579 }
580 580
581 void set_length(uint32 length) { 581 void set_length(uint32 length) {
582 DCHECK_EQ(0u, (length & ~kLengthMask)); 582 DCHECK_EQ(0u, (length & ~kLengthMask));
583 length = htonl(length & kLengthMask); 583 length = base::HostToNet32(length & kLengthMask);
584 frame_->flags_length_.length_ = flags() | length; 584 frame_->flags_length_.length_ = flags() | length;
585 } 585 }
586 586
587 bool is_control_frame() const { 587 bool is_control_frame() const {
588 return (ntohs(frame_->control_.version_) & kControlFlagMask) == 588 return (base::NetToHost16(frame_->control_.version_) & kControlFlagMask) ==
589 kControlFlagMask; 589 kControlFlagMask;
590 } 590 }
591 591
592 // The size of the SpdyFrameBlock structure. 592 // The size of the SpdyFrameBlock structure.
593 // Every SpdyFrame* class has a static size() method for accessing 593 // Every SpdyFrame* class has a static size() method for accessing
594 // the size of the data structure which will be sent over the wire. 594 // the size of the data structure which will be sent over the wire.
595 // Note: this is not the same as sizeof(SpdyFrame). 595 // Note: this is not the same as sizeof(SpdyFrame).
596 enum { kHeaderSize = sizeof(struct SpdyFrameBlock) }; 596 enum { kHeaderSize = sizeof(struct SpdyFrameBlock) };
597 597
598 protected: 598 protected:
599 SpdyFrameBlock* frame_; 599 SpdyFrameBlock* frame_;
600 600
601 private: 601 private:
602 bool owns_buffer_; 602 bool owns_buffer_;
603 DISALLOW_COPY_AND_ASSIGN(SpdyFrame); 603 DISALLOW_COPY_AND_ASSIGN(SpdyFrame);
604 }; 604 };
605 605
606 // A Data Frame. 606 // A Data Frame.
607 class SpdyDataFrame : public SpdyFrame { 607 class SpdyDataFrame : public SpdyFrame {
608 public: 608 public:
609 SpdyDataFrame() : SpdyFrame(size()) {} 609 SpdyDataFrame() : SpdyFrame(size()) {}
610 SpdyDataFrame(char* data, bool owns_buffer) 610 SpdyDataFrame(char* data, bool owns_buffer)
611 : SpdyFrame(data, owns_buffer) {} 611 : SpdyFrame(data, owns_buffer) {}
612 612
613 SpdyStreamId stream_id() const { 613 SpdyStreamId stream_id() const {
614 return ntohl(frame_->data_.stream_id_) & kStreamIdMask; 614 return base::NetToHost32(frame_->data_.stream_id_) & kStreamIdMask;
615 } 615 }
616 616
617 // Note that setting the stream id sets the control bit to false. 617 // Note that setting the stream id sets the control bit to false.
618 // As stream id should always be set, this means the control bit 618 // As stream id should always be set, this means the control bit
619 // should always be set correctly. 619 // should always be set correctly.
620 void set_stream_id(SpdyStreamId id) { 620 void set_stream_id(SpdyStreamId id) {
621 DCHECK_EQ(0u, (id & ~kStreamIdMask)); 621 DCHECK_EQ(0u, (id & ~kStreamIdMask));
622 frame_->data_.stream_id_ = htonl(id & kStreamIdMask); 622 frame_->data_.stream_id_ = base::HostToNet32(id & kStreamIdMask);
623 } 623 }
624 624
625 // Returns the size of the SpdyFrameBlock structure. 625 // Returns the size of the SpdyFrameBlock structure.
626 // Note: this is not the size of the SpdyDataFrame class. 626 // Note: this is not the size of the SpdyDataFrame class.
627 static size_t size() { return SpdyFrame::kHeaderSize; } 627 static size_t size() { return SpdyFrame::kHeaderSize; }
628 628
629 const char* payload() const { 629 const char* payload() const {
630 return reinterpret_cast<const char*>(frame_) + size(); 630 return reinterpret_cast<const char*>(frame_) + size();
631 } 631 }
632 632
633 private: 633 private:
634 DISALLOW_COPY_AND_ASSIGN(SpdyDataFrame); 634 DISALLOW_COPY_AND_ASSIGN(SpdyDataFrame);
635 }; 635 };
636 636
637 // A Control Frame. 637 // A Control Frame.
638 class SpdyControlFrame : public SpdyFrame { 638 class SpdyControlFrame : public SpdyFrame {
639 public: 639 public:
640 explicit SpdyControlFrame(size_t size) : SpdyFrame(size) {} 640 explicit SpdyControlFrame(size_t size) : SpdyFrame(size) {}
641 SpdyControlFrame(char* data, bool owns_buffer) 641 SpdyControlFrame(char* data, bool owns_buffer)
642 : SpdyFrame(data, owns_buffer) {} 642 : SpdyFrame(data, owns_buffer) {}
643 643
644 // Callers can use this method to check if the frame appears to be a valid 644 // Callers can use this method to check if the frame appears to be a valid
645 // frame. Does not guarantee that there are no errors. 645 // frame. Does not guarantee that there are no errors.
646 bool AppearsToBeAValidControlFrame() const { 646 bool AppearsToBeAValidControlFrame() const {
647 // Right now we only check if the frame has an out-of-bounds type. 647 // Right now we only check if the frame has an out-of-bounds type.
648 uint16 type = ntohs(block()->control_.type_); 648 uint16 type = base::NetToHost16(block()->control_.type_);
649 // NOOP is not a 'valid' control frame in SPDY/3 and beyond. 649 // NOOP is not a 'valid' control frame in SPDY/3 and beyond.
650 return type >= SYN_STREAM && 650 return type >= SYN_STREAM &&
651 type < NUM_CONTROL_FRAME_TYPES && 651 type < NUM_CONTROL_FRAME_TYPES &&
652 (version() == 2 || type != NOOP); 652 (version() == 2 || type != NOOP);
653 } 653 }
654 654
655 uint16 version() const { 655 uint16 version() const {
656 const int kVersionMask = 0x7fff; 656 const int kVersionMask = 0x7fff;
657 return ntohs(block()->control_.version_) & kVersionMask; 657 return base::NetToHost16(block()->control_.version_) & kVersionMask;
658 } 658 }
659 659
660 void set_version(uint16 version) { 660 void set_version(uint16 version) {
661 const uint16 kControlBit = 0x80; 661 const uint16 kControlBit = 0x80;
662 DCHECK_EQ(0, version & kControlBit); 662 DCHECK_EQ(0, version & kControlBit);
663 mutable_block()->control_.version_ = kControlBit | htons(version); 663 mutable_block()->control_.version_ =
664 kControlBit | base::HostToNet16(version);
664 } 665 }
665 666
666 SpdyControlType type() const { 667 SpdyControlType type() const {
667 uint16 type = ntohs(block()->control_.type_); 668 uint16 type = base::NetToHost16(block()->control_.type_);
668 LOG_IF(DFATAL, type < SYN_STREAM || type >= NUM_CONTROL_FRAME_TYPES) 669 LOG_IF(DFATAL, type < SYN_STREAM || type >= NUM_CONTROL_FRAME_TYPES)
669 << "Invalid control frame type " << type; 670 << "Invalid control frame type " << type;
670 return static_cast<SpdyControlType>(type); 671 return static_cast<SpdyControlType>(type);
671 } 672 }
672 673
673 void set_type(SpdyControlType type) { 674 void set_type(SpdyControlType type) {
674 DCHECK(type >= SYN_STREAM && type < NUM_CONTROL_FRAME_TYPES); 675 DCHECK(type >= SYN_STREAM && type < NUM_CONTROL_FRAME_TYPES);
675 mutable_block()->control_.type_ = htons(type); 676 mutable_block()->control_.type_ = base::HostToNet16(type);
676 } 677 }
677 678
678 // Returns true if this control frame is of a type that has a header block, 679 // Returns true if this control frame is of a type that has a header block,
679 // otherwise it returns false. 680 // otherwise it returns false.
680 bool has_header_block() const { 681 bool has_header_block() const {
681 return type() == SYN_STREAM || type() == SYN_REPLY || type() == HEADERS; 682 return type() == SYN_STREAM || type() == SYN_REPLY || type() == HEADERS;
682 } 683 }
683 684
684 private: 685 private:
685 const struct SpdyFrameBlock* block() const { 686 const struct SpdyFrameBlock* block() const {
686 return frame_; 687 return frame_;
687 } 688 }
688 struct SpdyFrameBlock* mutable_block() { 689 struct SpdyFrameBlock* mutable_block() {
689 return frame_; 690 return frame_;
690 } 691 }
691 DISALLOW_COPY_AND_ASSIGN(SpdyControlFrame); 692 DISALLOW_COPY_AND_ASSIGN(SpdyControlFrame);
692 }; 693 };
693 694
694 // A SYN_STREAM frame. 695 // A SYN_STREAM frame.
695 class SpdySynStreamControlFrame : public SpdyControlFrame { 696 class SpdySynStreamControlFrame : public SpdyControlFrame {
696 public: 697 public:
697 SpdySynStreamControlFrame() : SpdyControlFrame(size()) {} 698 SpdySynStreamControlFrame() : SpdyControlFrame(size()) {}
698 SpdySynStreamControlFrame(char* data, bool owns_buffer) 699 SpdySynStreamControlFrame(char* data, bool owns_buffer)
699 : SpdyControlFrame(data, owns_buffer) {} 700 : SpdyControlFrame(data, owns_buffer) {}
700 701
701 SpdyStreamId stream_id() const { 702 SpdyStreamId stream_id() const {
702 return ntohl(block()->stream_id_) & kStreamIdMask; 703 return base::NetToHost32(block()->stream_id_) & kStreamIdMask;
703 } 704 }
704 705
705 void set_stream_id(SpdyStreamId id) { 706 void set_stream_id(SpdyStreamId id) {
706 mutable_block()->stream_id_ = htonl(id & kStreamIdMask); 707 mutable_block()->stream_id_ = base::HostToNet32(id & kStreamIdMask);
707 } 708 }
708 709
709 SpdyStreamId associated_stream_id() const { 710 SpdyStreamId associated_stream_id() const {
710 return ntohl(block()->associated_stream_id_) & kStreamIdMask; 711 return base::NetToHost32(block()->associated_stream_id_) & kStreamIdMask;
711 } 712 }
712 713
713 void set_associated_stream_id(SpdyStreamId id) { 714 void set_associated_stream_id(SpdyStreamId id) {
714 mutable_block()->associated_stream_id_ = htonl(id & kStreamIdMask); 715 mutable_block()->associated_stream_id_ =
716 base::HostToNet32(id & kStreamIdMask);
715 } 717 }
716 718
717 SpdyPriority priority() const { 719 SpdyPriority priority() const {
718 if (version() < 3) { 720 if (version() < 3) {
719 return (block()->priority_ & kSpdy2PriorityMask) >> 6; 721 return (block()->priority_ & kSpdy2PriorityMask) >> 6;
720 } else { 722 } else {
721 return (block()->priority_ & kSpdy3PriorityMask) >> 5; 723 return (block()->priority_ & kSpdy3PriorityMask) >> 5;
722 } 724 }
723 } 725 }
724 726
(...skipping 21 matching lines...) Expand all
746 }; 748 };
747 749
748 // A SYN_REPLY frame. 750 // A SYN_REPLY frame.
749 class SpdySynReplyControlFrame : public SpdyControlFrame { 751 class SpdySynReplyControlFrame : public SpdyControlFrame {
750 public: 752 public:
751 SpdySynReplyControlFrame() : SpdyControlFrame(size()) {} 753 SpdySynReplyControlFrame() : SpdyControlFrame(size()) {}
752 SpdySynReplyControlFrame(char* data, bool owns_buffer) 754 SpdySynReplyControlFrame(char* data, bool owns_buffer)
753 : SpdyControlFrame(data, owns_buffer) {} 755 : SpdyControlFrame(data, owns_buffer) {}
754 756
755 SpdyStreamId stream_id() const { 757 SpdyStreamId stream_id() const {
756 return ntohl(block()->stream_id_) & kStreamIdMask; 758 return base::NetToHost32(block()->stream_id_) & kStreamIdMask;
757 } 759 }
758 760
759 void set_stream_id(SpdyStreamId id) { 761 void set_stream_id(SpdyStreamId id) {
760 mutable_block()->stream_id_ = htonl(id & kStreamIdMask); 762 mutable_block()->stream_id_ = base::HostToNet32(id & kStreamIdMask);
761 } 763 }
762 764
763 int header_block_len() const { 765 int header_block_len() const {
764 size_t header_block_len = length() - (size() - SpdyFrame::kHeaderSize); 766 size_t header_block_len = length() - (size() - SpdyFrame::kHeaderSize);
765 // SPDY 2 had 2 bytes of unused space preceeding the header block. 767 // SPDY 2 had 2 bytes of unused space preceeding the header block.
766 if (version() < 3) { 768 if (version() < 3) {
767 header_block_len -= 2; 769 header_block_len -= 2;
768 } 770 }
769 return header_block_len; 771 return header_block_len;
770 } 772 }
(...skipping 22 matching lines...) Expand all
793 }; 795 };
794 796
795 // A RST_STREAM frame. 797 // A RST_STREAM frame.
796 class SpdyRstStreamControlFrame : public SpdyControlFrame { 798 class SpdyRstStreamControlFrame : public SpdyControlFrame {
797 public: 799 public:
798 SpdyRstStreamControlFrame() : SpdyControlFrame(size()) {} 800 SpdyRstStreamControlFrame() : SpdyControlFrame(size()) {}
799 SpdyRstStreamControlFrame(char* data, bool owns_buffer) 801 SpdyRstStreamControlFrame(char* data, bool owns_buffer)
800 : SpdyControlFrame(data, owns_buffer) {} 802 : SpdyControlFrame(data, owns_buffer) {}
801 803
802 SpdyStreamId stream_id() const { 804 SpdyStreamId stream_id() const {
803 return ntohl(block()->stream_id_) & kStreamIdMask; 805 return base::NetToHost32(block()->stream_id_) & kStreamIdMask;
804 } 806 }
805 807
806 void set_stream_id(SpdyStreamId id) { 808 void set_stream_id(SpdyStreamId id) {
807 mutable_block()->stream_id_ = htonl(id & kStreamIdMask); 809 mutable_block()->stream_id_ = base::HostToNet32(id & kStreamIdMask);
808 } 810 }
809 811
810 SpdyStatusCodes status() const { 812 SpdyStatusCodes status() const {
811 SpdyStatusCodes status = 813 SpdyStatusCodes status =
812 static_cast<SpdyStatusCodes>(ntohl(block()->status_)); 814 static_cast<SpdyStatusCodes>(base::NetToHost32(block()->status_));
813 if (status < INVALID || status >= NUM_STATUS_CODES) { 815 if (status < INVALID || status >= NUM_STATUS_CODES) {
814 status = INVALID; 816 status = INVALID;
815 } 817 }
816 return status; 818 return status;
817 } 819 }
818 void set_status(SpdyStatusCodes status) { 820 void set_status(SpdyStatusCodes status) {
819 mutable_block()->status_ = htonl(static_cast<uint32>(status)); 821 mutable_block()->status_ = base::HostToNet32(static_cast<uint32>(status));
820 } 822 }
821 823
822 // Returns the size of the SpdyRstStreamControlFrameBlock structure. 824 // Returns the size of the SpdyRstStreamControlFrameBlock structure.
823 // Note: this is not the size of the SpdyRstStreamControlFrame class. 825 // Note: this is not the size of the SpdyRstStreamControlFrame class.
824 static size_t size() { return sizeof(SpdyRstStreamControlFrameBlock); } 826 static size_t size() { return sizeof(SpdyRstStreamControlFrameBlock); }
825 827
826 private: 828 private:
827 const struct SpdyRstStreamControlFrameBlock* block() const { 829 const struct SpdyRstStreamControlFrameBlock* block() const {
828 return static_cast<SpdyRstStreamControlFrameBlock*>(frame_); 830 return static_cast<SpdyRstStreamControlFrameBlock*>(frame_);
829 } 831 }
830 struct SpdyRstStreamControlFrameBlock* mutable_block() { 832 struct SpdyRstStreamControlFrameBlock* mutable_block() {
831 return static_cast<SpdyRstStreamControlFrameBlock*>(frame_); 833 return static_cast<SpdyRstStreamControlFrameBlock*>(frame_);
832 } 834 }
833 DISALLOW_COPY_AND_ASSIGN(SpdyRstStreamControlFrame); 835 DISALLOW_COPY_AND_ASSIGN(SpdyRstStreamControlFrame);
834 }; 836 };
835 837
836 class SpdySettingsControlFrame : public SpdyControlFrame { 838 class SpdySettingsControlFrame : public SpdyControlFrame {
837 public: 839 public:
838 SpdySettingsControlFrame() : SpdyControlFrame(size()) {} 840 SpdySettingsControlFrame() : SpdyControlFrame(size()) {}
839 SpdySettingsControlFrame(char* data, bool owns_buffer) 841 SpdySettingsControlFrame(char* data, bool owns_buffer)
840 : SpdyControlFrame(data, owns_buffer) {} 842 : SpdyControlFrame(data, owns_buffer) {}
841 843
842 uint32 num_entries() const { 844 uint32 num_entries() const {
843 return ntohl(block()->num_entries_); 845 return base::NetToHost32(block()->num_entries_);
844 } 846 }
845 847
846 void set_num_entries(int val) { 848 void set_num_entries(int val) {
847 mutable_block()->num_entries_ = htonl(val); 849 mutable_block()->num_entries_ = base::HostToNet32(val);
848 } 850 }
849 851
850 int header_block_len() const { 852 int header_block_len() const {
851 return length() - (size() - SpdyFrame::kHeaderSize); 853 return length() - (size() - SpdyFrame::kHeaderSize);
852 } 854 }
853 855
854 const char* header_block() const { 856 const char* header_block() const {
855 return reinterpret_cast<const char*>(block()) + size(); 857 return reinterpret_cast<const char*>(block()) + size();
856 } 858 }
857 859
(...skipping 11 matching lines...) Expand all
869 DISALLOW_COPY_AND_ASSIGN(SpdySettingsControlFrame); 871 DISALLOW_COPY_AND_ASSIGN(SpdySettingsControlFrame);
870 }; 872 };
871 873
872 class SpdyPingControlFrame : public SpdyControlFrame { 874 class SpdyPingControlFrame : public SpdyControlFrame {
873 public: 875 public:
874 SpdyPingControlFrame() : SpdyControlFrame(size()) {} 876 SpdyPingControlFrame() : SpdyControlFrame(size()) {}
875 SpdyPingControlFrame(char* data, bool owns_buffer) 877 SpdyPingControlFrame(char* data, bool owns_buffer)
876 : SpdyControlFrame(data, owns_buffer) {} 878 : SpdyControlFrame(data, owns_buffer) {}
877 879
878 uint32 unique_id() const { 880 uint32 unique_id() const {
879 return ntohl(block()->unique_id_); 881 return base::NetToHost32(block()->unique_id_);
880 } 882 }
881 883
882 void set_unique_id(uint32 unique_id) { 884 void set_unique_id(uint32 unique_id) {
883 mutable_block()->unique_id_ = htonl(unique_id); 885 mutable_block()->unique_id_ = base::HostToNet32(unique_id);
884 } 886 }
885 887
886 static size_t size() { return sizeof(SpdyPingControlFrameBlock); } 888 static size_t size() { return sizeof(SpdyPingControlFrameBlock); }
887 889
888 private: 890 private:
889 const struct SpdyPingControlFrameBlock* block() const { 891 const struct SpdyPingControlFrameBlock* block() const {
890 return static_cast<SpdyPingControlFrameBlock*>(frame_); 892 return static_cast<SpdyPingControlFrameBlock*>(frame_);
891 } 893 }
892 struct SpdyPingControlFrameBlock* mutable_block() { 894 struct SpdyPingControlFrameBlock* mutable_block() {
893 return static_cast<SpdyPingControlFrameBlock*>(frame_); 895 return static_cast<SpdyPingControlFrameBlock*>(frame_);
(...skipping 19 matching lines...) Expand all
913 DISALLOW_COPY_AND_ASSIGN(SpdyCredentialControlFrame); 915 DISALLOW_COPY_AND_ASSIGN(SpdyCredentialControlFrame);
914 }; 916 };
915 917
916 class SpdyGoAwayControlFrame : public SpdyControlFrame { 918 class SpdyGoAwayControlFrame : public SpdyControlFrame {
917 public: 919 public:
918 SpdyGoAwayControlFrame() : SpdyControlFrame(size()) {} 920 SpdyGoAwayControlFrame() : SpdyControlFrame(size()) {}
919 SpdyGoAwayControlFrame(char* data, bool owns_buffer) 921 SpdyGoAwayControlFrame(char* data, bool owns_buffer)
920 : SpdyControlFrame(data, owns_buffer) {} 922 : SpdyControlFrame(data, owns_buffer) {}
921 923
922 SpdyStreamId last_accepted_stream_id() const { 924 SpdyStreamId last_accepted_stream_id() const {
923 return ntohl(block()->last_accepted_stream_id_) & kStreamIdMask; 925 return base::NetToHost32(block()->last_accepted_stream_id_) & kStreamIdMask;
924 } 926 }
925 927
926 void set_last_accepted_stream_id(SpdyStreamId id) { 928 void set_last_accepted_stream_id(SpdyStreamId id) {
927 mutable_block()->last_accepted_stream_id_ = htonl(id & kStreamIdMask); 929 mutable_block()->last_accepted_stream_id_ =
930 base::HostToNet32(id & kStreamIdMask);
928 } 931 }
929 932
930 static size_t size() { return sizeof(SpdyGoAwayControlFrameBlock); } 933 static size_t size() { return sizeof(SpdyGoAwayControlFrameBlock); }
931 934
932 private: 935 private:
933 const struct SpdyGoAwayControlFrameBlock* block() const { 936 const struct SpdyGoAwayControlFrameBlock* block() const {
934 return static_cast<SpdyGoAwayControlFrameBlock*>(frame_); 937 return static_cast<SpdyGoAwayControlFrameBlock*>(frame_);
935 } 938 }
936 struct SpdyGoAwayControlFrameBlock* mutable_block() { 939 struct SpdyGoAwayControlFrameBlock* mutable_block() {
937 return static_cast<SpdyGoAwayControlFrameBlock*>(frame_); 940 return static_cast<SpdyGoAwayControlFrameBlock*>(frame_);
938 } 941 }
939 DISALLOW_COPY_AND_ASSIGN(SpdyGoAwayControlFrame); 942 DISALLOW_COPY_AND_ASSIGN(SpdyGoAwayControlFrame);
940 }; 943 };
941 944
942 // A HEADERS frame. 945 // A HEADERS frame.
943 class SpdyHeadersControlFrame : public SpdyControlFrame { 946 class SpdyHeadersControlFrame : public SpdyControlFrame {
944 public: 947 public:
945 SpdyHeadersControlFrame() : SpdyControlFrame(size()) {} 948 SpdyHeadersControlFrame() : SpdyControlFrame(size()) {}
946 SpdyHeadersControlFrame(char* data, bool owns_buffer) 949 SpdyHeadersControlFrame(char* data, bool owns_buffer)
947 : SpdyControlFrame(data, owns_buffer) {} 950 : SpdyControlFrame(data, owns_buffer) {}
948 951
949 SpdyStreamId stream_id() const { 952 SpdyStreamId stream_id() const {
950 return ntohl(block()->stream_id_) & kStreamIdMask; 953 return base::NetToHost32(block()->stream_id_) & kStreamIdMask;
951 } 954 }
952 955
953 void set_stream_id(SpdyStreamId id) { 956 void set_stream_id(SpdyStreamId id) {
954 mutable_block()->stream_id_ = htonl(id & kStreamIdMask); 957 mutable_block()->stream_id_ = base::HostToNet32(id & kStreamIdMask);
955 } 958 }
956 959
957 // The number of bytes in the header block beyond the frame header length. 960 // The number of bytes in the header block beyond the frame header length.
958 int header_block_len() const { 961 int header_block_len() const {
959 size_t header_block_len = length() - (size() - SpdyFrame::kHeaderSize); 962 size_t header_block_len = length() - (size() - SpdyFrame::kHeaderSize);
960 // SPDY 2 had 2 bytes of unused space preceeding the header block. 963 // SPDY 2 had 2 bytes of unused space preceeding the header block.
961 if (version() < 3) { 964 if (version() < 3) {
962 header_block_len -= 2; 965 header_block_len -= 2;
963 } 966 }
964 return header_block_len; 967 return header_block_len;
(...skipping 23 matching lines...) Expand all
988 }; 991 };
989 992
990 // A WINDOW_UPDATE frame. 993 // A WINDOW_UPDATE frame.
991 class SpdyWindowUpdateControlFrame : public SpdyControlFrame { 994 class SpdyWindowUpdateControlFrame : public SpdyControlFrame {
992 public: 995 public:
993 SpdyWindowUpdateControlFrame() : SpdyControlFrame(size()) {} 996 SpdyWindowUpdateControlFrame() : SpdyControlFrame(size()) {}
994 SpdyWindowUpdateControlFrame(char* data, bool owns_buffer) 997 SpdyWindowUpdateControlFrame(char* data, bool owns_buffer)
995 : SpdyControlFrame(data, owns_buffer) {} 998 : SpdyControlFrame(data, owns_buffer) {}
996 999
997 SpdyStreamId stream_id() const { 1000 SpdyStreamId stream_id() const {
998 return ntohl(block()->stream_id_) & kStreamIdMask; 1001 return base::NetToHost32(block()->stream_id_) & kStreamIdMask;
999 } 1002 }
1000 1003
1001 void set_stream_id(SpdyStreamId id) { 1004 void set_stream_id(SpdyStreamId id) {
1002 mutable_block()->stream_id_ = htonl(id & kStreamIdMask); 1005 mutable_block()->stream_id_ = base::HostToNet32(id & kStreamIdMask);
1003 } 1006 }
1004 1007
1005 uint32 delta_window_size() const { 1008 uint32 delta_window_size() const {
1006 return ntohl(block()->delta_window_size_); 1009 return base::NetToHost32(block()->delta_window_size_);
1007 } 1010 }
1008 1011
1009 void set_delta_window_size(uint32 delta_window_size) { 1012 void set_delta_window_size(uint32 delta_window_size) {
1010 mutable_block()->delta_window_size_ = htonl(delta_window_size); 1013 mutable_block()->delta_window_size_ = base::HostToNet32(delta_window_size);
1011 } 1014 }
1012 1015
1013 // Returns the size of the SpdyWindowUpdateControlFrameBlock structure. 1016 // Returns the size of the SpdyWindowUpdateControlFrameBlock structure.
1014 // Note: this is not the size of the SpdyWindowUpdateControlFrame class. 1017 // Note: this is not the size of the SpdyWindowUpdateControlFrame class.
1015 static size_t size() { return sizeof(SpdyWindowUpdateControlFrameBlock); } 1018 static size_t size() { return sizeof(SpdyWindowUpdateControlFrameBlock); }
1016 1019
1017 private: 1020 private:
1018 const struct SpdyWindowUpdateControlFrameBlock* block() const { 1021 const struct SpdyWindowUpdateControlFrameBlock* block() const {
1019 return static_cast<SpdyWindowUpdateControlFrameBlock*>(frame_); 1022 return static_cast<SpdyWindowUpdateControlFrameBlock*>(frame_);
1020 } 1023 }
1021 struct SpdyWindowUpdateControlFrameBlock* mutable_block() { 1024 struct SpdyWindowUpdateControlFrameBlock* mutable_block() {
1022 return static_cast<SpdyWindowUpdateControlFrameBlock*>(frame_); 1025 return static_cast<SpdyWindowUpdateControlFrameBlock*>(frame_);
1023 } 1026 }
1024 1027
1025 DISALLOW_COPY_AND_ASSIGN(SpdyWindowUpdateControlFrame); 1028 DISALLOW_COPY_AND_ASSIGN(SpdyWindowUpdateControlFrame);
1026 }; 1029 };
1027 1030
1028 } // namespace spdy 1031 } // namespace spdy
1029 1032
1030 #endif // NET_SPDY_SPDY_PROTOCOL_H_ 1033 #endif // NET_SPDY_SPDY_PROTOCOL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698