| 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 269 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 280 SETTINGS, | 280 SETTINGS, |
| 281 NOOP, // Because it is valid in SPDY/2, kept for identifiability/enum order. | 281 NOOP, // Because it is valid in SPDY/2, kept for identifiability/enum order. |
| 282 PING, | 282 PING, |
| 283 GOAWAY, | 283 GOAWAY, |
| 284 HEADERS, | 284 HEADERS, |
| 285 WINDOW_UPDATE, | 285 WINDOW_UPDATE, |
| 286 CREDENTIAL, // No longer valid. Kept for identifiability/enum order. | 286 CREDENTIAL, // No longer valid. Kept for identifiability/enum order. |
| 287 BLOCKED, | 287 BLOCKED, |
| 288 PUSH_PROMISE, | 288 PUSH_PROMISE, |
| 289 CONTINUATION, | 289 CONTINUATION, |
| 290 LAST_CONTROL_TYPE = CONTINUATION | 290 ALTSVC, |
| 291 LAST_CONTROL_TYPE = ALTSVC |
| 291 }; | 292 }; |
| 292 | 293 |
| 293 // Flags on data packets. | 294 // Flags on data packets. |
| 294 enum SpdyDataFlags { | 295 enum SpdyDataFlags { |
| 295 DATA_FLAG_NONE = 0x00, | 296 DATA_FLAG_NONE = 0x00, |
| 296 DATA_FLAG_FIN = 0x01, | 297 DATA_FLAG_FIN = 0x01, |
| 297 DATA_FLAG_END_SEGMENT = 0x02, | 298 DATA_FLAG_END_SEGMENT = 0x02, |
| 298 DATA_FLAG_PAD_LOW = 0x10, | 299 DATA_FLAG_PAD_LOW = 0x10, |
| 299 DATA_FLAG_PAD_HIGH = 0x20 | 300 DATA_FLAG_PAD_HIGH = 0x20 |
| 300 }; | 301 }; |
| 301 | 302 |
| 302 // Flags on control packets | 303 // Flags on control packets |
| 303 enum SpdyControlFlags { | 304 enum SpdyControlFlags { |
| 304 CONTROL_FLAG_NONE = 0, | 305 CONTROL_FLAG_NONE = 0, |
| 305 CONTROL_FLAG_FIN = 1, | 306 CONTROL_FLAG_FIN = 1, |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 401 | 402 |
| 402 // A SPDY priority is a number between 0 and 7 (inclusive). | 403 // A SPDY priority is a number between 0 and 7 (inclusive). |
| 403 // SPDY priority range is version-dependent. For SPDY 2 and below, priority is a | 404 // SPDY priority range is version-dependent. For SPDY 2 and below, priority is a |
| 404 // number between 0 and 3. | 405 // number between 0 and 3. |
| 405 typedef uint8 SpdyPriority; | 406 typedef uint8 SpdyPriority; |
| 406 | 407 |
| 407 typedef std::map<std::string, std::string> SpdyNameValueBlock; | 408 typedef std::map<std::string, std::string> SpdyNameValueBlock; |
| 408 | 409 |
| 409 typedef uint64 SpdyPingId; | 410 typedef uint64 SpdyPingId; |
| 410 | 411 |
| 412 typedef std::string SpdyProtocolId; |
| 413 |
| 411 // TODO(hkhalil): Add direct testing for this? It won't increase coverage any, | 414 // TODO(hkhalil): Add direct testing for this? It won't increase coverage any, |
| 412 // but is good to do anyway. | 415 // but is good to do anyway. |
| 413 class NET_EXPORT_PRIVATE SpdyConstants { | 416 class NET_EXPORT_PRIVATE SpdyConstants { |
| 414 public: | 417 public: |
| 415 // Returns true if a given on-the-wire enumeration of a frame type is valid | 418 // Returns true if a given on-the-wire enumeration of a frame type is valid |
| 416 // for a given protocol version, false otherwise. | 419 // for a given protocol version, false otherwise. |
| 417 static bool IsValidFrameType(SpdyMajorVersion version, int frame_type_field); | 420 static bool IsValidFrameType(SpdyMajorVersion version, int frame_type_field); |
| 418 | 421 |
| 419 // Parses a frame type from an on-the-wire enumeration of a given protocol | 422 // Parses a frame type from an on-the-wire enumeration of a given protocol |
| 420 // version. | 423 // version. |
| (...skipping 487 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 908 virtual void Visit(SpdyFrameVisitor* visitor) const OVERRIDE; | 911 virtual void Visit(SpdyFrameVisitor* visitor) const OVERRIDE; |
| 909 | 912 |
| 910 bool end_headers() const { return end_headers_; } | 913 bool end_headers() const { return end_headers_; } |
| 911 void set_end_headers(bool end_headers) {end_headers_ = end_headers;} | 914 void set_end_headers(bool end_headers) {end_headers_ = end_headers;} |
| 912 | 915 |
| 913 private: | 916 private: |
| 914 bool end_headers_; | 917 bool end_headers_; |
| 915 DISALLOW_COPY_AND_ASSIGN(SpdyContinuationIR); | 918 DISALLOW_COPY_AND_ASSIGN(SpdyContinuationIR); |
| 916 }; | 919 }; |
| 917 | 920 |
| 921 class NET_EXPORT_PRIVATE SpdyAltSvcIR : public SpdyFrameWithStreamIdIR { |
| 922 public: |
| 923 explicit SpdyAltSvcIR(SpdyStreamId stream_id); |
| 924 |
| 925 uint32 max_age() const { return max_age_; } |
| 926 uint16 port() const { return port_; } |
| 927 SpdyProtocolId protocol_id() const { |
| 928 return protocol_id_; |
| 929 } |
| 930 std::string host() const { return host_; } |
| 931 std::string origin() const { return origin_; } |
| 932 |
| 933 void set_max_age(uint32 max_age) { max_age_ = max_age; } |
| 934 void set_port(uint16 port) { port_ = port; } |
| 935 void set_protocol_id(SpdyProtocolId protocol_id) { |
| 936 protocol_id_ = protocol_id; |
| 937 } |
| 938 void set_host(std::string host) { |
| 939 host_ = host; |
| 940 } |
| 941 void set_origin(std::string origin) { |
| 942 origin_ = origin; |
| 943 } |
| 944 |
| 945 virtual void Visit(SpdyFrameVisitor* visitor) const OVERRIDE; |
| 946 |
| 947 private: |
| 948 uint32 max_age_; |
| 949 uint16 port_; |
| 950 SpdyProtocolId protocol_id_; |
| 951 std::string host_; |
| 952 std::string origin_; |
| 953 DISALLOW_COPY_AND_ASSIGN(SpdyAltSvcIR); |
| 954 }; |
| 955 |
| 918 // ------------------------------------------------------------------------- | 956 // ------------------------------------------------------------------------- |
| 919 // Wrapper classes for various SPDY frames. | 957 // Wrapper classes for various SPDY frames. |
| 920 | 958 |
| 921 // All Spdy Frame types derive from this SpdyFrame class. | 959 // All Spdy Frame types derive from this SpdyFrame class. |
| 922 class SpdyFrame { | 960 class SpdyFrame { |
| 923 public: | 961 public: |
| 924 // Create a SpdyFrame using a pre-created buffer. | 962 // Create a SpdyFrame using a pre-created buffer. |
| 925 // If |owns_buffer| is true, this class takes ownership of the buffer | 963 // If |owns_buffer| is true, this class takes ownership of the buffer |
| 926 // and will delete it on cleanup. The buffer must have been created using | 964 // and will delete it on cleanup. The buffer must have been created using |
| 927 // new char[]. | 965 // new char[]. |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 968 virtual void VisitSynReply(const SpdySynReplyIR& syn_reply) = 0; | 1006 virtual void VisitSynReply(const SpdySynReplyIR& syn_reply) = 0; |
| 969 virtual void VisitRstStream(const SpdyRstStreamIR& rst_stream) = 0; | 1007 virtual void VisitRstStream(const SpdyRstStreamIR& rst_stream) = 0; |
| 970 virtual void VisitSettings(const SpdySettingsIR& settings) = 0; | 1008 virtual void VisitSettings(const SpdySettingsIR& settings) = 0; |
| 971 virtual void VisitPing(const SpdyPingIR& ping) = 0; | 1009 virtual void VisitPing(const SpdyPingIR& ping) = 0; |
| 972 virtual void VisitGoAway(const SpdyGoAwayIR& goaway) = 0; | 1010 virtual void VisitGoAway(const SpdyGoAwayIR& goaway) = 0; |
| 973 virtual void VisitHeaders(const SpdyHeadersIR& headers) = 0; | 1011 virtual void VisitHeaders(const SpdyHeadersIR& headers) = 0; |
| 974 virtual void VisitWindowUpdate(const SpdyWindowUpdateIR& window_update) = 0; | 1012 virtual void VisitWindowUpdate(const SpdyWindowUpdateIR& window_update) = 0; |
| 975 virtual void VisitBlocked(const SpdyBlockedIR& blocked) = 0; | 1013 virtual void VisitBlocked(const SpdyBlockedIR& blocked) = 0; |
| 976 virtual void VisitPushPromise(const SpdyPushPromiseIR& push_promise) = 0; | 1014 virtual void VisitPushPromise(const SpdyPushPromiseIR& push_promise) = 0; |
| 977 virtual void VisitContinuation(const SpdyContinuationIR& continuation) = 0; | 1015 virtual void VisitContinuation(const SpdyContinuationIR& continuation) = 0; |
| 1016 virtual void VisitAltSvc(const SpdyAltSvcIR& altsvc) = 0; |
| 978 virtual void VisitData(const SpdyDataIR& data) = 0; | 1017 virtual void VisitData(const SpdyDataIR& data) = 0; |
| 979 | 1018 |
| 980 protected: | 1019 protected: |
| 981 SpdyFrameVisitor() {} | 1020 SpdyFrameVisitor() {} |
| 982 virtual ~SpdyFrameVisitor() {} | 1021 virtual ~SpdyFrameVisitor() {} |
| 983 | 1022 |
| 984 private: | 1023 private: |
| 985 DISALLOW_COPY_AND_ASSIGN(SpdyFrameVisitor); | 1024 DISALLOW_COPY_AND_ASSIGN(SpdyFrameVisitor); |
| 986 }; | 1025 }; |
| 987 | 1026 |
| 988 } // namespace net | 1027 } // namespace net |
| 989 | 1028 |
| 990 #endif // NET_SPDY_SPDY_PROTOCOL_H_ | 1029 #endif // NET_SPDY_SPDY_PROTOCOL_H_ |
| OLD | NEW |