| java.lang.Object org.jgroups.blocks.VotingAdapter
VotingAdapter | public class VotingAdapter implements MessageListener,MembershipListener,VoteResponseProcessor(Code) | | 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
VoteException . 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.
author: Roman Rokytskyy (rrokytskyy@acm.org) author: Robert Schaffar-Taurok (robert@fusion.at) version: $Id: VotingAdapter.java,v 1.10 2006/09/27 12:42:53 belaban Exp $ |
Inner Class :public static class VoteResult implements Serializable | |
Inner Class :public static class FailureVoteResult extends VoteResult | |
Field Summary | |
final public 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. | final public static int | VOTE_ANY This consensus type means that at least one positive vote is required
for the voting to succeed. | final public static int | VOTE_MAJORITY This consensus type means that number of positive votes should be greater
than number of negative votes. | final protected Log | log |
Method Summary | |
public void | addMembershipListener(MembershipListener l) | public void | addVoteListener(VotingListener listener) Adds voting listener. | public void | block() Blocks the channel until the ViewAccepted is invoked. | public static String | getConsensusStr(int consensusType) Convert consensus type into string representation. | public Collection | getMembers() | public byte[] | getState() Get the channel state. | public VoteResult | localVote(Object decree) This method performs voting on the specific decree between all
local voteListeners. | public boolean | processResponses(RspList responses, int consensusType, Object decree) Processes the response list and makes a decision according to the
type of the consensus for current voting. | public void | receive(org.jgroups.Message msg) Receive the message. | public void | removeMembershipListener(MembershipListener l) | public void | removeVoteListener(VotingListener listener) Removes voting listener. | public void | setState(byte[] state) Set the channel state. | public void | suspect(Address suspected) | public void | viewAccepted(View newView) Callback for notification about the new view of the group. | public boolean | vote(Object decree, int consensusType, long timeout) Performs actual voting on the VoteChannel using the JGroups
facilities for communication. | public boolean | vote(Object decree, int consensusType, long timeout, VoteResponseProcessor voteResponseProcessor) Performs actual voting on the VoteChannel using the JGroups
facilities for communication. | public boolean | vote(Object decree, long timeout) Vote on the specified decree requiring all nodes to vote.
Parameters: decree - decree on which nodes should vote. Parameters: timeout - time during which nodes can vote. | public boolean | vote(Object decree, long timeout, VoteResponseProcessor voteResponseProcessor) Vote on the specified decree requiring all nodes to vote.
Parameters: decree - decree on which nodes should vote. Parameters: timeout - time during which nodes can vote. Parameters: voteResponseProcessor - processor which will be called for every response that is received. |
VOTE_ALL | final public static int VOTE_ALL(Code) | | This consensus type means that at least one positive vote and no negative
votes are required for the voting to succeed.
|
VOTE_ANY | final public static int VOTE_ANY(Code) | | This consensus type means that at least one positive vote is required
for the voting to succeed.
|
VOTE_MAJORITY | final public static int VOTE_MAJORITY(Code) | | This consensus type means that number of positive votes should be greater
than number of negative votes.
|
log | final protected Log log(Code) | | |
VotingAdapter | public VotingAdapter(Channel channel)(Code) | | Creates an instance of the VoteChannel that uses JGroups
for communication between group members.
Parameters: channel - JGroups channel. |
block | public void block()(Code) | | Blocks the channel until the ViewAccepted is invoked.
|
getConsensusStr | public static String getConsensusStr(int consensusType)(Code) | | Convert consensus type into string representation. This method is
useful for debugginf.
Parameters: consensusType - type of the consensus. string representation of the consensus type. |
getState | public byte[] getState()(Code) | | Get the channel state.
always null , we do not have any group-sharedstate. |
localVote | public VoteResult localVote(Object decree)(Code) | | This method performs voting on the specific decree between all
local voteListeners.
|
processResponses | public boolean processResponses(RspList responses, int consensusType, Object decree) throws ChannelException(Code) | | Processes the response list and makes a decision according to the
type of the consensus for current voting.
Note: we do not support voting in case of Byzantine failures, i.e.
when the node responds with the fault message.
|
receive | public void receive(org.jgroups.Message msg)(Code) | | Receive the message. All messages are ignored.
Parameters: msg - message to check. |
removeVoteListener | public void removeVoteListener(VotingListener listener)(Code) | | Removes voting listener.
|
setState | public void setState(byte[] state)(Code) | | Set the channel state. We do nothing here.
|
suspect | public void suspect(Address suspected)(Code) | | Callback for notification that one node is suspected
|
viewAccepted | public void viewAccepted(View newView)(Code) | | Callback for notification about the new view of the group.
|
vote | public boolean vote(Object decree, int consensusType, long timeout) throws ChannelException(Code) | | Performs actual voting on the VoteChannel using the JGroups
facilities for communication.
|
vote | public boolean vote(Object decree, long timeout) throws ChannelException(Code) | | Vote on the specified decree requiring all nodes to vote.
Parameters: decree - decree on which nodes should vote. Parameters: timeout - time during which nodes can vote. true if nodes agreed on a decree, otherwise false throws: ChannelException - if something went wrong. |
vote | public boolean vote(Object decree, long timeout, VoteResponseProcessor voteResponseProcessor) throws ChannelException(Code) | | Vote on the specified decree requiring all nodes to vote.
Parameters: decree - decree on which nodes should vote. Parameters: timeout - time during which nodes can vote. Parameters: voteResponseProcessor - processor which will be called for every response that is received. true if nodes agreed on a decree, otherwise false throws: ChannelException - if something went wrong. |
|
|