blob: 1bd656022d257cac1508eb80e064b79e03fbfdbc [file] [log] [blame]
Umesh Krishnaswamy345ee992012-12-13 20:29:48 -08001/**
2* Copyright 2011, Big Switch Networks, Inc.
3* Originally created by David Erickson, Stanford University
4*
5* Licensed under the Apache License, Version 2.0 (the "License"); you may
6* not use this file except in compliance with the License. You may obtain
7* a copy of the License at
8*
9* http://www.apache.org/licenses/LICENSE-2.0
10*
11* Unless required by applicable law or agreed to in writing, software
12* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14* License for the specific language governing permissions and limitations
15* under the License.
16**/
17
18package net.floodlightcontroller.core;
19
20public interface IListener<T> {
21 public enum Command {
22 CONTINUE, STOP
23 }
24
25 /**
26 * The name assigned to this listener
27 * @return
28 */
29 public String getName();
30
31 /**
32 * Check if the module called name is a callback ordering prerequisite
33 * for this module. In other words, if this function returns true for
34 * the given name, then this message listener will be called after that
35 * message listener.
36 * @param type the message type to which this applies
37 * @param name the name of the module
38 * @return whether name is a prerequisite.
39 */
40 public boolean isCallbackOrderingPrereq(T type, String name);
41
42 /**
43 * Check if the module called name is a callback ordering post-requisite
44 * for this module. In other words, if this function returns true for
45 * the given name, then this message listener will be called before that
46 * message listener.
47 * @param type the message type to which this applies
48 * @param name the name of the module
49 * @return whether name is a post-requisite.
50 */
51 public boolean isCallbackOrderingPostreq(T type, String name);
52}