public class DistributedQueue extends Object implements MessageListener, MembershipListener, Cloneable
Both keys and values added to the list must be serializable, the reason being that they will be sent across the network to all replicas of the group. An instance of this class will contact an existing member of the group to fetch its initial state. Beware to use a total protocol on initialization or elements would not be in same order on all replicas.
Modifier and Type | Class and Description |
---|---|
static interface |
DistributedQueue.Notification |
Modifier and Type | Field and Description |
---|---|
protected Channel |
channel |
protected RpcDispatcher |
disp |
protected String |
groupname |
protected LinkedList |
internalQueue |
protected Log |
logger |
protected Vector |
members |
protected Object |
mutex |
protected Vector |
notifs |
protected boolean |
stopped |
Constructor and Description |
---|
DistributedQueue(JChannel channel) |
DistributedQueue(PullPushAdapter adapter,
Serializable id)
Uses a user-provided PullPushAdapter to create the dispatcher rather than a Channel.
|
DistributedQueue(String groupname,
ChannelFactory factory,
String properties,
long state_timeout)
Creates a DistributedQueue
|
Modifier and Type | Method and Description |
---|---|
void |
_add(Object value) |
void |
_addAll(Collection c) |
void |
_addAtHead(Object value) |
protected void |
_private_reset() |
Object |
_remove() |
void |
_reset() |
void |
add(Object value)
Add the speficied element at the bottom of the queue
|
void |
addAll(Collection values)
Add the speficied collection to the top of the queue.
|
void |
addAtHead(Object value)
Add the speficied element at the top of the queue
|
void |
addNotifier(DistributedQueue.Notification n) |
void |
block()
Block sending and receiving of messages until ViewAccepted is called
|
protected void |
checkResult(RspList rsp,
Object retval) |
Channel |
getChannel() |
Vector |
getContents() |
Address |
getLocalAddress() |
byte[] |
getState()
Answers the group state; e.g., when joining.
|
protected void |
init() |
static void |
main(String[] args) |
Object |
peek()
returns the first object on the queue, without removing it.
|
void |
receive(Message msg)
Called when a message is received.
|
Object |
remove()
Try to return the first objet in the queue.It does not wait for an object.
|
Object |
remove(long timeout) |
void |
removeNotifier(DistributedQueue.Notification n) |
void |
reset() |
void |
setState(byte[] new_state)
Sets the group state; e.g., when joining.
|
int |
size() |
void |
start(long state_timeout) |
void |
stop() |
void |
suspect(Address suspected_mbr)
Called when a member is suspected
|
String |
toString() |
void |
viewAccepted(View new_view)
Called when a change in membership has occurred.
|
protected Log logger
protected final Object mutex
protected boolean stopped
protected LinkedList internalQueue
protected Channel channel
protected RpcDispatcher disp
protected String groupname
protected Vector notifs
protected Vector members
public DistributedQueue(String groupname, ChannelFactory factory, String properties, long state_timeout) throws ChannelException
groupname
- The name of the group to joinfactory
- The ChannelFactory which will be used to create a channelproperties
- The property string to be used to define the channelstate_timeout
- The time to wait until state is retrieved in milliseconds. A value of 0 means wait forever.ChannelException
public DistributedQueue(JChannel channel)
public DistributedQueue(PullPushAdapter adapter, Serializable id)
adapter
- The PullPushAdapter which to use as underlying transportid
- A serializable object (e.g. an Integer) used to discriminate (multiplex/demultiplex) between
requests/responses for different building blocks on top of PullPushAdapter.protected final void init()
public final void start(long state_timeout) throws ChannelClosedException, ChannelNotConnectedException
public Address getLocalAddress()
public Channel getChannel()
public void addNotifier(DistributedQueue.Notification n)
public void removeNotifier(DistributedQueue.Notification n)
public void stop()
public void add(Object value)
value
- public void addAtHead(Object value)
value
- public void addAll(Collection values)
values
- public Vector getContents()
public int size()
public Object peek()
public void reset()
public Object remove()
public Object remove(long timeout)
timeout
- The time to wait until an entry is retrieved in milliseconds. A value of 0 means wait forever.public void _add(Object value)
public void _addAtHead(Object value)
public void _reset()
protected void _private_reset()
public Object _remove()
public void _addAll(Collection c)
public void receive(Message msg)
MessageListener
receive
in interface MessageListener
public byte[] getState()
MessageListener
getState
in interface MessageListener
public void setState(byte[] new_state)
MessageListener
setState
in interface MessageListener
public void viewAccepted(View new_view)
MembershipListener
Channel.connect(String)
returns.viewAccepted
in interface MembershipListener
public void suspect(Address suspected_mbr)
suspect
in interface MembershipListener
public void block()
block
in interface MembershipListener
public static void main(String[] args)
Copyright © 2013 JBoss, a division of Red Hat. All Rights Reserved.