| // |
| // ======================================================================== |
| // Copyright (c) 1995-2017 Mort Bay Consulting Pty. Ltd. |
| // ------------------------------------------------------------------------ |
| // All rights reserved. This program and the accompanying materials |
| // are made available under the terms of the Eclipse Public License v1.0 |
| // and Apache License v2.0 which accompanies this distribution. |
| // |
| // The Eclipse Public License is available at |
| // http://www.eclipse.org/legal/epl-v10.html |
| // |
| // The Apache License v2.0 is available at |
| // http://www.opensource.org/licenses/apache2.0.php |
| // |
| // You may elect to redistribute this code under either of these licenses. |
| // ======================================================================== |
| // |
| |
| package org.eclipse.jetty.http2; |
| |
| import java.util.HashMap; |
| import java.util.Map; |
| |
| /** |
| * Standard HTTP/2 error codes. |
| */ |
| public enum ErrorCode |
| { |
| /** |
| * Indicates no errors. |
| */ |
| NO_ERROR(0), |
| /** |
| * Indicates a generic HTTP/2 protocol violation. |
| */ |
| PROTOCOL_ERROR(1), |
| /** |
| * Indicates an internal error. |
| */ |
| INTERNAL_ERROR(2), |
| /** |
| * Indicates a HTTP/2 flow control violation. |
| */ |
| FLOW_CONTROL_ERROR(3), |
| /** |
| * Indicates that a SETTINGS frame did not receive a reply in a timely manner. |
| */ |
| SETTINGS_TIMEOUT_ERROR(4), |
| /** |
| * Indicates that a stream frame has been received after the stream was closed. |
| */ |
| STREAM_CLOSED_ERROR(5), |
| /** |
| * Indicates that a frame has an invalid length. |
| */ |
| FRAME_SIZE_ERROR(6), |
| /** |
| * Indicates that a stream was rejected before application processing. |
| */ |
| REFUSED_STREAM_ERROR(7), |
| /** |
| * Indicates that a stream is no longer needed. |
| */ |
| CANCEL_STREAM_ERROR(8), |
| /** |
| * Indicates inability to maintain the HPACK compression context. |
| */ |
| COMPRESSION_ERROR(9), |
| /** |
| * Indicates that the connection established by a HTTP CONNECT was abnormally closed. |
| */ |
| HTTP_CONNECT_ERROR(10), |
| /** |
| * Indicates that the other peer might be generating excessive load. |
| */ |
| ENHANCE_YOUR_CALM_ERROR(11), |
| /** |
| * Indicates that the transport properties do not meet minimum security requirements. |
| */ |
| INADEQUATE_SECURITY_ERROR(12), |
| /** |
| * Indicates that HTTP/1.1 must be used rather than HTTP/2. |
| */ |
| HTTP_1_1_REQUIRED_ERROR(13); |
| |
| public final int code; |
| |
| private ErrorCode(int code) |
| { |
| this.code = code; |
| Codes.codes.put(code, this); |
| } |
| |
| public static ErrorCode from(int error) |
| { |
| return Codes.codes.get(error); |
| } |
| |
| private static class Codes |
| { |
| private static final Map<Integer, ErrorCode> codes = new HashMap<>(); |
| } |
| } |