blob: 544077522be1fdfdea030ae5793145ecee8248b2 [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 /**
Srikanth Vavilapalli5428b6c2015-05-14 20:22:47 -070038 * Group is missing in data plane and retrying GROUP ADD request.
39 */
40 PENDING_ADD_RETRY,
41 /**
Srikanth Vavilapalli0599d512015-01-30 12:57:56 -080042 * Group is created in the data plane.
43 */
Srikanth Vavilapalli56db94f2015-01-22 22:30:17 -080044 ADDED,
Srikanth Vavilapalli0599d512015-01-30 12:57:56 -080045 /**
46 * Group update request is processed by ONOS and not
47 * received the confirmation from data plane post which
48 * state moves to ADDED state.
49 */
Srikanth Vavilapalli56db94f2015-01-22 22:30:17 -080050 PENDING_UPDATE,
Srikanth Vavilapalli0599d512015-01-30 12:57:56 -080051 /**
52 * Group delete request is processed by ONOS and not
53 * received the confirmation from data plane.
54 */
Srikanth Vavilapalli56db94f2015-01-22 22:30:17 -080055 PENDING_DELETE
56 }
57
58 /**
Srikanth Vavilapalli0599d512015-01-30 12:57:56 -080059 * Returns group identifier associated with a group object.
Srikanth Vavilapalli56db94f2015-01-22 22:30:17 -080060 *
61 * @return GroupId Group Identifier
62 */
Srikanth Vavilapalli0599d512015-01-30 12:57:56 -080063 GroupId id();
Srikanth Vavilapalli56db94f2015-01-22 22:30:17 -080064
65 /**
Srikanth Vavilapalli0599d512015-01-30 12:57:56 -080066 * Returns current state of a group object.
Srikanth Vavilapalli56db94f2015-01-22 22:30:17 -080067 *
68 * @return GroupState Group State
69 */
Srikanth Vavilapalli0599d512015-01-30 12:57:56 -080070 GroupState state();
Srikanth Vavilapalli56db94f2015-01-22 22:30:17 -080071
72 /**
73 * Returns the number of milliseconds this group has been alive.
74 *
75 * @return number of millis
76 */
77 long life();
78
79 /**
80 * Returns the number of packets processed by this group.
81 *
82 * @return number of packets
83 */
84 long packets();
85
86 /**
87 * Returns the number of bytes processed by this group.
88 *
89 * @return number of bytes
90 */
91 long bytes();
Srikanth Vavilapalli45c27c82015-01-30 12:57:56 -080092
93 /**
94 * Returns the number of flow rules or other groups reference this group.
95 *
96 * @return number of flow rules or other groups pointing to this group
97 */
98 long referenceCount();
Srikanth Vavilapalli56db94f2015-01-22 22:30:17 -080099}