org.jgroups.blocks
Class NotificationBus

java.lang.Object
  extended byorg.jgroups.blocks.NotificationBus
All Implemented Interfaces:
MembershipListener, MessageListener

public class NotificationBus
extends java.lang.Object
implements MessageListener, MembershipListener

Class for dissemination of notifications. Producers can send notifications to all registered consumers. Provides hooks to implement shared group state (cache).

Author:
Bela Ban

Nested Class Summary
static interface NotificationBus.Consumer
           
 
Constructor Summary
NotificationBus()
           
NotificationBus(java.lang.String bus_name)
           
NotificationBus(java.lang.String bus_name, java.lang.String properties)
           
 
Method Summary
 void block()
          Block sending and receiving of messages until viewAccepted() is called
 java.io.Serializable getCache()
           
 java.io.Serializable getCacheFromCoordinator(long timeout, int max_tries)
          Determines the coordinator and asks it for its cache.
 java.io.Serializable getCacheFromMember(Address mbr, long timeout, int max_tries)
          Determines the coordinator and asks it for its cache.
 Channel getChannel()
          Used to operate on the underlying channel directly, e.g.
 Address getLocalAddress()
           
 java.util.Vector getMembership()
          Returns a reference to the real membership: don't modify.
 byte[] getState()
           
 boolean isCoordinator()
           
 void notifyConsumer(java.io.Serializable n)
          Don't multicast this to all members, just apply it to local consumers.
 void receive(Message msg)
           
 void sendNotification(java.io.Serializable n)
          Pack the argument in a Info, serialize that one into the message buffer and send the message
 void setConsumer(NotificationBus.Consumer c)
           
 void setState(byte[] state)
           
 void start()
           
 void stop()
           
 void suspect(Address suspected_mbr)
          Called when a member is suspected
 void viewAccepted(View new_view)
          Called by JGroups to notify the target object of a change of membership.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

NotificationBus

public NotificationBus()
                throws java.lang.Exception

NotificationBus

public NotificationBus(java.lang.String bus_name)
                throws java.lang.Exception

NotificationBus

public NotificationBus(java.lang.String bus_name,
                       java.lang.String properties)
                throws java.lang.Exception
Method Detail

setConsumer

public void setConsumer(NotificationBus.Consumer c)

getLocalAddress

public Address getLocalAddress()

getMembership

public java.util.Vector getMembership()
Returns a reference to the real membership: don't modify. If you need to modify, make a copy first !


getChannel

public Channel getChannel()
Used to operate on the underlying channel directly, e.g. perform operations that are not provided using only NotificationBus. Should be used sparingly


isCoordinator

public boolean isCoordinator()

start

public void start()
           throws java.lang.Exception
Throws:
java.lang.Exception

stop

public void stop()

sendNotification

public void sendNotification(java.io.Serializable n)
Pack the argument in a Info, serialize that one into the message buffer and send the message


getCacheFromCoordinator

public java.io.Serializable getCacheFromCoordinator(long timeout,
                                                    int max_tries)
Determines the coordinator and asks it for its cache. If there is no coordinator (because we are first member), null will be returned. Used only internally by NotificationBus.

Parameters:
timeout - Max number of msecs until the call returns
max_tries - Max number of attempts to fetch the cache from the coordinator

getCacheFromMember

public java.io.Serializable getCacheFromMember(Address mbr,
                                               long timeout,
                                               int max_tries)
Determines the coordinator and asks it for its cache. If there is no coordinator (because we are first member), null will be returned. Used only internally by NotificationBus.

Parameters:
mbr - The address of the member from which to fetch the state. If null, the current coordinator will be asked for the state
timeout - Max number of msecs until the call returns - if timeout elapses null will be returned
max_tries - Max number of attempts to fetch the cache from the coordinator (will be set to 1 if < 1)

notifyConsumer

public void notifyConsumer(java.io.Serializable n)
Don't multicast this to all members, just apply it to local consumers.


receive

public void receive(Message msg)
Specified by:
receive in interface MessageListener

getState

public byte[] getState()
Specified by:
getState in interface MessageListener

setState

public void setState(byte[] state)
Specified by:
setState in interface MessageListener

viewAccepted

public void viewAccepted(View new_view)
Description copied from interface: MembershipListener
Called by JGroups to notify the target object of a change of membership. No long running actions should be done in this callback in the case of Ensemble, as this would block Ensemble. If some long running action needs to be performed, it should be done in a separate thread (cf. ../Tests/QuoteServer.java).

Specified by:
viewAccepted in interface MembershipListener

suspect

public void suspect(Address suspected_mbr)
Description copied from interface: MembershipListener
Called when a member is suspected

Specified by:
suspect in interface MembershipListener

block

public void block()
Description copied from interface: MembershipListener
Block sending and receiving of messages until viewAccepted() is called

Specified by:
block in interface MembershipListener

getCache

public java.io.Serializable getCache()


Copyright © 2001,2002 www.jgroups.com . All Rights Reserved.