| #include "http2/adapter/http2_protocol.h" |
| |
| #include "absl/strings/str_cat.h" |
| #include "absl/strings/string_view.h" |
| |
| namespace http2 { |
| namespace adapter { |
| |
| const char kHttp2MethodPseudoHeader[] = ":method"; |
| const char kHttp2SchemePseudoHeader[] = ":scheme"; |
| const char kHttp2AuthorityPseudoHeader[] = ":authority"; |
| const char kHttp2PathPseudoHeader[] = ":path"; |
| const char kHttp2StatusPseudoHeader[] = ":status"; |
| |
| const uint8_t kMetadataFrameType = 0x4d; |
| const uint8_t kMetadataEndFlag = 0x04; |
| const uint16_t kMetadataExtensionId = 0x4d44; |
| |
| std::pair<absl::string_view, bool> GetStringView(const HeaderRep& rep) { |
| if (absl::holds_alternative<absl::string_view>(rep)) { |
| return std::make_pair(absl::get<absl::string_view>(rep), true); |
| } else { |
| absl::string_view view = absl::get<std::string>(rep); |
| return std::make_pair(view, false); |
| } |
| } |
| |
| absl::string_view Http2SettingsIdToString(uint16_t id) { |
| switch (id) { |
| case Http2KnownSettingsId::HEADER_TABLE_SIZE: |
| return "SETTINGS_HEADER_TABLE_SIZE"; |
| case Http2KnownSettingsId::ENABLE_PUSH: |
| return "SETTINGS_ENABLE_PUSH"; |
| case Http2KnownSettingsId::MAX_CONCURRENT_STREAMS: |
| return "SETTINGS_MAX_CONCURRENT_STREAMS"; |
| case Http2KnownSettingsId::INITIAL_WINDOW_SIZE: |
| return "SETTINGS_INITIAL_WINDOW_SIZE"; |
| case Http2KnownSettingsId::MAX_FRAME_SIZE: |
| return "SETTINGS_MAX_FRAME_SIZE"; |
| case Http2KnownSettingsId::MAX_HEADER_LIST_SIZE: |
| return "SETTINGS_MAX_HEADER_LIST_SIZE"; |
| } |
| return "SETTINGS_UNKNOWN"; |
| } |
| |
| absl::string_view Http2ErrorCodeToString(Http2ErrorCode error_code) { |
| switch (error_code) { |
| case Http2ErrorCode::HTTP2_NO_ERROR: |
| return "HTTP2_NO_ERROR"; |
| case Http2ErrorCode::PROTOCOL_ERROR: |
| return "PROTOCOL_ERROR"; |
| case Http2ErrorCode::INTERNAL_ERROR: |
| return "INTERNAL_ERROR"; |
| case Http2ErrorCode::FLOW_CONTROL_ERROR: |
| return "FLOW_CONTROL_ERROR"; |
| case Http2ErrorCode::SETTINGS_TIMEOUT: |
| return "SETTINGS_TIMEOUT"; |
| case Http2ErrorCode::STREAM_CLOSED: |
| return "STREAM_CLOSED"; |
| case Http2ErrorCode::FRAME_SIZE_ERROR: |
| return "FRAME_SIZE_ERROR"; |
| case Http2ErrorCode::REFUSED_STREAM: |
| return "REFUSED_STREAM"; |
| case Http2ErrorCode::CANCEL: |
| return "CANCEL"; |
| case Http2ErrorCode::COMPRESSION_ERROR: |
| return "COMPRESSION_ERROR"; |
| case Http2ErrorCode::CONNECT_ERROR: |
| return "CONNECT_ERROR"; |
| case Http2ErrorCode::ENHANCE_YOUR_CALM: |
| return "ENHANCE_YOUR_CALM"; |
| case Http2ErrorCode::INADEQUATE_SECURITY: |
| return "INADEQUATE_SECURITY"; |
| case Http2ErrorCode::HTTP_1_1_REQUIRED: |
| return "HTTP_1_1_REQUIRED"; |
| } |
| return "UNKNOWN_ERROR"; |
| } |
| |
| } // namespace adapter |
| } // namespace http2 |