net.floodlightcontroller.debugevent
Interface IDebugEventService

All Superinterfaces:
IFloodlightService
All Known Implementing Classes:
DebugEvent, NullDebugEvent

public interface IDebugEventService
extends IFloodlightService


Nested Class Summary
static class IDebugEventService.DebugEventInfo
          Public class for information returned in response to rest API calls.
static interface IDebugEventService.EventColumn
          EventColumn is the only annotation given to the fields of the event when updating an event.
static class IDebugEventService.EventFieldType
          Describes the type of field obtained from reflection
static class IDebugEventService.EventType
          Different event types.
static class IDebugEventService.MaxEventsRegistered
          exception thrown when MAX_EVENTS have been registered
 
Field Summary
static java.lang.String EV_MDATA_ERROR
           
static java.lang.String EV_MDATA_WARN
          Debug Event Qualifiers
static int MAX_EVENTS
          A limit on the maximum number of events that can be created
 
Method Summary
 boolean containsModuleEventName(java.lang.String moduleName, java.lang.String eventName)
          Determine if eventName is a registered event for a given moduleName
 boolean containsModuleName(java.lang.String moduleName)
          Determine if any events have been registered for module of name moduleName
 void flushEvents()
          Update the global event stores with values from the thread local stores.
 java.util.List<IDebugEventService.DebugEventInfo> getAllEventHistory()
          Get event history for all events.
 java.util.List<IDebugEventService.DebugEventInfo> getModuleEventHistory(java.lang.String moduleName)
          Get event history for all events registered for a given moduleName
 java.util.List<java.lang.String> getModuleEventList(java.lang.String moduleName)
          Returns a list of all events registered for a specific moduleName or a empty list
 java.util.List<java.lang.String> getModuleList()
          Retrieve a list of moduleNames registered for debug events or an empty list if no events have been registered in the system
 IDebugEventService.DebugEventInfo getSingleEventHistory(java.lang.String moduleName, java.lang.String eventName, int last)
          Get event history for a single event
<T> IEventUpdater<T>
registerEvent(java.lang.String moduleName, java.lang.String eventName, java.lang.String eventDescription, IDebugEventService.EventType eventType, java.lang.Class<T> eventClass, int bufferCapacity, java.lang.String... metaData)
          Register an event for debugging.
 void resetAllEvents()
          Wipe out all event history for all registered events
 void resetAllModuleEvents(java.lang.String moduleName)
          Wipe out all event history for all events registered for a specific module
 void resetSingleEvent(java.lang.String moduleName, java.lang.String eventName)
          Wipe out event history for a single event
 

Field Detail

EV_MDATA_WARN

static final java.lang.String EV_MDATA_WARN
Debug Event Qualifiers

See Also:
Constant Field Values

EV_MDATA_ERROR

static final java.lang.String EV_MDATA_ERROR
See Also:
Constant Field Values

MAX_EVENTS

static final int MAX_EVENTS
A limit on the maximum number of events that can be created

See Also:
Constant Field Values
Method Detail

registerEvent

<T> IEventUpdater<T> registerEvent(java.lang.String moduleName,
                                   java.lang.String eventName,
                                   java.lang.String eventDescription,
                                   IDebugEventService.EventType eventType,
                                   java.lang.Class<T> eventClass,
                                   int bufferCapacity,
                                   java.lang.String... metaData)
                               throws IDebugEventService.MaxEventsRegistered
Register an event for debugging.

Parameters:
moduleName - module registering event eg. linkdiscovery, virtualrouting.
eventName - name given to event.
eventDescription - A descriptive string describing the event.
eventType - EventType for this event. On-demand events have to be explicitly enabled using other methods in this API
eventClass - A user defined class that annotates the fields with @EventColumn. This class specifies the fields/columns for this event.
bufferCapacity - Number of events to store for this event in a circular buffer. Older events will be discarded once the buffer is full.
metaData - variable arguments that qualify an event eg. EV_MDATA_WARN, EV_MDATA_ERROR etc. See Debug Event Qualifiers
Returns:
IEventUpdater with update methods that can be used to update an event of the given eventClass
Throws:
IDebugEventService.MaxEventsRegistered

flushEvents

void flushEvents()
Update the global event stores with values from the thread local stores. This method is not typically intended for use by any module. It's typical usage is from floodlight core for events that happen in the packet processing pipeline. For other rare events, flushEvents should be called.


containsModuleEventName

boolean containsModuleEventName(java.lang.String moduleName,
                                java.lang.String eventName)
Determine if eventName is a registered event for a given moduleName


containsModuleName

boolean containsModuleName(java.lang.String moduleName)
Determine if any events have been registered for module of name moduleName


getAllEventHistory

java.util.List<IDebugEventService.DebugEventInfo> getAllEventHistory()
Get event history for all events. This call can be expensive as it formats the event histories for all events.

Returns:
a list of all event histories or an empty list if no events have been registered

getModuleEventHistory

java.util.List<IDebugEventService.DebugEventInfo> getModuleEventHistory(java.lang.String moduleName)
Get event history for all events registered for a given moduleName

Returns:
a list of all event histories for all events registered for the the module or an empty list if there are no events for this module

getSingleEventHistory

IDebugEventService.DebugEventInfo getSingleEventHistory(java.lang.String moduleName,
                                                        java.lang.String eventName,
                                                        int last)
Get event history for a single event

Parameters:
moduleName - registered module name
eventName - registered event name for moduleName
last - last X events
Returns:
DebugEventInfo for that event, or null if the moduleEventName does not correspond to a registered event.

resetAllEvents

void resetAllEvents()
Wipe out all event history for all registered events


resetAllModuleEvents

void resetAllModuleEvents(java.lang.String moduleName)
Wipe out all event history for all events registered for a specific module

Parameters:
moduleName - registered module name

resetSingleEvent

void resetSingleEvent(java.lang.String moduleName,
                      java.lang.String eventName)
Wipe out event history for a single event

Parameters:
moduleName - registered module name
eventName - registered event name for moduleName

getModuleList

java.util.List<java.lang.String> getModuleList()
Retrieve a list of moduleNames registered for debug events or an empty list if no events have been registered in the system


getModuleEventList

java.util.List<java.lang.String> getModuleEventList(java.lang.String moduleName)
Returns a list of all events registered for a specific moduleName or a empty list