/*
* Copyright 2014 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.common.trace;
/**
* @author Jongho Moon <jongho.moon@navercorp.com>
*
*/
public enum ServiceTypeCategory {
UNDEFINED_CATEGORY((short)-1, (short)-1),
PINPOINT_INTERNAL((short)0, (short)999),
SERVER((short)1000, (short)1999),
DATABASE((short)2000, (short)2999),
LIBRARY((short)5000, (short)7999),
CACHE_LIBRARY((short)8000, (short)8999, BaseHistogramSchema.FAST_SCHEMA),
RPC((short)9000, (short)9999);
private final short minCode;
private final short maxCode;
private HistogramSchema histogramSchema;
ServiceTypeCategory(short minCode, short maxCode) {
this(minCode, maxCode, BaseHistogramSchema.NORMAL_SCHEMA);
}
ServiceTypeCategory(short minCode, short maxCode, HistogramSchema histogramSchema) {
this.minCode = minCode;
this.maxCode = maxCode;
if (histogramSchema == null) {
throw new NullPointerException("histogramSchema must not be null");
}
this.histogramSchema = histogramSchema;
}
public boolean contains(short code) {
return minCode <= code && code <= maxCode;
}
public boolean contains(ServiceType type) {
return contains(type.getCode());
}
public HistogramSchema getHistogramSchema() {
return histogramSchema;
}
public static ServiceTypeCategory findCategory(short code) {
for (ServiceTypeCategory serviceTypeCategory : ServiceTypeCategory.values()) {
if (serviceTypeCategory.contains(code)) {
return serviceTypeCategory;
}
}
throw new IllegalStateException("Unknown Category code:" + code);
}
}