188 lines
4.8 KiB
Java
188 lines
4.8 KiB
Java
/*
|
|
* Copyright 2013 The Netty Project
|
|
*
|
|
* The Netty Project licenses this file to you under the Apache License,
|
|
* version 2.0 (the "License"); you may not use this file except in compliance
|
|
* with the License. You may obtain a copy of the License at:
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
* License for the specific language governing permissions and limitations
|
|
* under the License.
|
|
*/
|
|
package io.netty.handler.codec.spdy;
|
|
|
|
/**
|
|
* The SPDY stream status code and its description.
|
|
*/
|
|
public class SpdyStreamStatus implements Comparable<SpdyStreamStatus> {
|
|
|
|
/**
|
|
* 1 Protocol Error
|
|
*/
|
|
public static final SpdyStreamStatus PROTOCOL_ERROR =
|
|
new SpdyStreamStatus(1, "PROTOCOL_ERROR");
|
|
|
|
/**
|
|
* 2 Invalid Stream
|
|
*/
|
|
public static final SpdyStreamStatus INVALID_STREAM =
|
|
new SpdyStreamStatus(2, "INVALID_STREAM");
|
|
|
|
/**
|
|
* 3 Refused Stream
|
|
*/
|
|
public static final SpdyStreamStatus REFUSED_STREAM =
|
|
new SpdyStreamStatus(3, "REFUSED_STREAM");
|
|
|
|
/**
|
|
* 4 Unsupported Version
|
|
*/
|
|
public static final SpdyStreamStatus UNSUPPORTED_VERSION =
|
|
new SpdyStreamStatus(4, "UNSUPPORTED_VERSION");
|
|
|
|
/**
|
|
* 5 Cancel
|
|
*/
|
|
public static final SpdyStreamStatus CANCEL =
|
|
new SpdyStreamStatus(5, "CANCEL");
|
|
|
|
/**
|
|
* 6 Internal Error
|
|
*/
|
|
public static final SpdyStreamStatus INTERNAL_ERROR =
|
|
new SpdyStreamStatus(6, "INTERNAL_ERROR");
|
|
|
|
/**
|
|
* 7 Flow Control Error
|
|
*/
|
|
public static final SpdyStreamStatus FLOW_CONTROL_ERROR =
|
|
new SpdyStreamStatus(7, "FLOW_CONTROL_ERROR");
|
|
|
|
/**
|
|
* 8 Stream In Use
|
|
*/
|
|
public static final SpdyStreamStatus STREAM_IN_USE =
|
|
new SpdyStreamStatus(8, "STREAM_IN_USE");
|
|
|
|
/**
|
|
* 9 Stream Already Closed
|
|
*/
|
|
public static final SpdyStreamStatus STREAM_ALREADY_CLOSED =
|
|
new SpdyStreamStatus(9, "STREAM_ALREADY_CLOSED");
|
|
|
|
/**
|
|
* 10 Invalid Credentials
|
|
*/
|
|
public static final SpdyStreamStatus INVALID_CREDENTIALS =
|
|
new SpdyStreamStatus(10, "INVALID_CREDENTIALS");
|
|
|
|
/**
|
|
* 11 Frame Too Large
|
|
*/
|
|
public static final SpdyStreamStatus FRAME_TOO_LARGE =
|
|
new SpdyStreamStatus(11, "FRAME_TOO_LARGE");
|
|
|
|
/**
|
|
* Returns the {@link SpdyStreamStatus} represented by the specified code.
|
|
* If the specified code is a defined SPDY status code, a cached instance
|
|
* will be returned. Otherwise, a new instance will be returned.
|
|
*/
|
|
public static SpdyStreamStatus valueOf(int code) {
|
|
if (code == 0) {
|
|
throw new IllegalArgumentException(
|
|
"0 is not a valid status code for a RST_STREAM");
|
|
}
|
|
|
|
switch (code) {
|
|
case 1:
|
|
return PROTOCOL_ERROR;
|
|
case 2:
|
|
return INVALID_STREAM;
|
|
case 3:
|
|
return REFUSED_STREAM;
|
|
case 4:
|
|
return UNSUPPORTED_VERSION;
|
|
case 5:
|
|
return CANCEL;
|
|
case 6:
|
|
return INTERNAL_ERROR;
|
|
case 7:
|
|
return FLOW_CONTROL_ERROR;
|
|
case 8:
|
|
return STREAM_IN_USE;
|
|
case 9:
|
|
return STREAM_ALREADY_CLOSED;
|
|
case 10:
|
|
return INVALID_CREDENTIALS;
|
|
case 11:
|
|
return FRAME_TOO_LARGE;
|
|
}
|
|
|
|
return new SpdyStreamStatus(code, "UNKNOWN (" + code + ')');
|
|
}
|
|
|
|
private final int code;
|
|
|
|
private final String statusPhrase;
|
|
|
|
/**
|
|
* Creates a new instance with the specified {@code code} and its
|
|
* {@code statusPhrase}.
|
|
*/
|
|
public SpdyStreamStatus(int code, String statusPhrase) {
|
|
if (code == 0) {
|
|
throw new IllegalArgumentException(
|
|
"0 is not a valid status code for a RST_STREAM");
|
|
}
|
|
|
|
if (statusPhrase == null) {
|
|
throw new NullPointerException("statusPhrase");
|
|
}
|
|
|
|
this.code = code;
|
|
this.statusPhrase = statusPhrase;
|
|
}
|
|
|
|
/**
|
|
* Returns the code of this status.
|
|
*/
|
|
public int code() {
|
|
return code;
|
|
}
|
|
|
|
/**
|
|
* Returns the status phrase of this status.
|
|
*/
|
|
public String statusPhrase() {
|
|
return statusPhrase;
|
|
}
|
|
|
|
@Override
|
|
public int hashCode() {
|
|
return code();
|
|
}
|
|
|
|
@Override
|
|
public boolean equals(Object o) {
|
|
if (!(o instanceof SpdyStreamStatus)) {
|
|
return false;
|
|
}
|
|
|
|
return code() == ((SpdyStreamStatus) o).code();
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return statusPhrase();
|
|
}
|
|
|
|
@Override
|
|
public int compareTo(SpdyStreamStatus o) {
|
|
return code() - o.code();
|
|
}
|
|
}
|