blob: 17925a5e184cc0e0c9e45e76afc0777ef9e980eb [file] [log] [blame]
Umesh Krishnaswamy345ee992012-12-13 20:29:48 -08001/**
Ray Milkey269ffb92014-04-03 14:43:30 -07002 * 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 **/
Umesh Krishnaswamy345ee992012-12-13 20:29:48 -080017
18package net.floodlightcontroller.core;
19
20public interface IListener<T> {
21 public enum Command {
22 CONTINUE, STOP
23 }
Ray Milkey269ffb92014-04-03 14:43:30 -070024
Umesh Krishnaswamy345ee992012-12-13 20:29:48 -080025 /**
26 * The name assigned to this listener
Ray Milkey269ffb92014-04-03 14:43:30 -070027 *
Jonathan Hart99ff20a2014-06-15 16:53:00 -070028 * @return the name of the listener
Umesh Krishnaswamy345ee992012-12-13 20:29:48 -080029 */
30 public String getName();
31
32 /**
33 * Check if the module called name is a callback ordering prerequisite
Ray Milkey269ffb92014-04-03 14:43:30 -070034 * for this module. In other words, if this function returns true for
Umesh Krishnaswamy345ee992012-12-13 20:29:48 -080035 * the given name, then this message listener will be called after that
36 * message listener.
Ray Milkey269ffb92014-04-03 14:43:30 -070037 *
Umesh Krishnaswamy345ee992012-12-13 20:29:48 -080038 * @param type the message type to which this applies
39 * @param name the name of the module
40 * @return whether name is a prerequisite.
41 */
42 public boolean isCallbackOrderingPrereq(T type, String name);
43
44 /**
45 * Check if the module called name is a callback ordering post-requisite
Ray Milkey269ffb92014-04-03 14:43:30 -070046 * for this module. In other words, if this function returns true for
Umesh Krishnaswamy345ee992012-12-13 20:29:48 -080047 * the given name, then this message listener will be called before that
48 * message listener.
Ray Milkey269ffb92014-04-03 14:43:30 -070049 *
Umesh Krishnaswamy345ee992012-12-13 20:29:48 -080050 * @param type the message type to which this applies
51 * @param name the name of the module
52 * @return whether name is a post-requisite.
53 */
54 public boolean isCallbackOrderingPostreq(T type, String name);
55}