groupmgmt.impl
Class BeaconingDetector

java.lang.Object
  |
  +--groupmgmt.MemberDetector
        |
        +--groupmgmt.impl.BeaconingDetector
All Implemented Interfaces:
groupmgmt.impl.BeaconListener, java.util.EventListener, GroupChangedListener

public class BeaconingDetector
extends MemberDetector
implements groupmgmt.impl.BeaconListener, GroupChangedListener

The BeaconingDetector class; Detects members based on beacons, using a BeaconServer. If a new beacon is received, reportChange is called and it passes the change on to the Disseminator. No additional filtering is done. If a beacon is received with 'stopping' set, then reportChange is called to remove the member. This class is also in charge of multicasting beacons to its neighbors.
Everything here is done locally, there is no need for a MemberDetector leader because all Members act the same. (It would be possible to implement a less chatty [fewer beacons] and thus more scalable model by designating a MemberDetector leader.)
Uses: MemberBeacon, BeaconEvent, BeaconListener, BeaconServer.

Version:
July 2003
Author:
Christine Julien, Tom Elgin

Fields inherited from class groupmgmt.MemberDetector
disseminator
 
Constructor Summary
BeaconingDetector(int beaconPort, java.lang.String beaconAddress, int beaconPeriod)
          Constructor.
 
Method Summary
 void groupChanged(GroupChangedEvent evt)
          Implements the GroupChangedListener interface.
 void newMemberBeacon(groupmgmt.impl.BeaconEvent memberBeaconEvent)
          Implements the BeaconListener interface.
 void setDebug(boolean debugging)
          Determine whether to output logging messages.
protected  void start()
          Begin looking for changes in the group (hosts to engage/disengage with) and start sending beacons.
protected  void stop()
          Stop reporting changes in the group, stop looking for beacons, and stop sending beacons.
 
Methods inherited from class groupmgmt.MemberDetector
isActive, reportChange
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

BeaconingDetector

public BeaconingDetector(int beaconPort,
                         java.lang.String beaconAddress,
                         int beaconPeriod)
Constructor. Sets the beaconing parameters and initializes the BeaconServer. This does NOT start the BeaconServer, activate() must be called.
Parameters:
beaconPort - The port to multicast beacons to at 230.0.0.1.
beaconAddress - The multicast address to send beacons to.
beaconPeriod - How often to send beacons (milliseconds).
Method Detail

setDebug

public void setDebug(boolean debugging)
Determine whether to output logging messages.
Parameters:
debugging - Outputs messages if true.

start

protected void start()
Begin looking for changes in the group (hosts to engage/disengage with) and start sending beacons.
Overrides:
start in class MemberDetector

stop

protected void stop()
Stop reporting changes in the group, stop looking for beacons, and stop sending beacons. Blocks until we have been removed from the group.
Overrides:
stop in class MemberDetector

groupChanged

public void groupChanged(GroupChangedEvent evt)
Implements the GroupChangedListener interface. Only used while stopping. If the new group I'm in is just me, then I've successfully stopped.
Specified by:
groupChanged in interface GroupChangedListener
Parameters:
evt - The GroupChangedEvent.

newMemberBeacon

public void newMemberBeacon(groupmgmt.impl.BeaconEvent memberBeaconEvent)
Implements the BeaconListener interface. Updates the neighbors table and adds or removes neighbors based on whether they're stopping or not.
Specified by:
newMemberBeacon in interface groupmgmt.impl.BeaconListener
Parameters:
memberBeaconEvent - The event generated by the receipt of the new beacon.