network.detectors
Class FailureEventDetector

java.lang.Object
  |
  +--network.detectors.EventDetector
        |
        +--network.detectors.FailureEventDetector
All Implemented Interfaces:
java.lang.Runnable, java.io.Serializable
Direct Known Subclasses:
SMSFailureEventDetector

public class FailureEventDetector
extends EventDetector

The FailureEvent Detector can monitor agents and detectors for failure. A detector fails if its TTL expires. An agent fails if all its detectors have failed (TTLs expired). This detector generates FailureEvents.

See Also:
FailureEvent, Serialized Form

Field Summary
(package private)  java.util.Hashtable agentHashtable
           
(package private)  java.util.Hashtable booleanHashtable
           
protected  java.util.Hashtable checkPoint
           
(package private)  int count
           
private  java.lang.String[] defaultLocalTriggeringEvents
           
private  java.lang.String[] defaultRemoteTriggeringEvents
           
(package private)  java.util.Hashtable seqNumbersHashtable
           
(package private)  java.util.Hashtable subscriberHashtable
           
(package private)  int THRESHOLD
           
(package private)  long WRAP_AROUND
           
 
Fields inherited from class network.detectors.EventDetector
agentURN, attempts, cred, dbModule, eventIDGenerator, eventTable, host, localTriggeringEvents, printRunningThreadsFlag, remoteTriggeringEvents, reportTable
 
Constructor Summary
FailureEventDetector(java.util.Hashtable agentHashtable, ConfigObject configObj)
          The default constructor.
 
Method Summary
 network.events.Event createEvent(ajanta.naming.URN fieldAgentURN, java.util.Vector failedDetectorNames, int seq, java.util.Vector sourceURNList)
           
 java.util.Vector generateEvent(network.events.Event triggeredEvent)
          generateEvent checks to see if a FailureEvent should be generated.
private  int getDetectorThreshold(ajanta.naming.URN fieldAgentURN, java.lang.String detectorName)
          This method returns the number of times an event must occur before we generate a FailureEvent.
 java.lang.String getGeneratingEventClassName()
          Returns the fully-qualified classname of the event that this detector may generate.
private  void handleAgentAliveEvent(network.events.AgentAliveEvent agentAliveEvent)
           
private  java.util.Vector handleTimerEvent(network.events.TimerEvent timerEvent)
          e*
 void modifyDetector(java.lang.Object object)
          This method allows us to customize the detector.
private  void populateBooleanHashtable()
           
 
Methods inherited from class network.detectors.EventDetector
getAlarmLevel, getAlertLevel, getLocalTriggeringEventClassNames, getRemoteTriggeringEventClassNames, getSynchronizer, InitializeFields, modifyDetector, populatePatterns, printRunningThreads, run, setAgentURN, setAlarmLevel, setAlertLevel, setDB, setEventIDGenerator, setEventTable, setLocalTriggeringEvents, setRemoteTriggeringEvents, setReportTable, stopDetector, switchOffPrintRunningThreads
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

THRESHOLD

int THRESHOLD

agentHashtable

java.util.Hashtable agentHashtable

booleanHashtable

java.util.Hashtable booleanHashtable

subscriberHashtable

java.util.Hashtable subscriberHashtable

checkPoint

protected java.util.Hashtable checkPoint

count

int count

seqNumbersHashtable

java.util.Hashtable seqNumbersHashtable

WRAP_AROUND

long WRAP_AROUND

defaultLocalTriggeringEvents

private java.lang.String[] defaultLocalTriggeringEvents

defaultRemoteTriggeringEvents

private java.lang.String[] defaultRemoteTriggeringEvents
Constructor Detail

FailureEventDetector

public FailureEventDetector(java.util.Hashtable agentHashtable,
                            ConfigObject configObj)
The default constructor. Takes in a hashtable of agents and detectorStatus elements, each of which will be monitored for failure.

Parameters:
agentHashtable - hashtable, keys agent URNs, values, DetectorStatus vectors.
Method Detail

populateBooleanHashtable

private void populateBooleanHashtable()
Returns:

getGeneratingEventClassName

public java.lang.String getGeneratingEventClassName()
Returns the fully-qualified classname of the event that this detector may generate.

Specified by:
getGeneratingEventClassName in class EventDetector
Returns:
the fully-qualified classname of the event that this detector may generate.

generateEvent

public java.util.Vector generateEvent(network.events.Event triggeredEvent)
generateEvent checks to see if a FailureEvent should be generated. It may be triggered by TimerEvent or AgentAliveEvent. In the case of TimerEvent, we check to see if its Time To Live has expired; if it has, we generate a FailureEvent. In the case of AgentAliveEvent, we will reset the TTL to its default start state if the agent is not in its initial mode.

Specified by:
generateEvent in class EventDetector
Parameters:
triggeredEvent - the event that triggered this detector.
Returns:
the vector of generated FailureEvents.

handleTimerEvent

private java.util.Vector handleTimerEvent(network.events.TimerEvent timerEvent)
e*

Parameters:
timerEvent -
Returns:

createEvent

public network.events.Event createEvent(ajanta.naming.URN fieldAgentURN,
                                        java.util.Vector failedDetectorNames,
                                        int seq,
                                        java.util.Vector sourceURNList)

handleAgentAliveEvent

private void handleAgentAliveEvent(network.events.AgentAliveEvent agentAliveEvent)
Parameters:
agentAliveEvent -
Returns:

getDetectorThreshold

private int getDetectorThreshold(ajanta.naming.URN fieldAgentURN,
                                 java.lang.String detectorName)
This method returns the number of times an event must occur before we generate a FailureEvent.

Parameters:
fieldAgentURN - agent URN
detectorName - fully-qualified detector name
Returns:

modifyDetector

public void modifyDetector(java.lang.Object object)
This method allows us to customize the detector. If passed a ConfigurationChangeObject, the detector will try to add or delete detectors or agents to its monitoring state, based on the setup of the CCO.

Parameters:
object - the ConfigurationChangeObject that controls modification.
Returns:
See Also:
network.ConfigurationChangeObject