blob: 776d24fdbebd832f9b8e68d33e263cc8c1482ed5 [file] [log] [blame]
Srikanth Vavilapalli56db94f2015-01-22 22:30:17 -08001/*
2 * Copyright 2015 Open Networking Laboratory
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package org.onosproject.net.group;
17
18import org.onosproject.core.GroupId;
19
20/**
21 * ONOS representation of group that is stored in the system.
22 */
23public interface Group extends GroupDescription {
24 /**
25 * State of the group object in ONOS.
Srikanth Vavilapalli56db94f2015-01-22 22:30:17 -080026 */
Sho SHIMIZU3310a342015-05-13 12:14:05 -070027 enum GroupState {
Srikanth Vavilapalli0599d512015-01-30 12:57:56 -080028 /**
Srikanth Vavilapalli45c27c82015-01-30 12:57:56 -080029 * Group create request is queued as group AUDIT is in progress.
30 */
31 WAITING_AUDIT_COMPLETE,
32 /**
Srikanth Vavilapalli0599d512015-01-30 12:57:56 -080033 * Group create request is processed by ONOS and not yet
34 * received the confirmation from data plane.
35 */
Srikanth Vavilapalli56db94f2015-01-22 22:30:17 -080036 PENDING_ADD,
Srikanth Vavilapalli0599d512015-01-30 12:57:56 -080037 /**
38 * Group is created in the data plane.
39 */
Srikanth Vavilapalli56db94f2015-01-22 22:30:17 -080040 ADDED,
Srikanth Vavilapalli0599d512015-01-30 12:57:56 -080041 /**
42 * Group update request is processed by ONOS and not
43 * received the confirmation from data plane post which
44 * state moves to ADDED state.
45 */
Srikanth Vavilapalli56db94f2015-01-22 22:30:17 -080046 PENDING_UPDATE,
Srikanth Vavilapalli0599d512015-01-30 12:57:56 -080047 /**
48 * Group delete request is processed by ONOS and not
49 * received the confirmation from data plane.
50 */
Srikanth Vavilapalli56db94f2015-01-22 22:30:17 -080051 PENDING_DELETE
52 }
53
54 /**
Srikanth Vavilapalli0599d512015-01-30 12:57:56 -080055 * Returns group identifier associated with a group object.
Srikanth Vavilapalli56db94f2015-01-22 22:30:17 -080056 *
57 * @return GroupId Group Identifier
58 */
Srikanth Vavilapalli0599d512015-01-30 12:57:56 -080059 GroupId id();
Srikanth Vavilapalli56db94f2015-01-22 22:30:17 -080060
61 /**
Srikanth Vavilapalli0599d512015-01-30 12:57:56 -080062 * Returns current state of a group object.
Srikanth Vavilapalli56db94f2015-01-22 22:30:17 -080063 *
64 * @return GroupState Group State
65 */
Srikanth Vavilapalli0599d512015-01-30 12:57:56 -080066 GroupState state();
Srikanth Vavilapalli56db94f2015-01-22 22:30:17 -080067
68 /**
69 * Returns the number of milliseconds this group has been alive.
70 *
71 * @return number of millis
72 */
73 long life();
74
75 /**
76 * Returns the number of packets processed by this group.
77 *
78 * @return number of packets
79 */
80 long packets();
81
82 /**
83 * Returns the number of bytes processed by this group.
84 *
85 * @return number of bytes
86 */
87 long bytes();
Srikanth Vavilapalli45c27c82015-01-30 12:57:56 -080088
89 /**
90 * Returns the number of flow rules or other groups reference this group.
91 *
92 * @return number of flow rules or other groups pointing to this group
93 */
94 long referenceCount();
Srikanth Vavilapalli56db94f2015-01-22 22:30:17 -080095}