diff options
Diffstat (limited to 'framework/src/onos/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/DefaultTunnelStatistics.java')
-rw-r--r-- | framework/src/onos/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/DefaultTunnelStatistics.java | 168 |
1 files changed, 168 insertions, 0 deletions
diff --git a/framework/src/onos/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/DefaultTunnelStatistics.java b/framework/src/onos/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/DefaultTunnelStatistics.java new file mode 100644 index 00000000..6358ca92 --- /dev/null +++ b/framework/src/onos/incubator/api/src/main/java/org/onosproject/incubator/net/tunnel/DefaultTunnelStatistics.java @@ -0,0 +1,168 @@ +/* + * + * * Copyright 2015 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 java.time.Duration; +import java.util.List; + +/** + * Default implementation of immutable tunnel statistics. + */ +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); + } + } +} |