org.jgroups.blocks
Class VotingAdapter
java.lang.Object
org.jgroups.blocks.VotingAdapter
- MembershipListener, MessageListener
public class VotingAdapter
extends java.lang.Object
Voting adapter provides a voting functionality for an application. There
should be at most one
VotingAdapter
listening on one
Channel
instance. Each adapter can have zero or more registered
VotingListener
instances that will be called during voting process.
Decree is an object that has some semantic meaning within the application.
Each voting listener receives a decree and can respond with either
true
or false. If the decree has no meaning for the voting
listener, it is required to throw
VotingException
. In this case
this specific listener will be excluded from the voting on the specified
decree. After performing local voting, this voting adapter sends the request
back to the originator of the voting process. Originator receives results
from each node and decides if all voting process succeeded or not depending
on the consensus type specified during voting.
- Roman Rokytskyy (rrokytskyy@acm.org)
static int | VOTE_ALL - This consensus type means that at least one positive vote and no negative
votes are required for the voting to succeed.
|
static int | VOTE_ANY - This consensus type means that at least one positive vote is required
for the voting to succeed.
|
static int | VOTE_MAJORITY - This consensus type means that number of positive votes should be greater
than number of negative votes.
|
protected Log | log
|
void | addVoteListener(VotingListener listener) - Adds voting listener.
|
void | block() - Blocks the channel until the ViewAccepted is invoked.
|
static String | getConsensusStr(int consensusType) - Convert consensus type into string representation.
|
byte[] | getState() - Get the channel state.
|
VotingAdapter.VoteResult | localVote(Object decree) - This method performs voting on the specific decree between all
local voteListeners.
|
void | receive(Message msg) - Receive the message.
|
void | removeVoteListener(VotingListener listener) - Removes voting listener.
|
void | setState(byte[] state) - Set the channel state.
|
void | suspect(Address suspected) - Callback for notification that one node is suspected
|
void | viewAccepted(View newView) - Callback for notification about the new view of the group.
|
boolean | vote(Object decree, int consensusType, long timeout) - Performs actual voting on the VoteChannel using the JGroups
facilities for communication.
|
boolean | vote(Object decree, long timeout) - Vote on the specified decree requiring all nodes to vote.
|
VOTE_ALL
public static final int VOTE_ALL
This consensus type means that at least one positive vote and no negative
votes are required for the voting to succeed.
- 1
VOTE_ANY
public static final int VOTE_ANY
This consensus type means that at least one positive vote is required
for the voting to succeed.
- 0
VOTE_MAJORITY
public static final int VOTE_MAJORITY
This consensus type means that number of positive votes should be greater
than number of negative votes.
- 2
VotingAdapter
public VotingAdapter(Channel channel)
Creates an instance of the VoteChannel that uses JGroups
for communication between group members.
channel
- JGroups channel.
VotingAdapter
public VotingAdapter(PullPushAdapter adapter,
Serializable id)
addVoteListener
public void addVoteListener(VotingListener listener)
Adds voting listener.
block
public void block()
Blocks the channel until the ViewAccepted is invoked.
- block in interface MembershipListener
getConsensusStr
public static String getConsensusStr(int consensusType)
Convert consensus type into string representation. This method is
useful for debugginf.
consensusType
- type of the consensus.
- string representation of the consensus type.
getState
public byte[] getState()
Get the channel state.
- getState in interface MessageListener
- always
null
, we do not have any group-shared
state.
localVote
public VotingAdapter.VoteResult localVote(Object decree)
This method performs voting on the specific decree between all
local voteListeners.
receive
public void receive(Message msg)
Receive the message. All messages are ignored.
- receive in interface MessageListener
msg
- message to check.
removeVoteListener
public void removeVoteListener(VotingListener listener)
Removes voting listener.
setState
public void setState(byte[] state)
Set the channel state. We do nothing here.
- setState in interface MessageListener
vote
public boolean vote(Object decree,
int consensusType,
long timeout)
throws ChannelException
Performs actual voting on the VoteChannel using the JGroups
facilities for communication.
vote
public boolean vote(Object decree,
long timeout)
throws ChannelException
Vote on the specified decree requiring all nodes to vote.
decree
- decree on which nodes should vote.timeout
- time during which nodes can vote.
true
if nodes agreed on a decree, otherwise
false
ChannelException
- if something went wrong.
Copyright B) 2001,2002 www.jgroups.com . All Rights Reserved.