/*
* Copyright 2017 NAVER Corp.
*
* Licensed 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 com.navercorp.pinpoint.rpc.packet.stream;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
/**
* @Author Taejin Koo
*/
public enum StreamCode {
// Status Code
OK((short) 0),
UNKNWON_ERROR((short) 100),
ID_ERROR((short) 110),
ID_ILLEGAL((short) 111),
ID_DUPLICATED((short) 112),
ID_NOT_FOUND((short) 113),
STATE_ERROR((short) 120),
STATE_NOT_CONNECTED((short) 121),
STATE_CLOSED((short) 122),
TYPE_ERROR((short) 130),
TYPE_UNKNOWN((short) 131),
TYPE_UNSUPPORT((short) 132),
PACKET_ERROR((short) 140),
PACKET_UNKNOWN((short) 141),
PACKET_UNSUPPORT((short) 142),
CONNECTION_ERRROR((short) 150),
CONNECTION_NOT_FOUND((short) 151),
CONNECTION_TIMEOUT((short) 152),
CONNECTION_UNSUPPORT((short) 153),
ROUTE_ERROR((short)160);
private final short value;
private final static Map<Short, StreamCode> CODE_MAP = Collections.unmodifiableMap(initializeCodeMapping());
StreamCode(short value) {
this.value = value;
}
public static StreamCode getCode(short value) {
StreamCode streamCode = CODE_MAP.get(value);
if (streamCode != null) {
return streamCode;
}
short codeGroup = (short) (value - (value % 10));
streamCode = CODE_MAP.get(codeGroup);
if (streamCode != null) {
return streamCode;
}
return UNKNWON_ERROR;
}
private static Map<Short, StreamCode> initializeCodeMapping() {
Map<Short, StreamCode> codeMap = new HashMap<Short, StreamCode>();
for (StreamCode streamCode : StreamCode.values()) {
codeMap.put(streamCode.value, streamCode);
}
return codeMap;
}
public short value() {
return value;
}
}