org.jgroups.blocks

Class NotificationBus

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

Field Summary

protected Log
log

Constructor Summary

NotificationBus()
NotificationBus(String bus_name)
NotificationBus(String bus_name, String properties)

Method Summary

void
block()
Block sending and receiving of messages until viewAccepted() is called
Serializable
getCache()
Serializable
getCacheFromCoordinator(long timeout, int max_tries)
Determines the coordinator and asks it for its cache.
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()
Vector
getMembership()
Returns a reference to the real membership: don't modify.
byte[]
getState()
boolean
isCoordinator()
void
notifyConsumer(Serializable n)
Don't multicast this to all members, just apply it to local consumers.
void
receive(Message msg)
void
sendNotification(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.

Field Details

log

protected Log log

Constructor Details

NotificationBus

public NotificationBus()
            throws Exception


NotificationBus

public NotificationBus(String bus_name)
            throws Exception


NotificationBus

public NotificationBus(String bus_name,
                       String properties)
            throws Exception

Method Details

block

public void block()
Block sending and receiving of messages until viewAccepted() is called
Specified by:
block in interface MembershipListener


getCache

public Serializable getCache()


getCacheFromCoordinator

public 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 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 <321)


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


getLocalAddress

public Address getLocalAddress()


getMembership

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


getState

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


isCoordinator

public boolean isCoordinator()


notifyConsumer

public void notifyConsumer(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


sendNotification

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


setConsumer

public void setConsumer(NotificationBus.Consumer c)


setState

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


start

public void start()
            throws Exception


stop

public void stop()


suspect

public void suspect(Address suspected_mbr)
Called when a member is suspected
Specified by:
suspect in interface MembershipListener


viewAccepted

public void viewAccepted(View new_view)
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


Copyright B) 2001,2002 www.jgroups.com . All Rights Reserved.