org.javagroups.blocks
Class MessageDispatcher
java.lang.Object
|
+--org.javagroups.blocks.MessageDispatcher
- All Implemented Interfaces:
- RequestHandler
- Direct Known Subclasses:
- RpcDispatcher
- public class MessageDispatcher
- extends java.lang.Object
- implements RequestHandler
Used on top of channel to implement group requests. Client's handle()
method is called when request is received. Is the equivalent of RpcProtocol on the
application instead of protocol level.
- Author:
- Bela Ban
Constructor Summary |
MessageDispatcher(Channel channel,
MessageListener l,
MembershipListener l2)
|
MessageDispatcher(Channel channel,
MessageListener l,
MembershipListener l2,
boolean deadlock_detection)
|
MessageDispatcher(Channel channel,
MessageListener l,
MembershipListener l2,
RequestHandler req_handler)
|
MessageDispatcher(Channel channel,
MessageListener l,
MembershipListener l2,
RequestHandler req_handler,
boolean deadlock_detection)
|
MessageDispatcher(PullPushAdapter adapter,
java.io.Serializable id,
MessageListener l,
MembershipListener l2)
|
MessageDispatcher(PullPushAdapter adapter,
java.io.Serializable id,
MessageListener l,
MembershipListener l2,
RequestHandler req_handler)
|
Methods inherited from class java.lang.Object |
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
channel
protected Channel channel
corr
protected RequestCorrelator corr
msg_listener
protected MessageListener msg_listener
membership_listener
protected MembershipListener membership_listener
req_handler
protected RequestHandler req_handler
prot_adapter
protected org.javagroups.blocks.MessageDispatcher.ProtocolAdapter prot_adapter
transport_adapter
protected org.javagroups.blocks.MessageDispatcher.TransportAdapter transport_adapter
members
protected java.util.Vector members
local_addr
protected Address local_addr
deadlock_detection
protected boolean deadlock_detection
adapter
protected PullPushAdapter adapter
id
protected java.io.Serializable id
MessageDispatcher
public MessageDispatcher(Channel channel,
MessageListener l,
MembershipListener l2)
MessageDispatcher
public MessageDispatcher(Channel channel,
MessageListener l,
MembershipListener l2,
boolean deadlock_detection)
MessageDispatcher
public MessageDispatcher(Channel channel,
MessageListener l,
MembershipListener l2,
RequestHandler req_handler)
MessageDispatcher
public MessageDispatcher(Channel channel,
MessageListener l,
MembershipListener l2,
RequestHandler req_handler,
boolean deadlock_detection)
MessageDispatcher
public MessageDispatcher(PullPushAdapter adapter,
java.io.Serializable id,
MessageListener l,
MembershipListener l2)
MessageDispatcher
public MessageDispatcher(PullPushAdapter adapter,
java.io.Serializable id,
MessageListener l,
MembershipListener l2,
RequestHandler req_handler)
setDeadlockDetection
public void setDeadlockDetection(boolean flag)
finalize
public void finalize()
- Overrides:
finalize
in class java.lang.Object
start
public void start()
stop
public void stop()
setMessageListener
public void setMessageListener(MessageListener l)
setMembershipListener
public void setMembershipListener(MembershipListener l)
setRequestHandler
public void setRequestHandler(RequestHandler rh)
send
public void send(Message msg)
throws ChannelNotConnectedException,
ChannelClosedException
ChannelNotConnectedException
ChannelClosedException
castMessage
public RspList castMessage(java.util.Vector dests,
Message msg,
int mode,
long timeout)
- Cast a message to all members, and wait for
mode
responses. The responses are
returned in a response list, where each response is associated with its sender.
Uses GroupRequest
.
- Parameters:
dests
- The members to which the message is to be sent. If it is null, then the message
is sent to all membersmsg
- The message to be sent to n membersmode
- Defined in GroupRequest
. The number of responses to wait for:
- GET_FIRST: return the first response received.
- GET_ALL: wait for all responses (minus the ones from suspected members)
- GET_MAJORITY: wait for a majority of all responses (relative to the grp size)
- GET_ABS_MAJORITY: wait for majority (absolute, computed once)
- GET_N: wait for n responses (may block if n > group size)
- GET_NONE: wait for no responses, return immediately (non-blocking)
timeout
- If 0: wait forever. Otherwise, wait for mode
responses
or timeout time.
- Returns:
- RspList A list of responses. Each response is an
Object
and associated
to its sender.
castMessage
public void castMessage(java.util.Vector dests,
long req_id,
Message msg,
RspCollector coll)
- Multicast a message request to all members in
dests
and receive responses
via the RspCollector interface. When done receiving the required number of responses, the caller
has to call done(req_id) on the underlyinh RequestCorrelator, so that the resources allocated to that
request can be freed.
- Parameters:
dests
- The list of members from which to receive responses. Null means all membersreq_id
- The ID of the request. Used by the underlying RequestCorrelator to
correlate responses with requestsmsg
- The request to be sentcoll
- The sender needs to provide this interface to collect responses. Call will return
immediately if this is null
done
public void done(long req_id)
sendMessage
public java.lang.Object sendMessage(Message msg,
int mode,
long timeout)
throws TimeoutException,
SuspectedException
- Sends a message to a single member (destination = msg.dest) and returns the response.
The message's destination must be non-zero !
TimeoutException
SuspectedException
handle
public java.lang.Object handle(Message msg)
- Specified by:
handle
in interface RequestHandler
Copyright ? 2001,2002 www.javagroups.com . All Rights Reserved.