io.opencensus.common.ServerStatsFieldEnums Maven / Gradle / Ivy
/*
* Copyright 2018, OpenCensus Authors
*
* 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 io.opencensus.common;
import java.util.TreeMap;
import javax.annotation.Nullable;
/**
* A Enum representation for Ids and Size for attributes of {@code ServerStats}.
*
* See opencensus-server-stats-specs
* for the field ids and their length defined for Server Stats
*
* @since 0.16
*/
public final class ServerStatsFieldEnums {
/**
* Available Ids for {@code ServerStats} attributes.
*
* @since 0.16
*/
public enum Id {
/**
* Id for Latency observed at Load Balancer.
*
* @since 0.16
*/
SERVER_STATS_LB_LATENCY_ID(0),
/**
* Id for Latency observed at Server.
*
* @since 0.16
*/
SERVER_STATS_SERVICE_LATENCY_ID(1),
/**
* Id for Trace options.
*
* @since 0.16
*/
SERVER_STATS_TRACE_OPTION_ID(2);
private final int value;
private Id(int value) {
this.value = value;
}
/**
* Returns the numerical value of the {@link Id}.
*
* @return the numerical value of the {@code Id}.
* @since 0.16
*/
public int value() {
return value;
}
private static final TreeMap map = new TreeMap();
static {
for (Id id : Id.values()) {
map.put(id.value, id);
}
}
/**
* Returns the {@link Id} representing the value value of the id.
*
* @param value integer value for which {@code Id} is being requested.
* @return the numerical value of the id. null if the id is not valid
* @since 0.16
*/
@Nullable
public static Id valueOf(int value) {
return map.get(value);
}
}
/**
* Size for each attributes in {@code ServerStats}.
*
* @since 0.16
*/
public enum Size {
/**
* Number of bytes used to represent latency observed at Load Balancer.
*
* @since 0.16
*/
SERVER_STATS_LB_LATENCY_SIZE(8),
/**
* Number of bytes used to represent latency observed at Server.
*
* @since 0.16
*/
SERVER_STATS_SERVICE_LATENCY_SIZE(8),
/**
* Number of bytes used to represent Trace option.
*
* @since 0.16
*/
SERVER_STATS_TRACE_OPTION_SIZE(1);
private final int value;
private Size(int value) {
this.value = value;
}
/**
* Returns the numerical value of the {@link Size}.
*
* @return the numerical value of the {@code Size}.
* @since 0.16
*/
public int value() {
return value;
}
}
private static final int TOTALSIZE = computeTotalSize();
private ServerStatsFieldEnums() {}
private static int computeTotalSize() {
int sum = 0;
for (Size sizeValue : Size.values()) {
sum += sizeValue.value();
sum += 1; // For Id
}
return sum;
}
/**
* Returns the total size required to encode the {@code ServerStats}.
*
* @return the total size required to encode all fields in {@code ServerStats}.
* @since 0.16
*/
public static int getTotalSize() {
return TOTALSIZE;
}
}