org.jgroups.blocks
Class MessageDispatcher
java.lang.Object
org.jgroups.blocks.MessageDispatcher
- RequestHandler
public class MessageDispatcher
extends java.lang.Object
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.
- Bela Ban
MessageDispatcher(Channel channel, MessageListener l, MembershipListener l2)
|
MessageDispatcher(Channel channel, MessageListener l, MembershipListener l2, boolean deadlock_detection)
|
MessageDispatcher(Channel channel, MessageListener l, MembershipListener l2, boolean deadlock_detection, boolean concurrent_processing)
|
MessageDispatcher(Channel channel, MessageListener l, MembershipListener l2, RequestHandler req_handler)
|
MessageDispatcher(Channel channel, MessageListener l, MembershipListener l2, RequestHandler req_handler, boolean deadlock_detection)
|
MessageDispatcher(Channel channel, MessageListener l, MembershipListener l2, RequestHandler req_handler, boolean deadlock_detection, boolean concurrent_processing)
|
MessageDispatcher(PullPushAdapter adapter, Serializable id, MessageListener l, MembershipListener l2)
|
MessageDispatcher(PullPushAdapter adapter, Serializable id, MessageListener l, MembershipListener l2, RequestHandler req_handler)
|
MessageDispatcher(PullPushAdapter adapter, Serializable id, MessageListener l, MembershipListener l2, RequestHandler req_handler, boolean concurrent_processing)
|
concurrent_processing
protected boolean concurrent_processing
Process items on the queue concurrently (RequestCorrelator). The default is to wait until the processing of an
item has completed before fetching the next item from the queue. Note that setting this to true may destroy the
properties of a protocol stack, e.g total or causal order may not be guaranteed. Set this to true only if you
know what you're doing !
deadlock_detection
protected boolean deadlock_detection
id
protected Serializable id
local_addr
protected Address local_addr
members
protected Vector members
prot_adapter
protected org.jgroups.blocks.MessageDispatcher.ProtocolAdapter prot_adapter
transport_adapter
protected org.jgroups.blocks.MessageDispatcher.TransportAdapter transport_adapter
castMessage
public void castMessage(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.
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
castMessage
public RspList castMessage(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
.
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.
- RspList A list of responses. Each response is an
Object
and associated to its sender.
done
public void done(long req_id)
sendMessage
public 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 !
setConcurrentProcessing
public void setConcurrentProcessing(boolean flag)
setDeadlockDetection
public void setDeadlockDetection(boolean flag)
Copyright B) 2001,2002 www.jgroups.com . All Rights Reserved.