blob: 35719229030041737cf12c88478acda32cec674d [file] [log] [blame]
/*
* Copyright 2017-present Open Networking Foundation
*
* 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.l2monitoring.soam.delay;
import java.time.Duration;
import java.util.Collection;
import org.onosproject.incubator.net.l2monitoring.soam.SoamId;
/**
* Delay Measurement from ITU Y.1731 Chapter 8.2, MEF 17, MEF 36.1 and MEF 39.
*
* This represents the result returned and includes the parameters used to
* configure the DM when it was created
*/
public interface DelayMeasurementEntry extends DelayMeasurementCreate {
/**
* This uniquely identifies a scheduled measurement.
* It is automatically generated by the server on creation of a new measurement
* @return the id
*/
SoamId dmId();
/**
* The current status of the DM session.
* A value of 'active' indicates the current DM session is active,
* i.e. the current time lies between the start time and the stop time, and
* enabled is true. A value of 'not-active' indicates the current DM session
* is not active, i.e. it has not started yet, has stopped upon reaching the
* stop time, or is disabled
* @return the status
*/
SessionStatus sessionStatus();
/**
* The two-way frame delay calculated by this MEP from the last received SOAM PDU.
* This object is undefined is measurement-type is dm1-transmitted or dm1-received
* @return The delay as a java duration
*/
Duration frameDelayTwoWay();
/**
* The frame delay in the forward direction calculated by this MEP from the last received SOAM PDU.
* The value of this object may not be accurate in the absence of sufficiently
* precise clock synchronization.
* This object is undefined is measurement-type is dm1-transmitted
* @return The delay as a java duration
*/
Duration frameDelayForward();
/**
* The frame delay in the backward direction calculated by this MEP from the last received SOAM PDU.
* The value of this object may not be accurate in the absence of sufficiently
* precise clock synchronization.
* This object is undefined is measurement-type is dm1-transmitted or dm1-received
* @return The delay as a java duration
*/
Duration frameDelayBackward();
/**
* The last two-way inter-frame delay interval calculated by this MEP.
* The value of this object is undefined when measurement-type is dm1-transmitted or dm1-received
* @return The delay as a java duration
*/
Duration interFrameDelayVariationTwoWay();
/**
* The last one-way inter-frame delay interval in the forward direction calculated by this MEP.
* The value of this object is undefined when measurement-type is dm1-transmitted
* @return The delay as a java duration
*/
Duration interFrameDelayVariationForward();
/**
* The last one-way inter-frame delay interval in the backward direction calculated by this MEP.
* The value of this object is undefined when measurement-type is
* dm1-transmitted or dm1-received
* @return The delay as a java duration
*/
Duration interFrameDelayVariationBackward();
/**
* The results for the current Measurement Interval in a SOAM Delay Measurement session.
* gathered during the interval indicated by measurement-interval.
* @return The current set of results
*/
DelayMeasurementStatCurrent currentResult();
/**
* The results for history Measurement Intervals in a SOAM Delay Measurement session.
* @return A collection of history results
*/
Collection<DelayMeasurementStatHistory> historicalResults();
/**
* Builder for {@link org.onosproject.incubator.net.l2monitoring.soam.delay.DelayMeasurementEntry}.
*/
public interface DmEntryBuilder extends DmCreateBuilder {
DmEntryBuilder sessionStatus(SessionStatus sessionStatus);
DmEntryBuilder frameDelayTwoWay(Duration frameDelayTwoWay);
DmEntryBuilder frameDelayForward(Duration frameDelayForward);
DmEntryBuilder frameDelayBackward(Duration frameDelayBackward);
DmEntryBuilder interFrameDelayVariationTwoWay(Duration interFrameDelayVariationTwoWay);
DmEntryBuilder interFrameDelayVariationForward(Duration interFrameDelayVariationForward);
DmEntryBuilder interFrameDelayVariationBackward(Duration interFrameDelayVariationBackward);
DmEntryBuilder currentResult(DelayMeasurementStatCurrent currentResult);
DmEntryBuilder addToHistoricalResults(
DelayMeasurementStatHistory historicalResult);
DelayMeasurementEntry build();
}
/**
* Session Status options.
*/
public enum SessionStatus {
ACTIVE,
NOT_ACTIVE;
}
}