Class ActiveElectionManager

java.lang.Object
com.gigaspaces.cluster.activeelection.core.ActiveElectionManager

public class ActiveElectionManager extends Object
ActiveElectionManager based on distributed naming service INamingService and provides a distributed active election algorithm to select only one active service between all candidates.

NOTE: The manage service must provide consistent equals() method implementation or implement ReferentUuid interface. Example:

  
   public class ServiceIDOrderFilter
     implements IActiveElectionDecisionFilter
   {
         ServiceID _srvID;

    public boolean isAcceptable(ActiveElectionState.State advanceState, List
candidateSrv )
    {
      for( ServiceItem srvItem : candidateSrv )
      {
       // return true if _srvID is the greater from all candidateSrv.serviceID;
      }
    }
   }

   public class ElectionListener
                implements IActiveElectionListener
   {
     ActiveElectionManager _electManager;

     public void onActive( ActiveElectionEvent event )
     {
       System.out.println("OnActive -> Elected Active: " + event.getActiveServiceItem() );

       if ( _electManager.getState() == ActiveElectionState.State.ACTIVE )
         System.out.println("The manage service is an ACTIVE");
       else
         System.out.println("The manage service is an NOT an ACTIVE");

      }

      public void onSplitBrain( ActiveElectionEvent event )
      {
        System.out.println("OnSplit -> Elected Active: " + event.getActiveServiceItem() ); *
      }
    }

   public static void main( String[] args )
   {
    IJSpace space;
    ServiceTemplate srvTemplate;
    INamingService lookupSrv    = new LookupNamingService();
    ElectionListener listener   = new ElectionListener();
    ServiceIDOrderFilter filter = new ServiceIDOrderFilter();

    ActiveElectionManager electManager = new ActiveElectionManager( space, srvTemplate,
lookupSrv, listener, filter );
    electManager.elect();
   }
  
Since:
6.0
Version:
1.0
Author:
Igor Goldenberg
See Also: