blob: a5e85b2a71bd9249d0183d26708842a5961cea40 [file] [log] [blame]
/*
* Copyright 2014-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.net.statistic;
import org.onosproject.net.ConnectPoint;
import org.onosproject.net.flow.FlowEntry;
import org.onosproject.net.flow.StoredFlowEntry;
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkNotNull;
/**
* Load of flow entry with flow live type.
*/
public class FlowEntryWithLoad {
private final ConnectPoint cp;
private final FlowEntry fe;
private final Load load;
/**
* Creates a new flow entry with load.
*
* @param cp connect point
* @param fe flow entry with live type
* @param load load
*/
public FlowEntryWithLoad(ConnectPoint cp, FlowEntry fe, Load load) {
checkArgument(fe instanceof StoredFlowEntry, "FlowEntry must be StoredFlowEntry class type");
this.cp = cp;
this.fe = fe;
this.load = load;
}
/**
* Creates a new flow entry with load.
*
* @param cp connect point
* @param fe flow entry with live type
*/
public FlowEntryWithLoad(ConnectPoint cp, FlowEntry fe) {
checkArgument(fe instanceof StoredFlowEntry, "FlowEntry must be StoredFlowEntry class type");
this.cp = cp;
this.fe = fe;
this.load = new DefaultLoad(fe.bytes(), 0, typedPollInterval(fe));
}
/**
* Returns connect point.
*
* @return connect point
*/
public ConnectPoint connectPoint() {
return cp;
}
/**
* Returns stored flow entry.
*
* @return flow entry
*/
public StoredFlowEntry storedFlowEntry() {
return (StoredFlowEntry) fe;
}
/**
* Returns current load.
*
* @return load
*/
public Load load() {
return load;
}
/**
* Returns current flow entry's polling interval.
*
* @param fe flow entry
* @return poll interval time unit in seconds
*/
private long typedPollInterval(FlowEntry fe) {
checkNotNull(fe, "FlowEntry cannot be null");
PollInterval pollIntervalInstance = PollInterval.getInstance();
switch (fe.liveType()) {
case LONG:
return pollIntervalInstance.getLongPollInterval();
case MID:
return pollIntervalInstance.getMidPollInterval();
case SHORT:
case IMMEDIATE:
case UNKNOWN:
default:
return pollIntervalInstance.getPollInterval();
}
}
}