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

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

Issue 1535363003: Switch to standard integer types in net/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: stddef Created 5 years 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
« no previous file with comments | « net/spdy/spdy_priority_tree_test.cc ('k') | net/spdy/spdy_protocol.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 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
11 #ifndef NET_SPDY_SPDY_PROTOCOL_H_ 11 #ifndef NET_SPDY_SPDY_PROTOCOL_H_
12 #define NET_SPDY_SPDY_PROTOCOL_H_ 12 #define NET_SPDY_SPDY_PROTOCOL_H_
13 13
14 #include <stddef.h>
15 #include <stdint.h>
16
14 #include <limits> 17 #include <limits>
15 #include <map> 18 #include <map>
16 #include <string> 19 #include <string>
17 20
18 #include "base/basictypes.h"
19 #include "base/compiler_specific.h" 21 #include "base/compiler_specific.h"
20 #include "base/logging.h" 22 #include "base/logging.h"
23 #include "base/macros.h"
21 #include "base/memory/scoped_ptr.h" 24 #include "base/memory/scoped_ptr.h"
22 #include "base/strings/string_piece.h" 25 #include "base/strings/string_piece.h"
23 #include "base/sys_byteorder.h" 26 #include "base/sys_byteorder.h"
24 #include "net/base/net_export.h" 27 #include "net/base/net_export.h"
25 #include "net/spdy/spdy_alt_svc_wire_format.h" 28 #include "net/spdy/spdy_alt_svc_wire_format.h"
26 #include "net/spdy/spdy_bitmasks.h" 29 #include "net/spdy/spdy_bitmasks.h"
27 #include "net/spdy/spdy_header_block.h" 30 #include "net/spdy/spdy_header_block.h"
28 31
29 namespace net { 32 namespace net {
30 33
31 // The major versions of SPDY. Major version differences indicate 34 // The major versions of SPDY. Major version differences indicate
32 // framer-layer incompatibility, as opposed to minor version numbers 35 // framer-layer incompatibility, as opposed to minor version numbers
33 // which indicate application-layer incompatibility. Do not rely on 36 // which indicate application-layer incompatibility. Do not rely on
34 // the mapping from enum value SPDYn to the integer n. 37 // the mapping from enum value SPDYn to the integer n.
35 enum SpdyMajorVersion { 38 enum SpdyMajorVersion {
36 SPDY2 = 2, 39 SPDY2 = 2,
37 SPDY_MIN_VERSION = SPDY2, 40 SPDY_MIN_VERSION = SPDY2,
38 SPDY3 = 3, 41 SPDY3 = 3,
39 HTTP2 = 4, 42 HTTP2 = 4,
40 SPDY_MAX_VERSION = HTTP2 43 SPDY_MAX_VERSION = HTTP2
41 }; 44 };
42 45
43 // A SPDY stream id is a 31 bit entity. 46 // A SPDY stream id is a 31 bit entity.
44 typedef uint32 SpdyStreamId; 47 typedef uint32_t SpdyStreamId;
45 48
46 // Specifies the stream ID used to denote the current session (for 49 // Specifies the stream ID used to denote the current session (for
47 // flow control). 50 // flow control).
48 const SpdyStreamId kSessionFlowControlStreamId = 0; 51 const SpdyStreamId kSessionFlowControlStreamId = 0;
49 52
50 // The maxmium possible control frame size allowed by the spec. 53 // The maxmium possible control frame size allowed by the spec.
51 const int32 kSpdyMaxControlFrameSize = (1 << 24) - 1; 54 const int32_t kSpdyMaxControlFrameSize = (1 << 24) - 1;
52 55
53 // The maximum control frame size we accept. 56 // The maximum control frame size we accept.
54 const int32 kControlFrameSizeLimit = 1 << 14; 57 const int32_t kControlFrameSizeLimit = 1 << 14;
55 58
56 // Maximum window size for a Spdy stream or session. 59 // Maximum window size for a Spdy stream or session.
57 const int32 kSpdyMaximumWindowSize = 0x7FFFFFFF; // Max signed 32bit int 60 const int32_t kSpdyMaximumWindowSize = 0x7FFFFFFF; // Max signed 32bit int
58 61
59 // Maximum padding size in octets for one DATA or HEADERS or PUSH_PROMISE frame. 62 // Maximum padding size in octets for one DATA or HEADERS or PUSH_PROMISE frame.
60 const int32 kPaddingSizePerFrame = 256; 63 const int32_t kPaddingSizePerFrame = 256;
61 64
62 // SPDY 2 dictionary. 65 // SPDY 2 dictionary.
63 // This is just a hacked dictionary to use for shrinking HTTP-like headers. 66 // This is just a hacked dictionary to use for shrinking HTTP-like headers.
64 const char kV2Dictionary[] = 67 const char kV2Dictionary[] =
65 "optionsgetheadpostputdeletetraceacceptaccept-charsetaccept-encodingaccept-" 68 "optionsgetheadpostputdeletetraceacceptaccept-charsetaccept-encodingaccept-"
66 "languageauthorizationexpectfromhostif-modified-sinceif-matchif-none-matchi" 69 "languageauthorizationexpectfromhostif-modified-sinceif-matchif-none-matchi"
67 "f-rangeif-unmodifiedsincemax-forwardsproxy-authorizationrangerefererteuser" 70 "f-rangeif-unmodifiedsincemax-forwardsproxy-authorizationrangerefererteuser"
68 "-agent10010120020120220320420520630030130230330430530630740040140240340440" 71 "-agent10010120020120220320420520630030130230330430530630740040140240340440"
69 "5406407408409410411412413414415416417500501502503504505accept-rangesageeta" 72 "5406407408409410411412413414415416417500501502503504505accept-rangesageeta"
70 "glocationproxy-authenticatepublicretry-afterservervarywarningwww-authentic" 73 "glocationproxy-authenticatepublicretry-afterservervarywarningwww-authentic"
(...skipping 339 matching lines...) Expand 10 before | Expand all | Expand 10 after
410 GOAWAY_COMPRESSION_ERROR = 9, 413 GOAWAY_COMPRESSION_ERROR = 9,
411 GOAWAY_CONNECT_ERROR = 10, 414 GOAWAY_CONNECT_ERROR = 10,
412 GOAWAY_ENHANCE_YOUR_CALM = 11, 415 GOAWAY_ENHANCE_YOUR_CALM = 11,
413 GOAWAY_INADEQUATE_SECURITY = 12, 416 GOAWAY_INADEQUATE_SECURITY = 12,
414 GOAWAY_HTTP_1_1_REQUIRED = 13 417 GOAWAY_HTTP_1_1_REQUIRED = 13
415 }; 418 };
416 419
417 // A SPDY priority is a number between 0 and 7 (inclusive). 420 // A SPDY priority is a number between 0 and 7 (inclusive).
418 // SPDY priority range is version-dependent. For SPDY 2 and below, priority is a 421 // SPDY priority range is version-dependent. For SPDY 2 and below, priority is a
419 // number between 0 and 3. 422 // number between 0 and 3.
420 typedef uint8 SpdyPriority; 423 typedef uint8_t SpdyPriority;
421 424
422 // Lowest and Highest here refer to SPDY priorities as described in 425 // Lowest and Highest here refer to SPDY priorities as described in
423 426
424 // https://www.chromium.org/spdy/spdy-protocol/spdy-protocol-draft3-1#TOC-2.3.3- Stream-priority 427 // https://www.chromium.org/spdy/spdy-protocol/spdy-protocol-draft3-1#TOC-2.3.3- Stream-priority
425 const SpdyPriority kV3HighestPriority = 0; 428 const SpdyPriority kV3HighestPriority = 0;
426 const SpdyPriority kV3LowestPriority = 7; 429 const SpdyPriority kV3LowestPriority = 7;
427 430
428 typedef uint64 SpdyPingId; 431 typedef uint64_t SpdyPingId;
429 432
430 typedef std::string SpdyProtocolId; 433 typedef std::string SpdyProtocolId;
431 434
432 enum class SpdyHeaderValidatorType { 435 enum class SpdyHeaderValidatorType {
433 REQUEST, 436 REQUEST,
434 RESPONSE_HEADER, 437 RESPONSE_HEADER,
435 RESPONSE_TRAILER 438 RESPONSE_TRAILER
436 }; 439 };
437 440
438 // TODO(hkhalil): Add direct testing for this? It won't increase coverage any, 441 // TODO(hkhalil): Add direct testing for this? It won't increase coverage any,
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
527 static size_t GetFrameMaximumSize(SpdyMajorVersion version); 530 static size_t GetFrameMaximumSize(SpdyMajorVersion version);
528 531
529 // Returns the size of a header block size field. Valid only for SPDY 532 // Returns the size of a header block size field. Valid only for SPDY
530 // versions <= 3. 533 // versions <= 3.
531 static size_t GetSizeOfSizeField(SpdyMajorVersion version); 534 static size_t GetSizeOfSizeField(SpdyMajorVersion version);
532 535
533 // Returns the size (in bytes) of a wire setting ID and value. 536 // Returns the size (in bytes) of a wire setting ID and value.
534 static size_t GetSettingSize(SpdyMajorVersion version); 537 static size_t GetSettingSize(SpdyMajorVersion version);
535 538
536 // Initial window size for a stream in bytes. 539 // Initial window size for a stream in bytes.
537 static int32 GetInitialStreamWindowSize(SpdyMajorVersion version); 540 static int32_t GetInitialStreamWindowSize(SpdyMajorVersion version);
538 541
539 // Initial window size for a session in bytes. 542 // Initial window size for a session in bytes.
540 static int32 GetInitialSessionWindowSize(SpdyMajorVersion version); 543 static int32_t GetInitialSessionWindowSize(SpdyMajorVersion version);
541 544
542 static SpdyMajorVersion ParseMajorVersion(int version_number); 545 static SpdyMajorVersion ParseMajorVersion(int version_number);
543 546
544 static int SerializeMajorVersion(SpdyMajorVersion version); 547 static int SerializeMajorVersion(SpdyMajorVersion version);
545 548
546 static std::string GetVersionString(SpdyMajorVersion version); 549 static std::string GetVersionString(SpdyMajorVersion version);
547 }; 550 };
548 551
549 class SpdyFrame; 552 class SpdyFrame;
550 typedef SpdyFrame SpdySerializedFrame; 553 typedef SpdyFrame SpdySerializedFrame;
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
749 752
750 class NET_EXPORT_PRIVATE SpdySettingsIR : public SpdyFrameIR { 753 class NET_EXPORT_PRIVATE SpdySettingsIR : public SpdyFrameIR {
751 public: 754 public:
752 // Associates flags with a value. 755 // Associates flags with a value.
753 struct Value { 756 struct Value {
754 Value() : persist_value(false), 757 Value() : persist_value(false),
755 persisted(false), 758 persisted(false),
756 value(0) {} 759 value(0) {}
757 bool persist_value; 760 bool persist_value;
758 bool persisted; 761 bool persisted;
759 int32 value; 762 int32_t value;
760 }; 763 };
761 typedef std::map<SpdySettingsIds, Value> ValueMap; 764 typedef std::map<SpdySettingsIds, Value> ValueMap;
762 765
763 SpdySettingsIR(); 766 SpdySettingsIR();
764 767
765 ~SpdySettingsIR() override; 768 ~SpdySettingsIR() override;
766 769
767 // Overwrites as appropriate. 770 // Overwrites as appropriate.
768 const ValueMap& values() const { return values_; } 771 const ValueMap& values() const { return values_; }
769 void AddSetting(SpdySettingsIds id, 772 void AddSetting(SpdySettingsIds id,
770 bool persist_value, 773 bool persist_value,
771 bool persisted, 774 bool persisted,
772 int32 value) { 775 int32_t value) {
773 values_[id].persist_value = persist_value; 776 values_[id].persist_value = persist_value;
774 values_[id].persisted = persisted; 777 values_[id].persisted = persisted;
775 values_[id].value = value; 778 values_[id].value = value;
776 } 779 }
777 780
778 bool clear_settings() const { return clear_settings_; } 781 bool clear_settings() const { return clear_settings_; }
779 bool is_ack() const { return is_ack_; } 782 bool is_ack() const { return is_ack_; }
780 void set_is_ack(bool is_ack) { 783 void set_is_ack(bool is_ack) {
781 is_ack_ = is_ack; 784 is_ack_ = is_ack;
782 } 785 }
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
841 844
842 class NET_EXPORT_PRIVATE SpdyHeadersIR : public SpdyFrameWithHeaderBlockIR { 845 class NET_EXPORT_PRIVATE SpdyHeadersIR : public SpdyFrameWithHeaderBlockIR {
843 public: 846 public:
844 explicit SpdyHeadersIR(SpdyStreamId stream_id) 847 explicit SpdyHeadersIR(SpdyStreamId stream_id)
845 : SpdyFrameWithHeaderBlockIR(stream_id) {} 848 : SpdyFrameWithHeaderBlockIR(stream_id) {}
846 849
847 void Visit(SpdyFrameVisitor* visitor) const override; 850 void Visit(SpdyFrameVisitor* visitor) const override;
848 851
849 bool has_priority() const { return has_priority_; } 852 bool has_priority() const { return has_priority_; }
850 void set_has_priority(bool has_priority) { has_priority_ = has_priority; } 853 void set_has_priority(bool has_priority) { has_priority_ = has_priority; }
851 uint32 priority() const { return priority_; } 854 uint32_t priority() const { return priority_; }
852 void set_priority(SpdyPriority priority) { priority_ = priority; } 855 void set_priority(SpdyPriority priority) { priority_ = priority; }
853 SpdyStreamId parent_stream_id() const { return parent_stream_id_; } 856 SpdyStreamId parent_stream_id() const { return parent_stream_id_; }
854 void set_parent_stream_id(SpdyStreamId id) { parent_stream_id_ = id; } 857 void set_parent_stream_id(SpdyStreamId id) { parent_stream_id_ = id; }
855 bool exclusive() const { return exclusive_; } 858 bool exclusive() const { return exclusive_; }
856 void set_exclusive(bool exclusive) { exclusive_ = exclusive; } 859 void set_exclusive(bool exclusive) { exclusive_ = exclusive; }
857 bool padded() const { return padded_; } 860 bool padded() const { return padded_; }
858 int padding_payload_len() const { return padding_payload_len_; } 861 int padding_payload_len() const { return padding_payload_len_; }
859 void set_padding_len(int padding_len) { 862 void set_padding_len(int padding_len) {
860 DCHECK_GT(padding_len, 0); 863 DCHECK_GT(padding_len, 0);
861 DCHECK_LE(padding_len, kPaddingSizePerFrame); 864 DCHECK_LE(padding_len, kPaddingSizePerFrame);
862 padded_ = true; 865 padded_ = true;
863 // The pad field takes one octet on the wire. 866 // The pad field takes one octet on the wire.
864 padding_payload_len_ = padding_len - 1; 867 padding_payload_len_ = padding_len - 1;
865 } 868 }
866 869
867 private: 870 private:
868 bool has_priority_ = false; 871 bool has_priority_ = false;
869 // 31-bit priority. 872 // 31-bit priority.
870 uint32 priority_ = 0; 873 uint32_t priority_ = 0;
871 SpdyStreamId parent_stream_id_ = 0; 874 SpdyStreamId parent_stream_id_ = 0;
872 bool exclusive_ = false; 875 bool exclusive_ = false;
873 bool padded_ = false; 876 bool padded_ = false;
874 int padding_payload_len_ = 0; 877 int padding_payload_len_ = 0;
875 878
876 DISALLOW_COPY_AND_ASSIGN(SpdyHeadersIR); 879 DISALLOW_COPY_AND_ASSIGN(SpdyHeadersIR);
877 }; 880 };
878 881
879 class NET_EXPORT_PRIVATE SpdyWindowUpdateIR : public SpdyFrameWithStreamIdIR { 882 class NET_EXPORT_PRIVATE SpdyWindowUpdateIR : public SpdyFrameWithStreamIdIR {
880 public: 883 public:
881 SpdyWindowUpdateIR(SpdyStreamId stream_id, int32 delta) 884 SpdyWindowUpdateIR(SpdyStreamId stream_id, int32_t delta)
882 : SpdyFrameWithStreamIdIR(stream_id) { 885 : SpdyFrameWithStreamIdIR(stream_id) {
883 set_delta(delta); 886 set_delta(delta);
884 } 887 }
885 int32 delta() const { return delta_; } 888 int32_t delta() const { return delta_; }
886 void set_delta(int32 delta) { 889 void set_delta(int32_t delta) {
887 DCHECK_LT(0, delta); 890 DCHECK_LT(0, delta);
888 DCHECK_LE(delta, kSpdyMaximumWindowSize); 891 DCHECK_LE(delta, kSpdyMaximumWindowSize);
889 delta_ = delta; 892 delta_ = delta;
890 } 893 }
891 894
892 void Visit(SpdyFrameVisitor* visitor) const override; 895 void Visit(SpdyFrameVisitor* visitor) const override;
893 896
894 private: 897 private:
895 int32 delta_; 898 int32_t delta_;
896 899
897 DISALLOW_COPY_AND_ASSIGN(SpdyWindowUpdateIR); 900 DISALLOW_COPY_AND_ASSIGN(SpdyWindowUpdateIR);
898 }; 901 };
899 902
900 class NET_EXPORT_PRIVATE SpdyBlockedIR 903 class NET_EXPORT_PRIVATE SpdyBlockedIR
901 : public NON_EXPORTED_BASE(SpdyFrameWithStreamIdIR) { 904 : public NON_EXPORTED_BASE(SpdyFrameWithStreamIdIR) {
902 public: 905 public:
903 explicit SpdyBlockedIR(SpdyStreamId stream_id) 906 explicit SpdyBlockedIR(SpdyStreamId stream_id)
904 : SpdyFrameWithStreamIdIR(stream_id) {} 907 : SpdyFrameWithStreamIdIR(stream_id) {}
905 908
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
982 985
983 class NET_EXPORT_PRIVATE SpdyPriorityIR : public SpdyFrameWithStreamIdIR { 986 class NET_EXPORT_PRIVATE SpdyPriorityIR : public SpdyFrameWithStreamIdIR {
984 public: 987 public:
985 explicit SpdyPriorityIR(SpdyStreamId stream_id) 988 explicit SpdyPriorityIR(SpdyStreamId stream_id)
986 : SpdyFrameWithStreamIdIR(stream_id), 989 : SpdyFrameWithStreamIdIR(stream_id),
987 parent_stream_id_(0), 990 parent_stream_id_(0),
988 weight_(1), 991 weight_(1),
989 exclusive_(false) {} 992 exclusive_(false) {}
990 SpdyPriorityIR(SpdyStreamId stream_id, 993 SpdyPriorityIR(SpdyStreamId stream_id,
991 SpdyStreamId parent_stream_id, 994 SpdyStreamId parent_stream_id,
992 uint8 weight, 995 uint8_t weight,
993 bool exclusive) 996 bool exclusive)
994 : SpdyFrameWithStreamIdIR(stream_id), 997 : SpdyFrameWithStreamIdIR(stream_id),
995 parent_stream_id_(parent_stream_id), 998 parent_stream_id_(parent_stream_id),
996 weight_(weight), 999 weight_(weight),
997 exclusive_(exclusive) {} 1000 exclusive_(exclusive) {}
998 SpdyStreamId parent_stream_id() const { return parent_stream_id_; } 1001 SpdyStreamId parent_stream_id() const { return parent_stream_id_; }
999 void set_parent_stream_id(SpdyStreamId id) { parent_stream_id_ = id; } 1002 void set_parent_stream_id(SpdyStreamId id) { parent_stream_id_ = id; }
1000 uint8 weight() const { return weight_; } 1003 uint8_t weight() const { return weight_; }
1001 void set_weight(uint8 weight) { weight_ = weight; } 1004 void set_weight(uint8_t weight) { weight_ = weight; }
1002 bool exclusive() const { return exclusive_; } 1005 bool exclusive() const { return exclusive_; }
1003 void set_exclusive(bool exclusive) { exclusive_ = exclusive; } 1006 void set_exclusive(bool exclusive) { exclusive_ = exclusive; }
1004 1007
1005 void Visit(SpdyFrameVisitor* visitor) const override; 1008 void Visit(SpdyFrameVisitor* visitor) const override;
1006 1009
1007 private: 1010 private:
1008 SpdyStreamId parent_stream_id_; 1011 SpdyStreamId parent_stream_id_;
1009 uint8 weight_; 1012 uint8_t weight_;
1010 bool exclusive_; 1013 bool exclusive_;
1011 DISALLOW_COPY_AND_ASSIGN(SpdyPriorityIR); 1014 DISALLOW_COPY_AND_ASSIGN(SpdyPriorityIR);
1012 }; 1015 };
1013 1016
1014 // ------------------------------------------------------------------------- 1017 // -------------------------------------------------------------------------
1015 // Wrapper classes for various SPDY frames. 1018 // Wrapper classes for various SPDY frames.
1016 1019
1017 // All Spdy Frame types derive from this SpdyFrame class. 1020 // All Spdy Frame types derive from this SpdyFrame class.
1018 class SpdyFrame { 1021 class SpdyFrame {
1019 public: 1022 public:
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
1079 SpdyFrameVisitor() {} 1082 SpdyFrameVisitor() {}
1080 virtual ~SpdyFrameVisitor() {} 1083 virtual ~SpdyFrameVisitor() {}
1081 1084
1082 private: 1085 private:
1083 DISALLOW_COPY_AND_ASSIGN(SpdyFrameVisitor); 1086 DISALLOW_COPY_AND_ASSIGN(SpdyFrameVisitor);
1084 }; 1087 };
1085 1088
1086 } // namespace net 1089 } // namespace net
1087 1090
1088 #endif // NET_SPDY_SPDY_PROTOCOL_H_ 1091 #endif // NET_SPDY_SPDY_PROTOCOL_H_
OLDNEW
« no previous file with comments | « net/spdy/spdy_priority_tree_test.cc ('k') | net/spdy/spdy_protocol.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698