aboutsummaryrefslogtreecommitdiff
path: root/api/src/main/java/io/opencensus/common/ServerStatsFieldEnums.java
diff options
context:
space:
mode:
Diffstat (limited to 'api/src/main/java/io/opencensus/common/ServerStatsFieldEnums.java')
-rw-r--r--api/src/main/java/io/opencensus/common/ServerStatsFieldEnums.java159
1 files changed, 159 insertions, 0 deletions
diff --git a/api/src/main/java/io/opencensus/common/ServerStatsFieldEnums.java b/api/src/main/java/io/opencensus/common/ServerStatsFieldEnums.java
new file mode 100644
index 00000000..ff3cfda9
--- /dev/null
+++ b/api/src/main/java/io/opencensus/common/ServerStatsFieldEnums.java
@@ -0,0 +1,159 @@
+/*
+ * 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}.
+ *
+ * <p>See <a
+ * href="https://github.com/census-instrumentation/opencensus-specs/blob/master/encodings/CensusServerStatsEncoding.md">opencensus-server-stats-specs</a>
+ * 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<Integer, Id> map = new TreeMap<Integer, Id>();
+
+ 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;
+ }
+}