/* | |
* 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.flow; | |
import static com.google.common.base.MoreObjects.toStringHelper; | |
/** | |
* Default flow entry class with FlowLiveType value, IMMEDIATE_FLOW, SHORT_FLOW, MID_FLOW, LONG_FLOW. | |
*/ | |
public class DefaultTypedFlowEntry extends DefaultFlowEntry | |
implements TypedStoredFlowEntry { | |
private FlowLiveType liveType; | |
/** | |
* Creates a typed flow entry from flow rule and its statistics, with default flow live type(IMMEDIATE_FLOW). | |
* | |
* @param rule the flow rule | |
* @param state the flow state | |
* @param life the flow duration since creation | |
* @param packets the flow packets count | |
* @param bytes the flow bytes count | |
* | |
*/ | |
public DefaultTypedFlowEntry(FlowRule rule, FlowEntryState state, | |
long life, long packets, long bytes) { | |
super(rule, state, life, packets, bytes); | |
this.liveType = FlowLiveType.IMMEDIATE_FLOW; | |
} | |
/** | |
* Creates a typed flow entry from flow rule, with default flow live type(IMMEDIATE_FLOW). | |
* | |
* @param rule the flow rule | |
* | |
*/ | |
public DefaultTypedFlowEntry(FlowRule rule) { | |
super(rule); | |
this.liveType = FlowLiveType.IMMEDIATE_FLOW; | |
} | |
/** | |
* Creates a typed flow entry from flow entry, with default flow live type(IMMEDIATE_FLOW). | |
* | |
* @param fe the flow entry | |
* | |
*/ | |
public DefaultTypedFlowEntry(FlowEntry fe) { | |
super(fe, fe.state(), fe.life(), fe.packets(), fe.bytes()); | |
this.liveType = FlowLiveType.IMMEDIATE_FLOW; | |
} | |
/** | |
* Creates a typed flow entry from flow rule and flow live type. | |
* | |
* @param rule the flow rule | |
* @param liveType the flow live type | |
* | |
*/ | |
public DefaultTypedFlowEntry(FlowRule rule, FlowLiveType liveType) { | |
super(rule); | |
this.liveType = liveType; | |
} | |
/** | |
* Creates a typed flow entry from flow entry and flow live type. | |
* | |
* @param fe the flow rule | |
* @param liveType the flow live type | |
* | |
*/ | |
public DefaultTypedFlowEntry(FlowEntry fe, FlowLiveType liveType) { | |
super(fe, fe.state(), fe.life(), fe.packets(), fe.bytes()); | |
this.liveType = liveType; | |
} | |
/** | |
* Creates a typed flow entry from flow rule, error code and flow live type. | |
* | |
* @param rule the flow rule | |
* @param errType the flow error type | |
* @param errCode the flow error code | |
* @param liveType the flow live type | |
* | |
*/ | |
public DefaultTypedFlowEntry(FlowRule rule, int errType, int errCode, FlowLiveType liveType) { | |
super(rule, errType, errCode); | |
this.liveType = liveType; | |
} | |
@Override | |
public FlowLiveType flowLiveType() { | |
return this.liveType; | |
} | |
@Override | |
public void setFlowLiveType(FlowLiveType liveType) { | |
this.liveType = liveType; | |
} | |
@Override | |
public String toString() { | |
return toStringHelper(this) | |
.add("entry", super.toString()) | |
.add("type", liveType) | |
.toString(); | |
} | |
} | |