| /* |
| * Copyright 2015-present Open Networking Laboratory |
| * |
| * 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 org.onosproject.incubator.net.tunnel; |
| |
| import com.google.common.annotations.Beta; |
| |
| import java.time.Duration; |
| import java.util.List; |
| |
| /** |
| * Default implementation of immutable tunnel statistics. |
| */ |
| @Beta |
| public final class DefaultTunnelStatistics implements TunnelStatistics { |
| private final TunnelId tunnelId; |
| private final double bwUtilization; |
| private final double packetLossRatio; |
| private final Duration flowDelay; |
| private final List<String> alarms; |
| |
| private DefaultTunnelStatistics(TunnelId tunnelId, |
| double bwUtilization, |
| double packetLossRatio, |
| Duration flowDelay, |
| List<String> alarms) { |
| this.tunnelId = tunnelId; |
| this.bwUtilization = bwUtilization; |
| this.packetLossRatio = packetLossRatio; |
| this.flowDelay = flowDelay; |
| this.alarms = alarms; |
| } |
| |
| private DefaultTunnelStatistics() { |
| this.tunnelId = null; |
| this.bwUtilization = 0; |
| this.packetLossRatio = 0; |
| this.flowDelay = null; |
| this.alarms = null; |
| } |
| |
| |
| @Override |
| public TunnelId id() { |
| return this.tunnelId; |
| } |
| |
| @Override |
| public double bandwidthUtilization() { |
| return this.bwUtilization; |
| } |
| |
| @Override |
| public double packetLossRate() { |
| return this.packetLossRatio; |
| } |
| |
| @Override |
| public Duration flowDelay() { |
| return this.flowDelay; |
| } |
| |
| |
| @Override |
| public List<String> alarms() { |
| return this.alarms; |
| } |
| |
| /** |
| * Builder for tunnelStatistics. |
| */ |
| public static final class Builder { |
| TunnelId tunnelId; |
| double bwUtilization; |
| double packetLossRatio; |
| Duration flowDelay; |
| List<String> alarms; |
| |
| public Builder() { |
| |
| } |
| |
| /** |
| * Set tunnel id. |
| * |
| * @param tunnelId tunnel id |
| * @return builder object |
| */ |
| public Builder setTunnelId(TunnelId tunnelId) { |
| this.tunnelId = tunnelId; |
| |
| return this; |
| } |
| |
| /** |
| * set bandwidth utilization. |
| * |
| * @param bwUtilization bandwidth utilization |
| * @return builder object |
| */ |
| public Builder setBwUtilization(double bwUtilization) { |
| this.bwUtilization = bwUtilization; |
| |
| return this; |
| } |
| |
| /** |
| * Set packet loss ratio. |
| * |
| * @param packetLossRatio packet loss ratio |
| * @return builder object |
| */ |
| public Builder setPacketLossRatio(double packetLossRatio) { |
| this.packetLossRatio = packetLossRatio; |
| |
| return this; |
| } |
| |
| /** |
| * Set flow delay. |
| * |
| * @param flowDelay flow delay |
| * @return builder object |
| */ |
| public Builder setFlowDelay(Duration flowDelay) { |
| this.flowDelay = flowDelay; |
| |
| return this; |
| } |
| |
| /** |
| * Set alarms. |
| * |
| * @param alarms alarms of a tunnel |
| * @return builder object |
| */ |
| public Builder setAlarms(List<String> alarms) { |
| this.alarms = alarms; |
| |
| return this; |
| } |
| |
| /** |
| * Creates a TunnelStatistics object. |
| * |
| * @return DefaultTunnelStatistics |
| */ |
| public DefaultTunnelStatistics build() { |
| return new DefaultTunnelStatistics(tunnelId, |
| bwUtilization, |
| packetLossRatio, |
| flowDelay, |
| alarms); |
| } |
| } |
| } |