blob: 0e4cac1371df4c537560859541a68fe4c40e82ac [file] [log] [blame]
/*
* 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.group;
import static org.slf4j.LoggerFactory.getLogger;
import org.onosproject.core.GroupId;
import org.slf4j.Logger;
/**
* ONOS implementation of default group that is stored in the system.
*/
public class DefaultGroup extends DefaultGroupDescription
implements Group, StoredGroupEntry {
private final Logger log = getLogger(getClass());
private GroupState state;
private long life;
private long packets;
private long bytes;
private GroupId id;
/**
* Default group object constructor with the parameters.
*
* @param id group identifier
* @param groupDesc group description parameters
*/
public DefaultGroup(GroupId id, GroupDescription groupDesc) {
super(groupDesc);
this.id = id;
this.state = GroupState.PENDING_ADD;
this.life = 0;
this.packets = 0;
this.bytes = 0;
}
/**
* Returns group identifier associated with a group object.
*
* @return GroupId Group Identifier
*/
@Override
public GroupId id() {
return this.id;
}
/**
* Returns current state of a group object.
*
* @return GroupState Group State
*/
@Override
public GroupState state() {
return this.state;
}
/**
* Returns the number of milliseconds this group has been alive.
*
* @return number of millis
*/
@Override
public long life() {
return this.life;
}
/**
* Returns the number of packets processed by this group.
*
* @return number of packets
*/
@Override
public long packets() {
return this.packets;
}
/**
* Returns the number of bytes processed by this group.
*
* @return number of bytes
*/
@Override
public long bytes() {
return this.bytes;
}
/**
* Sets the new state for this entry.
*
* @param newState new group entry state.
*/
@Override
public void setState(Group.GroupState newState) {
this.state = newState;
}
/**
* Sets how long this entry has been entered in the system.
*
* @param life epoch time
*/
@Override
public void setLife(long life) {
this.life = life;
}
/**
* Sets number of packets processed by this group entry.
*
* @param packets a long value
*/
@Override
public void setPackets(long packets) {
this.packets = packets;
}
/**
* Sets number of bytes processed by this group entry.
*
* @param bytes a long value
*/
@Override
public void setBytes(long bytes) {
this.bytes = bytes;
}
}