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

Unified Diff: net/http2/http2_structures.h

Issue 2554683003: Revert of Add new HTTP/2 and HPACK decoder in net/http2/. (Closed)
Patch Set: Created 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/http2/http2_constants_test_util.cc ('k') | net/http2/http2_structures.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/http2/http2_structures.h
diff --git a/net/http2/http2_structures.h b/net/http2/http2_structures.h
deleted file mode 100644
index 95328e1f5ab8d532ac16c83f1ff40ca7d9be9719..0000000000000000000000000000000000000000
--- a/net/http2/http2_structures.h
+++ /dev/null
@@ -1,326 +0,0 @@
-// Copyright 2016 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef NET_HTTP2_HTTP2_STRUCTURES_H_
-#define NET_HTTP2_HTTP2_STRUCTURES_H_
-
-// Defines structs for various fixed sized structures in HTTP/2.
-//
-// Those structs with multiple fields have constructors that take arguments in
-// the same order as their encoding (which may be different from their order
-// in the struct). For single field structs, use aggregate initialization if
-// desired, e.g.:
-//
-// Http2RstStreamFields var{Http2ErrorCode::ENHANCE_YOUR_CALM};
-// or:
-// SomeFunc(Http2RstStreamFields{Http2ErrorCode::ENHANCE_YOUR_CALM});
-//
-// Each struct includes a static method EncodedSize which returns the number
-// of bytes of the encoding.
-//
-// With the exception of Http2FrameHeader, all the types are named
-// Http2<X>Fields, where X is the title-case form of the frame which always
-// includes the fields; the "always" is to cover the case of the PRIORITY frame;
-// its fields optionally appear in the HEADERS frame, but the struct is called
-// Http2PriorityFields.
-
-#include <stddef.h>
-#include <stdint.h>
-
-#include <ostream>
-#include <string>
-
-#include "base/logging.h"
-#include "net/base/net_export.h"
-#include "net/http2/http2_constants.h"
-
-namespace net {
-
-struct NET_EXPORT_PRIVATE Http2FrameHeader {
- Http2FrameHeader() {}
- Http2FrameHeader(uint32_t payload_length,
- Http2FrameType type,
- uint8_t flags,
- uint32_t stream_id)
- : payload_length(payload_length),
- stream_id(stream_id),
- type(type),
- flags(static_cast<Http2FrameFlag>(flags)) {
- DCHECK_LT(payload_length, static_cast<uint32_t>(1 << 24))
- << "Payload Length is only a 24 bit field\n"
- << ToString();
- }
-
- static constexpr size_t EncodedSize() { return 9; }
-
- // Keep the current value of those flags that are in
- // valid_flags, and clear all the others.
- void RetainFlags(uint8_t valid_flags) {
- flags = static_cast<Http2FrameFlag>(flags & valid_flags);
- }
-
- // Returns true if any of the flags in flag_mask are set,
- // otherwise false.
- bool HasAnyFlags(uint8_t flag_mask) const { return 0 != (flags & flag_mask); }
-
- // Is the END_STREAM flag set?
- bool IsEndStream() const {
- DCHECK(type == Http2FrameType::DATA || type == Http2FrameType::HEADERS)
- << ToString();
- return (flags & Http2FrameFlag::FLAG_END_STREAM) != 0;
- }
-
- // Is the ACK flag set?
- bool IsAck() const {
- DCHECK(type == Http2FrameType::SETTINGS || type == Http2FrameType::PING)
- << ToString();
- return (flags & Http2FrameFlag::FLAG_ACK) != 0;
- }
-
- // Is the END_HEADERS flag set?
- bool IsEndHeaders() const {
- DCHECK(type == Http2FrameType::HEADERS ||
- type == Http2FrameType::PUSH_PROMISE ||
- type == Http2FrameType::CONTINUATION)
- << ToString();
- return (flags & Http2FrameFlag::FLAG_END_HEADERS) != 0;
- }
-
- // Is the PADDED flag set?
- bool IsPadded() const {
- DCHECK(type == Http2FrameType::DATA || type == Http2FrameType::HEADERS ||
- type == Http2FrameType::PUSH_PROMISE)
- << ToString();
- return (flags & Http2FrameFlag::FLAG_PADDED) != 0;
- }
-
- // Is the PRIORITY flag set?
- bool HasPriority() const {
- DCHECK_EQ(type, Http2FrameType::HEADERS) << ToString();
- return (flags & Http2FrameFlag::FLAG_PRIORITY) != 0;
- }
-
- // Does the encoding of this header start with "HTTP/", indicating that it
- // might be from a non-HTTP/2 server.
- bool IsProbableHttpResponse() const;
-
- // Produce strings useful for debugging/logging messages.
- std::string ToString() const;
- std::string FlagsToString() const;
-
- // 24 bit length of the payload after the header, including any padding.
- // First field in encoding.
- uint32_t payload_length; // 24 bits
-
- // 31 bit stream id, with high bit (32nd bit) reserved (must be zero),
- // and is cleared during decoding.
- // Fourth field in encoding.
- uint32_t stream_id;
-
- // Type of the frame.
- // Second field in encoding.
- Http2FrameType type;
-
- // Flag bits, with interpretations that depend upon the frame type.
- // Flag bits not used by the frame type are cleared.
- // Third field in encoding.
- Http2FrameFlag flags;
-};
-
-NET_EXPORT_PRIVATE bool operator==(const Http2FrameHeader& a,
- const Http2FrameHeader& b);
-NET_EXPORT_PRIVATE inline bool operator!=(const Http2FrameHeader& a,
- const Http2FrameHeader& b) {
- return !(a == b);
-}
-NET_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& out,
- const Http2FrameHeader& v);
-
-// Http2PriorityFields:
-
-struct NET_EXPORT_PRIVATE Http2PriorityFields {
- Http2PriorityFields() {}
- Http2PriorityFields(uint32_t stream_dependency,
- uint32_t weight,
- bool is_exclusive)
- : stream_dependency(stream_dependency),
- weight(weight),
- is_exclusive(is_exclusive) {
- // Can't have the high-bit set in the stream id because we need to use
- // that for the EXCLUSIVE flag bit.
- DCHECK_EQ(stream_dependency, stream_dependency & StreamIdMask())
- << "Stream Dependency is only a 31-bit field.\n"
- << ToString();
- DCHECK_LE(1u, weight) << "Weight is too small.";
- DCHECK_LE(weight, 256u) << "Weight is too large.";
- }
- static constexpr size_t EncodedSize() { return 5; }
-
- // Produce strings useful for debugging/logging messages.
- std::string ToString() const;
-
- // A 31-bit stream identifier for the stream that this stream depends on.
- uint32_t stream_dependency;
-
- // Weight (1 to 256) is encoded as a byte in the range 0 to 255, so we
- // add one when decoding, and store it in a field larger than a byte.
- uint32_t weight;
-
- // A single-bit flag indicating that the stream dependency is exclusive;
- // extracted from high bit of stream dependency field during decoding.
- bool is_exclusive;
-};
-
-NET_EXPORT_PRIVATE bool operator==(const Http2PriorityFields& a,
- const Http2PriorityFields& b);
-NET_EXPORT_PRIVATE inline bool operator!=(const Http2PriorityFields& a,
- const Http2PriorityFields& b) {
- return !(a == b);
-}
-NET_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& out,
- const Http2PriorityFields& v);
-
-// Http2RstStreamFields:
-
-struct Http2RstStreamFields {
- static constexpr size_t EncodedSize() { return 4; }
- bool IsSupportedErrorCode() const {
- return IsSupportedHttp2ErrorCode(error_code);
- }
-
- Http2ErrorCode error_code;
-};
-
-NET_EXPORT_PRIVATE bool operator==(const Http2RstStreamFields& a,
- const Http2RstStreamFields& b);
-NET_EXPORT_PRIVATE inline bool operator!=(const Http2RstStreamFields& a,
- const Http2RstStreamFields& b) {
- return !(a == b);
-}
-NET_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& out,
- const Http2RstStreamFields& v);
-
-// Http2SettingFields:
-
-struct Http2SettingFields {
- Http2SettingFields() {}
- Http2SettingFields(Http2SettingsParameter parameter, uint32_t value)
- : parameter(parameter), value(value) {}
- static constexpr size_t EncodedSize() { return 6; }
- bool IsSupportedParameter() const {
- return IsSupportedHttp2SettingsParameter(parameter);
- }
-
- Http2SettingsParameter parameter;
- uint32_t value;
-};
-
-NET_EXPORT_PRIVATE bool operator==(const Http2SettingFields& a,
- const Http2SettingFields& b);
-NET_EXPORT_PRIVATE inline bool operator!=(const Http2SettingFields& a,
- const Http2SettingFields& b) {
- return !(a == b);
-}
-NET_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& out,
- const Http2SettingFields& v);
-
-// Http2PushPromiseFields:
-
-struct Http2PushPromiseFields {
- static constexpr size_t EncodedSize() { return 4; }
-
- uint32_t promised_stream_id;
-};
-
-NET_EXPORT_PRIVATE bool operator==(const Http2PushPromiseFields& a,
- const Http2PushPromiseFields& b);
-NET_EXPORT_PRIVATE inline bool operator!=(const Http2PushPromiseFields& a,
- const Http2PushPromiseFields& b) {
- return !(a == b);
-}
-NET_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& out,
- const Http2PushPromiseFields& v);
-
-// Http2PingFields:
-
-struct Http2PingFields {
- static constexpr size_t EncodedSize() { return 8; }
-
- // TODO(jamessynge): Rename opaque_data to opaque_bytes.
- uint8_t opaque_data[8];
-};
-
-NET_EXPORT_PRIVATE bool operator==(const Http2PingFields& a,
- const Http2PingFields& b);
-NET_EXPORT_PRIVATE inline bool operator!=(const Http2PingFields& a,
- const Http2PingFields& b) {
- return !(a == b);
-}
-NET_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& out,
- const Http2PingFields& v);
-
-// Http2GoAwayFields:
-
-struct Http2GoAwayFields {
- Http2GoAwayFields() {}
- Http2GoAwayFields(uint32_t last_stream_id, Http2ErrorCode error_code)
- : last_stream_id(last_stream_id), error_code(error_code) {}
- static constexpr size_t EncodedSize() { return 8; }
- bool IsSupportedErrorCode() const {
- return IsSupportedHttp2ErrorCode(error_code);
- }
-
- uint32_t last_stream_id;
- Http2ErrorCode error_code;
-};
-
-NET_EXPORT_PRIVATE bool operator==(const Http2GoAwayFields& a,
- const Http2GoAwayFields& b);
-NET_EXPORT_PRIVATE inline bool operator!=(const Http2GoAwayFields& a,
- const Http2GoAwayFields& b) {
- return !(a == b);
-}
-NET_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& out,
- const Http2GoAwayFields& v);
-
-// Http2WindowUpdateFields:
-
-struct Http2WindowUpdateFields {
- static constexpr size_t EncodedSize() { return 4; }
-
- // 31-bit, unsigned increase in the window size (only positive values are
- // allowed). The high-bit is reserved for the future.
- uint32_t window_size_increment;
-};
-
-NET_EXPORT_PRIVATE bool operator==(const Http2WindowUpdateFields& a,
- const Http2WindowUpdateFields& b);
-NET_EXPORT_PRIVATE inline bool operator!=(const Http2WindowUpdateFields& a,
- const Http2WindowUpdateFields& b) {
- return !(a == b);
-}
-NET_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& out,
- const Http2WindowUpdateFields& v);
-
-// Http2AltSvcFields:
-
-struct Http2AltSvcFields {
- static constexpr size_t EncodedSize() { return 2; }
-
- // This is the one fixed size portion of the ALTSVC payload.
- uint16_t origin_length;
-};
-
-NET_EXPORT_PRIVATE bool operator==(const Http2AltSvcFields& a,
- const Http2AltSvcFields& b);
-NET_EXPORT_PRIVATE inline bool operator!=(const Http2AltSvcFields& a,
- const Http2AltSvcFields& b) {
- return !(a == b);
-}
-NET_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& out,
- const Http2AltSvcFields& v);
-
-} // namespace net
-
-#endif // NET_HTTP2_HTTP2_STRUCTURES_H_
« no previous file with comments | « net/http2/http2_constants_test_util.cc ('k') | net/http2/http2_structures.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698