Provides building blocks that are layered on top of channels.
Most of them do not even need a channel, all they need is a class
that implements interface Transport (channels do).
This enables them to work on any type of group transport that obeys this interface.
Building blocks can be used instead of channels whenever a higher-level interface
is required. Whereas channels are simple socket-like constructs, building blocks
may offer a far more sophisticated interface. In some cases, building blocks offer
access to the underlying channel, so that - if the building block at hand does not
offer a certain functionality - the channel can be accessed directly.
Implements a logical point-to-point link between 2 entities consisting of a number of physical links.
Traffic is routed over any of the physical link, according to policies.
Provides synchronous and asynchronous message sending with request-response
correlation; i.e., matching responses with the original request.
It also offers push-style message reception (by internally using the PullPushAdapter).
Channels are simple patterns to asynchronously send a receive messages.
However, a significant number of communication patterns in group communication
require synchronous communication.
Allows a client of
org.jgroups.Channel to be notified when messages have been received
instead of having to actively poll the channel for new messages.
VoteResultProcessor
Applications that use the VotingAdapter and/or TwoPhaseVotingAdapter can pass an implementation of this down the vote
calls, to intercept processing of the VoteResults returned by other nodes.
See the source of
org.jgroups.blocks.DistributedLockManager for an example implementation.