All Packages Class Hierarchy This Package Previous Next Index
Class JavaGroups.JavaStack.MessageProtocol
java.lang.Object
|
+----JavaGroups.JavaStack.Protocol
|
+----JavaGroups.JavaStack.MessageProtocol
- public abstract class MessageProtocol
- extends Protocol
- implements RequestHandler
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.
-
MessageProtocol()
-
-
CastMessage(Vector, Message, int, long)
- Cast a message to all members, and wait for
mode
responses.
-
Down(Event)
- This message is not originated by this layer, therefore we can just pass it down without having
to go through the request correlator.
-
Handle(Message)
- Processes a request destined for this layer.
-
SendMessage(Message, int, long)
- Sends a message to a single member (destination = msg.dest) and returns the response.
-
Up(Event)
- An event was received from the layer below.
MessageProtocol
public MessageProtocol()
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
.
- Parameters:
- 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 members
- mode - 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.
SendMessage
public Object SendMessage(Message msg,
int mode,
long timeout) throws Timeout, Suspected
- Sends a message to a single member (destination = msg.dest) and returns the response.
The message's destination must be non-zero !
Handle
public Object Handle(Message req)
- Processes a request destined for this layer. The return value is sent as response.
Up
public final void Up(Event evt)
- An event was received from the layer below.
- Overrides:
- Up in class Protocol
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 !
- Overrides:
- Down in class Protocol
All Packages Class Hierarchy This Package Previous Next Index