net.jini.discovery
Class LookupDiscoveryManager.GroupDiscoveryListener

java.lang.Object
  extended by net.jini.discovery.LookupDiscoveryManager.LocatorDiscoveryListener
      extended by net.jini.discovery.LookupDiscoveryManager.GroupDiscoveryListener
All Implemented Interfaces:
EventListener, DiscoveryChangeListener, DiscoveryListener
Enclosing class:
LookupDiscoveryManager

private final class LookupDiscoveryManager.GroupDiscoveryListener
extends LookupDiscoveryManager.LocatorDiscoveryListener
implements DiscoveryChangeListener

Class that defines the listener that is registered with the LookupDiscovery that performs group discovery on behalf of this LookupDiscoveryManager.


Constructor Summary
private LookupDiscoveryManager.GroupDiscoveryListener()
           
 
Method Summary
 void changed(DiscoveryEvent e)
          Called by LookupDiscovery to send a changed event to this listener when that LookupDiscovery has determined that the member groups of a previously discovered registrar (reg) have changed.
 void discarded(DiscoveryEvent e)
          Called by LookupDiscovery to send a discarded event to this listener when one of the following events occurs affecting at least one registrar (reg) that was previously discovered through either group discovery alone, or through both group and locator discovery: The method LookupDiscovery.discard was called because the reg was determined to be unreachable.
 void discovered(DiscoveryEvent e)
          Called by LookupDiscovery to send a discovered event to this listener when that LookupDiscovery has discovered at least one registrar (reg) belonging to at least one of the groups desired by this LookupDiscoveryManager.
 
Methods inherited from class net.jini.discovery.LookupDiscoveryManager.LocatorDiscoveryListener
addDiscoveredSet, removeDiscoveredSet
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

LookupDiscoveryManager.GroupDiscoveryListener

private LookupDiscoveryManager.GroupDiscoveryListener()
Method Detail

discovered

public void discovered(DiscoveryEvent e)
Called by LookupDiscovery to send a discovered event to this listener when that LookupDiscovery has discovered at least one registrar (reg) belonging to at least one of the groups desired by this LookupDiscoveryManager. The reg(s) referenced in the given discovered event may, or may not, have also been previously discovered through locator discovery. If this LookupDiscoveryManager has no prior knowledge of a particular reg referenced in the given discovered event when the LookupDiscovery invokes this method, then this method will send to the listeners registered with this LookupDiscoveryManager, a discovered event referencing that reg; otherwise, depending on whether or not the set of member groups referenced in the given discovered event equal the member groups currently associated with the reg from that event, this method may send a changed event, or may simply update state and send no event at all.

Specified by:
discovered in interface DiscoveryListener
Overrides:
discovered in class LookupDiscoveryManager.LocatorDiscoveryListener
Parameters:
e - the event that describes the discovered registrars

discarded

public void discarded(DiscoveryEvent e)
Called by LookupDiscovery to send a discarded event to this listener when one of the following events occurs affecting at least one registrar (reg) that was previously discovered through either group discovery alone, or through both group and locator discovery:

Depending on the type of discarded event received from the LookupDiscovery as described above, and depending on whether the discarded reg was previously discovered by group discovery alone, or by both group and locator discovery, this method will determine whether to send a discarded event, a changed event, or no event at all. Note that because the discarded event was sent by the LookupDiscovery, the discarded reg could not have been previously discovered by locator discovery alone. Note also that even though a discarded event is received by this method, there are conditions in which a changed event is ultimately sent to the listeners registered with this LookupDiscoveryManager (see below). The following describes the logic used by this method to determine whether or not to send an event to the registered listeners of this LookupDiscoveryManager, as well as what type of event to send. Note that this method concludes that the current discarded event must be a communication discard when the the set of desired groups still intersects the discarded reg's current set of member groups. This is because when interest in the reg still exists, LookupDiscovery will discard the reg only when it has determined that the reg is unreachable. Thus, for a particular reg referenced in the given discarded event,

The logic described above can be collapsed into the following decision process:

      if(discovered by group discovery alone) {
          send discarded event
      } else {//discovered by both group and locator discovery
          if(NO LONGER interested in member groups) {
              if(member group have changed) {
                  send changed event
              }
          } else {//still interested in member groups
              call discard on LookupLocatorDiscovery
          }
      }
  

Specified by:
discarded in interface DiscoveryListener
Overrides:
discarded in class LookupDiscoveryManager.LocatorDiscoveryListener
Parameters:
e - the event that describes the discarded registrars

changed

public void changed(DiscoveryEvent e)
Called by LookupDiscovery to send a changed event to this listener when that LookupDiscovery has determined that the member groups of a previously discovered registrar (reg) have changed. This method extracts and records the appropriate information from the given changed event, and then sends a changed event to the appropriate listeners registered with this LookupDiscoveryManager.

Specified by:
changed in interface DiscoveryChangeListener
Parameters:
e - instance of net.jini.discovery.DiscoveryEvent representing the event that describes the lookup services whose discovery state has changed


Copyright 2007-2010, multiple authors.
Licensed under the Apache License, Version 2.0, see the NOTICE file for attributions.