blob: 85dec0f371bffc7e0646659730052fd35548f54f [file] [log] [blame]
alshabib2a441c62015-04-13 18:39:38 -07001/*
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.flowobjective;
17
Thomas Vachuskaa9d491e2015-05-20 11:17:21 -070018import com.google.common.annotations.Beta;
alshabib2a441c62015-04-13 18:39:38 -070019import org.onosproject.net.behaviour.NextGroup;
20import org.onosproject.store.Store;
21
22/**
23 * The flow objective store.
24 */
Thomas Vachuskaa9d491e2015-05-20 11:17:21 -070025@Beta
alshabib2a441c62015-04-13 18:39:38 -070026public interface FlowObjectiveStore
27 extends Store<ObjectiveEvent, FlowObjectiveStoreDelegate> {
28
29 /**
Saurav Das423fe2b2015-12-04 10:52:59 -080030 * Adds a NextGroup to the store, by mapping it to the nextId as key,
31 * and replacing any previous mapping.
alshabib2a441c62015-04-13 18:39:38 -070032 *
33 * @param nextId an integer
34 * @param group a next group opaque object
35 */
36 void putNextGroup(Integer nextId, NextGroup group);
37
38 /**
39 * Fetch a next group from the store.
Saurav Das423fe2b2015-12-04 10:52:59 -080040 *
41 * @param nextId an integer used as key
42 * @return a next group, or null if group was not found
alshabib2a441c62015-04-13 18:39:38 -070043 */
44 NextGroup getNextGroup(Integer nextId);
alshabibf6ea9e62015-04-21 17:08:26 -070045
46 /**
Saurav Das423fe2b2015-12-04 10:52:59 -080047 * Remove a next group mapping from the store.
48 *
49 * @param nextId the key to remove from the store.
50 * @return the next group which mapped to the nextId and is now removed, or
51 * null if no group mapping existed in the store
52 */
53 NextGroup removeNextGroup(Integer nextId);
54
55 /**
alshabibf6ea9e62015-04-21 17:08:26 -070056 * Allocates a next objective id. This id is globally unique
57 *
58 * @return an integer
59 */
60 int allocateNextId();
alshabib2a441c62015-04-13 18:39:38 -070061}