/*
* 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.web.websocket;
import com.navercorp.pinpoint.rpc.packet.stream.StreamCode;
import com.navercorp.pinpoint.thrift.dto.command.TRouteResult;
import java.util.*;
/**
* @Author Taejin Koo
*/
public enum ActiveThreadCountErrorType {
UNSUPPORTED_VERSION((short) 111, "UNSUPPORTED VERSION", StreamCode.TYPE_UNSUPPORT.name()),
CLUSTER_OPTION_NOT_SET((short) 121, "CLUSTER OPTION NOT SET", StreamCode.CONNECTION_UNSUPPORT.name()),
TIMEOUT((short) 211, "TIMEOUT", TRouteResult.TIMEOUT.name()),
NOT_FOUND((short) -1, "NOT FOUND", StreamCode.CONNECTION_NOT_FOUND.name()),
CLUSTER_CHANNEL_CLOSED((short) -1, "CLUSTER CHANNEL CLOSED", StreamCode.STATE_CLOSED.name()),
PINPOINT_INTERNAL_ERROR((short) -1, "PINPOINT INTERNAL ERROR");
private final static Map<String, ActiveThreadCountErrorType> CODE_MAP = Collections.unmodifiableMap(initializeCodeMapping());
private final short code;
private final String message;
private final List<String> errorMessageList = new ArrayList<>();
private static final String LINE_DELEMETER = "-";
ActiveThreadCountErrorType(short code, String message, String... candidateErrorMessages) {
this.code = code;
this.message = message;
if (candidateErrorMessages != null) {
for (String errorMessage : candidateErrorMessages) {
errorMessageList.add(errorMessage);
}
}
}
public short getCode() {
return code;
}
public String getMessage() {
return message;
}
public List<String> getErrorMessageList() {
return errorMessageList;
}
private static Map<String, ActiveThreadCountErrorType> initializeCodeMapping() {
Map<String, ActiveThreadCountErrorType> codeMap = new HashMap<>();
for (ActiveThreadCountErrorType errorType : ActiveThreadCountErrorType.values()) {
List<String> errorMessageList = errorType.getErrorMessageList();
for (String errorMessage : errorMessageList) {
codeMap.put(errorMessage, errorType);
}
}
return codeMap;
}
public static ActiveThreadCountErrorType getType(String errorMessage) {
ActiveThreadCountErrorType errorType = CODE_MAP.get(errorMessage);
if (errorType == null) {
return PINPOINT_INTERNAL_ERROR;
}
return errorType;
}
}