io.netty.handler.codec.socksx.SocksVersion Maven / Gradle / Ivy
/*
* 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.socksx;
/**
* The version of SOCKS protocol.
*/
public enum SocksVersion {
/**
* SOCKS protocol version 4a (or 4)
*/
SOCKS4a((byte) 0x04),
/**
* SOCKS protocol version 5
*/
SOCKS5((byte) 0x05),
/**
* Unknown protocol version
*/
UNKNOWN((byte) 0xff);
/**
* Returns the {@link SocksVersion} that corresponds to the specified version field value,
* as defined in the protocol specification.
*
* @return {@link #UNKNOWN} if the specified value does not represent a known SOCKS protocol version
*/
public static SocksVersion valueOf(byte b) {
if (b == SOCKS4a.byteValue()) {
return SOCKS4a;
}
if (b == SOCKS5.byteValue()) {
return SOCKS5;
}
return UNKNOWN;
}
private final byte b;
SocksVersion(byte b) {
this.b = b;
}
/**
* Returns the value of the version field, as defined in the protocol specification.
*/
public byte byteValue() {
return b;
}
}