org.jgroups.stack
Class MessageProtocol
- RequestHandler
public abstract class MessageProtocol
Based on Protocol, but incorporates RequestCorrelator and GroupRequest: the latter can
be used to mcast messages to all members and receive their reponses.
A protocol based on this template can send messages to all members and receive all, a single,
n, or none responses. Requests directed towards the protocol can be handled by overriding
method
Handle
.
Requests and responses are in the form of
Message
s, which would typically need to
contain information pertaining to the request/response, e.g. in the form of objects contained
in the message. To use remote method calls, use
RpcProtocol
instead.
Typical use of of a
MessageProtocol
would be when a protocol needs to interact with
its peer protocols at each of the members' protocol stacks. A simple protocol like fragmentation,
which does not need to interact with other instances of fragmentation, may simply subclass
Protocol
instead.
down_handler , down_prot , down_queue , down_thread , down_thread_prio , log , observer , props , stack , stats , trace , up_handler , up_prot , up_queue , up_thread , up_thread_prio , warn |
RspList | castMessage(Vector dests, Message msg, int mode, long timeout) - Cast a message to all members, and wait for
mode responses.
|
void | down(Event evt) - This message is not originated by this layer, therefore we can just
pass it down without having to go through the request correlator.
|
Object | handle(Message req) - Processes a request destined for this layer.
|
protected boolean | handleDownEvent(Event evt) - Handle down event.
|
protected boolean | handleUpEvent(Event evt) - Handle up event.
|
Object | sendMessage(Message msg, int mode, long timeout) - Sends a message to a single member (destination = msg.dest) and returns the response.
|
void | start()
|
void | stop()
|
void | up(Event evt) - Handle an event coming from the layer above
|
protected void | updateView(View new_view)
|
destroy , down , downThreadEnabled , dumpStats , enableStats , getDownProtocol , getDownQueue , getName , getProperties , getUpProtocol , getUpQueue , handleSpecialDownEvent , init , isTrace , isWarn , passDown , passUp , printStats , providedDownServices , providedUpServices , receiveDownEvent , receiveUpEvent , requiredDownServices , requiredUpServices , resetStats , setDownProtocol , setObserver , setProperties , setPropertiesInternal , setProtocolStack , setTrace , setUpProtocol , setWarn , start , startDownHandler , startUpHandler , statsEnabled , stop , stopInternal , up , upThreadEnabled |
members
protected final Vector members
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 from which responses are expected. If it is null, replies from all members
are expected. The request itself is multicast to all members.msg
- 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.
down
public final void down(Event evt)
This message is not originated by this layer, therefore we can just
pass it down without having to go through the request correlator.
We do this ONLY for messages !
- down in interface Protocol
handle
public Object handle(Message req)
Processes a request destined for this layer. The return value is sent as response.
- handle in interface RequestHandler
handleDownEvent
protected boolean handleDownEvent(Event evt)
Handle down event. Return false if it should not be passed down the stack.
handleUpEvent
protected boolean handleUpEvent(Event evt)
Handle up event. Return false if it should not be passed up the stack.
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 !
start
public void start()
throws Exception
- start in interface Protocol
up
public final void up(Event evt)
Handle an event coming from the layer above
- up in interface Protocol
updateView
protected void updateView(View new_view)
Copyright B) 1998-2005 Bela Ban. All Rights Reserved.