All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.onosproject.net.device.DefaultPortStatistics Maven / Gradle / Ivy

There is a newer version: 2.7.0
Show newest version
/*
 * 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.net.device;

import org.onosproject.net.DeviceId;

/**
 * Default implementation of immutable port statistics.
 */
public final class DefaultPortStatistics implements PortStatistics {

    private final DeviceId deviceId;
    private final int  port;
    private final long packetsReceived;
    private final long packetsSent;
    private final long bytesReceived;
    private final long bytesSent;
    private final long packetsRxDropped;
    private final long packetsTxDropped;
    private final long packetsRxErrors;
    private final long packetsTxErrors;
    private final long durationSec;
    private final long durationNano;

    private DefaultPortStatistics(DeviceId deviceId,
                                  int  port,
                                  long packetsReceived,
                                  long packetsSent,
                                  long bytesReceived,
                                  long bytesSent,
                                  long packetsRxDropped,
                                  long packetsTxDropped,
                                  long packetsRxErrors,
                                  long packetsTxErrors,
                                  long durationSec,
                                  long durationNano) {
        this.deviceId = deviceId;
        this.port = port;
        this.packetsReceived = packetsReceived;
        this.packetsSent = packetsSent;
        this.bytesReceived = bytesReceived;
        this.bytesSent = bytesSent;
        this.packetsRxDropped = packetsRxDropped;
        this.packetsTxDropped = packetsTxDropped;
        this.packetsRxErrors = packetsRxErrors;
        this.packetsTxErrors = packetsTxErrors;
        this.durationSec = durationSec;
        this.durationNano = durationNano;
    }

    // Constructor for serializer
    private DefaultPortStatistics() {
        this.deviceId = null;
        this.port = 0;
        this.packetsReceived = 0;
        this.packetsSent = 0;
        this.bytesReceived = 0;
        this.bytesSent = 0;
        this.packetsRxDropped = 0;
        this.packetsTxDropped = 0;
        this.packetsRxErrors = 0;
        this.packetsTxErrors = 0;
        this.durationSec = 0;
        this.durationNano = 0;
    }

    /**
     * Creates a builder for DefaultPortStatistics object.
     *
     * @return builder object for DefaultPortStatistics object
     */
    public static DefaultPortStatistics.Builder builder() {
        return new Builder();
    }

    @Override
    public int port() {
        return this.port;
    }

    @Override
    public long packetsReceived() {
        return this.packetsReceived;
    }

    @Override
    public long packetsSent() {
        return this.packetsSent;
    }

    @Override
    public long bytesReceived() {
        return this.bytesReceived;
    }

    @Override
    public long bytesSent() {
        return this.bytesSent;
    }

    @Override
    public long packetsRxDropped() {
        return this.packetsRxDropped;
    }

    @Override
    public long packetsTxDropped() {
        return this.packetsTxDropped;
    }

    @Override
    public long packetsRxErrors() {
        return this.packetsRxErrors;
    }

    @Override
    public long packetsTxErrors() {
        return this.packetsTxErrors;
    }

    @Override
    public long durationSec() {
        return this.durationSec;
    }

    @Override
    public long durationNano() {
        return this.durationNano;
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder("device: " + deviceId + ", ");

        sb.append("port: " + this.port + ", ");
        sb.append("pktRx: " + this.packetsReceived + ", ");
        sb.append("pktTx: " + this.packetsSent + ", ");
        sb.append("byteRx: " + this.bytesReceived + ", ");
        sb.append("byteTx: " + this.bytesSent + ", ");
        sb.append("pktRxErr: " + this.packetsRxErrors + ", ");
        sb.append("pktTxErr: " + this.packetsTxErrors + ", ");
        sb.append("pktRxDrp: " + this.packetsRxDropped + ", ");
        sb.append("pktTxDrp: " + this.packetsTxDropped);

        return sb.toString();
    }

    public static final class Builder {

        DeviceId deviceId;
        int port;
        long packetsReceived;
        long packetsSent;
        long bytesReceived;
        long bytesSent;
        long packetsRxDropped;
        long packetsTxDropped;
        long packetsRxErrors;
        long packetsTxErrors;
        long durationSec;
        long durationNano;

        private Builder() {

        }

        /**
         * Sets port number.
         *
         * @param port port number
         * @return builder object
         */
        public Builder setPort(int port) {
            this.port = port;

            return this;
        }

        /**
         * Sets the device identifier.
         *
         * @param deviceId device identifier
         * @return builder object
         */
        public Builder setDeviceId(DeviceId deviceId) {
            this.deviceId = deviceId;

            return this;
        }

        /**
         * Sets the number of packet received.
         *
         * @param packets number of packets received
         * @return  builder object
         */
        public Builder setPacketsReceived(long packets) {
            packetsReceived = packets;

            return this;
        }

        /**
         * Sets the number of packets sent.
         *
         * @param packets number of packets sent
         * @return  builder object
         */
        public Builder setPacketsSent(long packets) {
            packetsSent = packets;

            return this;
        }

        /**
         * Sets the number of received bytes.
         *
         * @param bytes number of received bytes.
         * @return  builder object
         */
        public Builder setBytesReceived(long bytes) {
            bytesReceived = bytes;

            return this;
        }

        /**
         * Sets the number of sent bytes.
         *
         * @param bytes number of sent bytes
         * @return builder object
         */
        public Builder setBytesSent(long bytes) {
            bytesSent = bytes;

            return this;
        }

        /**
         * Sets the number of packets dropped by RX.
         *
         * @param packets  number of packets dropped by RX
         * @return builder object
         */
        public Builder setPacketsRxDropped(long packets) {
            packetsRxDropped = packets;

            return this;
        }

        /**
         * Sets the number of packets dropped by TX.
         *
         * @param packets number of packets
         * @return builder object
         */
        public Builder setPacketsTxDropped(long packets) {
            packetsTxDropped = packets;

            return this;
        }

        /**
         * Sets the number of receive errors.
         *
         * @param packets number of receive errors
         * @return builder object
         */
        public Builder setPacketsRxErrors(long packets) {
            packetsRxErrors = packets;

            return this;
        }

        /**
         * Sets the number of transmit errors.
         *
         * @param packets number of transmit errors
         * @return builder object
         */
        public Builder setPacketsTxErrors(long packets) {
            packetsTxErrors = packets;

            return this;
        }

        /**
         * Sets the time port has been alive in seconds.
         *
         * @param sec time port has been alive in seconds
         * @return builder object
         */
        public Builder setDurationSec(long sec) {
            durationSec = sec;

            return this;
        }

        /**
         * Sets the time port has been alive in nano seconds.
         *
         * @param nano time port has been alive in nano seconds
         * @return builder object
         */
        public Builder setDurationNano(long nano) {
            durationNano = nano;

            return this;
        }

        /**
         * Creates a PortStatistics object.
         *
         * @return DefaultPortStatistics object
         */
        public DefaultPortStatistics build() {
            return new DefaultPortStatistics(
                    deviceId,
                    port,
                    packetsReceived,
                    packetsSent,
                    bytesReceived,
                    bytesSent,
                    packetsRxDropped,
                    packetsTxDropped,
                    packetsRxErrors,
                    packetsTxErrors,
                    durationSec,
                    durationNano);
        }

    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy