| /* |
| * Copyright 2016-17, 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.trace; |
| |
| import com.google.auto.value.AutoValue; |
| import io.opencensus.common.Timestamp; |
| import io.opencensus.internal.Utils; |
| import javax.annotation.Nullable; |
| import javax.annotation.concurrent.Immutable; |
| |
| /** |
| * A class that represents a network event. It requires a {@link Type type} and a message id that |
| * serves to uniquely identify each network message. It can optionally can have information about |
| * the kernel time and message size. |
| * |
| * @deprecated Use {@link MessageEvent}. |
| * @since 0.5 |
| */ |
| @Immutable |
| @AutoValue |
| @AutoValue.CopyAnnotations |
| @Deprecated |
| public abstract class NetworkEvent extends io.opencensus.trace.BaseMessageEvent { |
| /** |
| * Available types for a {@code NetworkEvent}. |
| * |
| * @since 0.5 |
| */ |
| public enum Type { |
| /** |
| * When the message was sent. |
| * |
| * @since 0.5 |
| */ |
| SENT, |
| /** |
| * When the message was received. |
| * |
| * @since 0.5 |
| */ |
| RECV, |
| } |
| |
| /** |
| * Returns a new {@link Builder} with default values. |
| * |
| * @param type designates whether this is a network send or receive message. |
| * @param messageId serves to uniquely identify each network message. |
| * @return a new {@code Builder} with default values. |
| * @throws NullPointerException if {@code type} is {@code null}. |
| * @since 0.5 |
| */ |
| public static Builder builder(Type type, long messageId) { |
| return new AutoValue_NetworkEvent.Builder() |
| .setType(Utils.checkNotNull(type, "type")) |
| .setMessageId(messageId) |
| // We need to set a value for the message size because the autovalue requires all |
| // primitives to be initialized. |
| .setUncompressedMessageSize(0) |
| .setCompressedMessageSize(0); |
| } |
| |
| /** |
| * Returns the kernel timestamp associated with the {@code NetworkEvent} or {@code null} if not |
| * set. |
| * |
| * @return the kernel timestamp associated with the {@code NetworkEvent} or {@code null} if not |
| * set. |
| * @since 0.5 |
| */ |
| @Nullable |
| public abstract Timestamp getKernelTimestamp(); |
| |
| /** |
| * Returns the type of the {@code NetworkEvent}. |
| * |
| * @return the type of the {@code NetworkEvent}. |
| * @since 0.5 |
| */ |
| public abstract Type getType(); |
| |
| /** |
| * Returns the message id argument that serves to uniquely identify each network message. |
| * |
| * @return the message id of the {@code NetworkEvent}. |
| * @since 0.5 |
| */ |
| public abstract long getMessageId(); |
| |
| /** |
| * Returns the uncompressed size in bytes of the {@code NetworkEvent}. |
| * |
| * @return the uncompressed size in bytes of the {@code NetworkEvent}. |
| * @since 0.6 |
| */ |
| public abstract long getUncompressedMessageSize(); |
| |
| /** |
| * Returns the compressed size in bytes of the {@code NetworkEvent}. |
| * |
| * @return the compressed size in bytes of the {@code NetworkEvent}. |
| * @since 0.6 |
| */ |
| public abstract long getCompressedMessageSize(); |
| |
| /** |
| * Returns the uncompressed size in bytes of the {@code NetworkEvent}. |
| * |
| * @deprecated Use {@link #getUncompressedMessageSize}. |
| * @return the uncompressed size in bytes of the {@code NetworkEvent}. |
| * @since 0.5 |
| */ |
| @Deprecated |
| public long getMessageSize() { |
| return getUncompressedMessageSize(); |
| } |
| |
| /** |
| * Builder class for {@link NetworkEvent}. |
| * |
| * @deprecated {@link NetworkEvent} is deprecated. Please use {@link MessageEvent} and its builder |
| * {@link MessageEvent.Builder}. |
| * @since 0.5 |
| */ |
| @AutoValue.Builder |
| @Deprecated |
| public abstract static class Builder { |
| // Package protected methods because these values are mandatory and set only in the |
| // NetworkEvent#builder() function. |
| abstract Builder setType(Type type); |
| |
| abstract Builder setMessageId(long messageId); |
| |
| /** |
| * Sets the kernel timestamp. |
| * |
| * @param kernelTimestamp The kernel timestamp of the event. |
| * @return this. |
| * @since 0.5 |
| */ |
| public abstract Builder setKernelTimestamp(@Nullable Timestamp kernelTimestamp); |
| |
| /** |
| * Sets the uncompressed message size. |
| * |
| * @deprecated Use {@link #setUncompressedMessageSize}. |
| * @param messageSize represents the uncompressed size in bytes of this message. |
| * @return this. |
| * @since 0.5 |
| */ |
| @Deprecated |
| public Builder setMessageSize(long messageSize) { |
| return setUncompressedMessageSize(messageSize); |
| } |
| |
| /** |
| * Sets the uncompressed message size. |
| * |
| * @param uncompressedMessageSize represents the uncompressed size in bytes of this message. |
| * @return this. |
| * @since 0.6 |
| */ |
| public abstract Builder setUncompressedMessageSize(long uncompressedMessageSize); |
| |
| /** |
| * Sets the compressed message size. |
| * |
| * @param compressedMessageSize represents the compressed size in bytes of this message. |
| * @return this. |
| * @since 0.6 |
| */ |
| public abstract Builder setCompressedMessageSize(long compressedMessageSize); |
| |
| /** |
| * Builds and returns a {@code NetworkEvent} with the desired values. |
| * |
| * @return a {@code NetworkEvent} with the desired values. |
| * @since 0.5 |
| */ |
| public abstract NetworkEvent build(); |
| |
| Builder() {} |
| } |
| |
| NetworkEvent() {} |
| } |