public abstract class OFController extends java.lang.Object implements IOFHandler, java.lang.Comparable<IOFHandler>
| Modifier and Type | Class and Description |
|---|---|
private class |
OFController.QI
Queue Item
|
private class |
OFController.QP
Queue Item Processor, which is a thread that pulls QI object
from the queue that is associated with the thread.
|
IOFHandler.Role| Modifier and Type | Field and Description |
|---|---|
private java.util.Set<OFModule> |
modules
set of all modules.
|
private OFController.QP[] |
processors
Queue Item Processors
|
private OFProtocol |
protocol |
private IOFHandler.Role |
role
role of this controller.
|
private IOFProtocolServer |
server
Protocol Server object, which is currently
TcpServer. |
private java.util.concurrent.ConcurrentHashMap<java.lang.Long,IOFSwitch> |
switches
index to all switches.
|
private java.util.Timer |
timer
Timer for scheduling asynchronous jobs.
|
| Constructor and Description |
|---|
OFController(int num_of_queue,
java.lang.String role)
OFController constructor.
|
| Modifier and Type | Method and Description |
|---|---|
void |
addModule(OFModule module)
This method is automatically called by
OFModule.init(IOFHandler). |
void |
addSwitch(long id,
IOFSwitch sw) |
int |
compareTo(IOFHandler o) |
java.lang.String |
getConcatenatedModuleNames()
get a String representation of all module names
linked with ','.
|
OFModel[] |
getModels()
This method returns all the
OFModel object
which are associated with this controller. |
java.lang.String[] |
getModuleNames()
get an array that holds all the module names associated with this controller.
|
java.util.Collection<OFModule> |
getModules()
get all the
OFModule objects associated with this controller. |
OFProtocol |
getProtocol() |
IOFHandler.Role |
getRole()
get the role of this controller.
|
IOFSwitch |
getSwitch(long id)
return a specific switch with a given identifier
|
java.util.Collection<IOFSwitch> |
getSwitches()
return the set of all switches
|
java.util.Set<java.lang.Long> |
getSwitchIdentifiers()
return the set of all switch identifiers
|
boolean |
handleConnectedEvent(Connection conn)
This callback is called when a new connection to a new switch is made.
|
boolean |
handleDisconnectEvent(Connection conn)
This callback is called when a connection to a switch is lost.
|
abstract boolean |
handleGeneric(Connection conn,
MessageContext context,
org.openflow.protocol.OFMessage m)
handle the other messages.
|
abstract boolean |
handlePacketIn(Connection conn,
MessageContext context,
org.openflow.protocol.OFMessage m)
handle Packet-in Message.
|
boolean |
handleReadEvent(Connection conn,
java.util.List<org.openflow.protocol.OFMessage> msgs)
This is a method that cannot be overridden.
|
abstract void |
init()
Every controller implementation that inherits OFController should implement this function
to handle all the chores related to the controller initialization.
|
void |
registerProtocolServer(IOFProtocolServer server)
Register a protocol server that actually handles the underlying bearer protocol.
|
void |
removeSelf()
This method is called by
OFController.QP.run() when a controller fails
to remove itself from the protocol server, which prevents this controller
from receiving other Openflow messages from the protocol server. |
void |
scheduleTask(IOFTask task,
long after)
Schedule a task to be executed after 'after'.
|
void |
shutdown()
Shutdown this OF Controller instance including all the Queue Processors
|
void |
start()
Start all Queue Processors.
|
private java.util.Timer timer
private java.util.concurrent.ConcurrentHashMap<java.lang.Long,IOFSwitch> switches
private java.util.Set<OFModule> modules
private IOFHandler.Role role
private OFController.QP[] processors
private IOFProtocolServer server
TcpServer.private OFProtocol protocol
public OFController(int num_of_queue,
java.lang.String role)
num_of_queue - number of Queue Item Processorspublic OFProtocol getProtocol()
getProtocol in interface IOFHandlerpublic abstract void init()
public IOFHandler.Role getRole()
getRole in interface IOFHandlerpublic void registerProtocolServer(IOFProtocolServer server)
registerProtocolServer in interface IOFHandlerpublic void removeSelf()
OFController.QP.run() when a controller fails
to remove itself from the protocol server, which prevents this controller
from receiving other Openflow messages from the protocol server.public void shutdown()
public void start()
public void scheduleTask(IOFTask task, long after)
scheduleTask in interface IOFHandlertask - after - re-schedule this task after 'after' milliseconds. If zero is given,
the task will start immediately, and never be repeated.public final boolean handleConnectedEvent(Connection conn)
handleConnectedEvent in interface IOFHandlerpublic abstract boolean handlePacketIn(Connection conn, MessageContext context, org.openflow.protocol.OFMessage m)
conn - underlying connectioncontext - m - Packet-in message.public abstract boolean handleGeneric(Connection conn, MessageContext context, org.openflow.protocol.OFMessage m)
conn - underlying connectioncontext - m - message which is not packet-in, hello, or echo request message.public final boolean handleReadEvent(Connection conn, java.util.List<org.openflow.protocol.OFMessage> msgs)
handleReadEvent in interface IOFHandlerpublic final java.util.Set<java.lang.Long> getSwitchIdentifiers()
getSwitchIdentifiers in interface IOFHandlerpublic final java.util.Collection<IOFSwitch> getSwitches()
getSwitches in interface IOFHandlerpublic final IOFSwitch getSwitch(long id)
getSwitch in interface IOFHandlerpublic void addSwitch(long id,
IOFSwitch sw)
addSwitch in interface IOFHandlerpublic final boolean handleDisconnectEvent(Connection conn)
handleDisconnectEvent in interface IOFHandlerpublic final void addModule(OFModule module)
OFModule.init(IOFHandler).
This method is for adding a module as a part of this controller object.addModule in interface IOFHandlerpublic final int compareTo(IOFHandler o)
compareTo in interface java.lang.Comparable<IOFHandler>public final OFModel[] getModels()
OFModel object
which are associated with this controller.
As an OFModel object is normally associated with
a OFModule object, this method calls OFModule.getModels() method
of each OFModule object in modules.getModels in interface IOFHandlerpublic final java.lang.String getConcatenatedModuleNames()
getConcatenatedModuleNames in interface IOFHandlerpublic final java.util.Collection<OFModule> getModules()
OFModule objects associated with this controller.getModules in interface IOFHandlerpublic final java.lang.String[] getModuleNames()
getModuleNames in interface IOFHandler