Package | Description |
---|---|
org.jgroups |
Provides top-level public JGroups classes such as Channel, Message, etc.
|
org.jgroups.blocks |
Provides building blocks that are layered on top of channels.
|
org.jgroups.blocks.mux | |
org.jgroups.conf |
Provides ways to configure a protocol stack.
|
org.jgroups.demos |
Provides demonstrations of JGroups functionality.
|
org.jgroups.demos.wb |
A distributed whiteboard applet implemented using JGroups.
|
org.jgroups.protocols |
Provides implementations of transport protocols which are
responsible for sending and receiving messages to/from the network.
|
org.jgroups.protocols.pbcast |
Supports probabilistic broadcasts.
|
org.jgroups.protocols.relay | |
org.jgroups.protocols.tom | |
org.jgroups.stack |
Support for managing protocol stacks.
|
org.jgroups.util |
Provides useful functionality which cannot be assigned to any particular other package.
|
Modifier and Type | Interface and Description |
---|---|
interface |
PhysicalAddress
Represents a physical (as opposed to logical) address
|
Modifier and Type | Class and Description |
---|---|
class |
AnycastAddress
This type of address represents a subset of the cluster members in which the total order properties must be applied,
e.g.
|
Modifier and Type | Field and Description |
---|---|
protected Address |
ViewId.creator |
protected Address |
Message.dest_addr |
protected Address |
JChannel.local_addr |
protected Address |
UnreachableException.member |
protected Address |
Message.src_addr |
Modifier and Type | Field and Description |
---|---|
protected Collection<Address> |
AnycastAddress.destinations |
protected List<Address> |
View.members
A list containing all the members of the view.This list is always ordered, with the
coordinator being the first member.
|
Modifier and Type | Method and Description |
---|---|
Address |
Message.dest() |
Address |
Membership.elementAt(int index)
Returns the component at the specified index
|
abstract Address |
Channel.getAddress()
Returns the channel's own address.
|
Address |
JChannel.getAddress() |
Address |
View.getCoord() |
Address |
ViewId.getCreator()
Returns the address of the member that issued this view
|
Address |
View.getCreator()
Returns the creator of this view
if this view was created with the empty constructur, null will be returned
|
Address |
Message.getDest() |
Address |
Message.getSrc() |
Address |
Message.src() |
Modifier and Type | Method and Description |
---|---|
Collection<Address> |
AnycastAddress.getAddresses() |
List<Address> |
View.getMembers()
Returns a reference to the List of members (ordered)
Do NOT change this list, hence your will invalidate the view
Make a copy if you have to modify it.
|
List<Address> |
Membership.getMembers()
Returns a copy (clone) of the members in this membership.
|
List<Address> |
View.getMembersRaw()
Returns the underlying list.
|
Iterator<Address> |
View.iterator() |
Modifier and Type | Method and Description |
---|---|
protected void |
AnycastAddress._add(Address address) |
void |
AnycastAddress.add(Address... addresses) |
void |
Membership.add(Address... mbrs) |
void |
Membership.add(Address new_member)
Adds a new member to this membership.
|
int |
AnycastAddress.compareTo(Address o) |
abstract void |
Channel.connect(String cluster_name,
Address target,
long timeout)
Connects this channel to a group and gets a state from a specified state provider.
|
void |
JChannel.connect(String cluster_name,
Address target,
long timeout) |
void |
JChannel.connect(String cluster_name,
Address target,
long timeout,
boolean useFlushIfPresent)
Connects this channel to a group and gets a state from a specified state provider.
This method invokes
connect() |
boolean |
Membership.contains(Address member)
Returns true if the provided member belongs to this membership
|
boolean |
View.containsMember(Address mbr)
Returns true, if this view contains a certain member
|
boolean |
View.containsMembers(Address... mbrs)
Returns true if all mbrs are elements of this view, false otherwise
|
static View |
View.create(Address coord,
long id,
Address... members) |
static View |
View.create(Address coord,
long id,
Address... members) |
Message |
Message.dest(Address new_dest) |
abstract String |
Channel.getName(Address member)
Returns the logical name of a given member.
|
String |
JChannel.getName(Address member) |
abstract void |
Channel.getState(Address target,
long timeout)
Retrieves the full state from the target member.
|
void |
JChannel.getState(Address target,
long timeout) |
void |
JChannel.getState(Address target,
long timeout,
boolean useFlushIfPresent)
Retrieves state from the target member.
|
protected void |
JChannel.getState(Address target,
long timeout,
Callable<Boolean> flushInvoker) |
void |
Membership.remove(Address old_member)
Removes an member from the membership.
|
abstract void |
Channel.send(Address dst,
byte[] buf)
Sends a message.
|
void |
JChannel.send(Address dst,
byte[] buf) |
abstract void |
Channel.send(Address dst,
byte[] buf,
int offset,
int length)
Sends a message to a destination.
|
void |
JChannel.send(Address dst,
byte[] buf,
int offset,
int length) |
abstract void |
Channel.send(Address dst,
Object obj)
Helper method to create a Message with given parameters and invoke
Channel.send(Message) . |
void |
JChannel.send(Address dst,
Object obj) |
void |
Message.setDest(Address new_dest) |
void |
Message.setSrc(Address new_src) |
Message |
Message.src(Address new_src) |
void |
MembershipListener.suspect(Address suspected_mbr)
Called whenever a member is suspected of having crashed, but has not yet been excluded.
|
void |
ReceiverAdapter.suspect(Address mbr)
Called whenever a member is suspected of having crashed, but has not yet been excluded.
|
void |
Message.writeToNoAddrs(Address src,
DataOutputStream out)
Writes the message to the output stream, but excludes the dest and src addresses unless the
src address given as argument is different from the message's src address
|
Modifier and Type | Method and Description |
---|---|
void |
Membership.add(Collection<Address> v)
Adds a list of members to this membership
|
void |
AnycastAddress.addAll(Collection<Address> addresses) |
boolean |
View.containsMembers(Collection<Address> mbrs) |
void |
Membership.merge(Collection<Address> new_mems,
Collection<Address> suspects)
Merges membership with the new members and removes suspects.
|
void |
Membership.merge(Collection<Address> new_mems,
Collection<Address> suspects)
Merges membership with the new members and removes suspects.
|
void |
Membership.remove(Collection<Address> v)
Removes all the members contained in v from this membership
|
void |
Membership.retainAll(Collection<Address> v) |
void |
Membership.set(Collection<Address> v)
Clears the membership and adds all members of v This method will clear out all the old members
of this membership by invoking the
Clear method. |
abstract void |
Channel.startFlush(List<Address> flushParticipants,
boolean automatic_resume)
Performs a partial flush in a cluster for flush participants.
|
void |
JChannel.startFlush(List<Address> flushParticipants,
boolean automatic_resume) |
abstract void |
Channel.stopFlush(List<Address> flushParticipants) |
void |
JChannel.stopFlush(List<Address> flushParticipants) |
Constructor and Description |
---|
AnycastAddress(Address... addresses) |
MergeView(Address creator,
long id,
List<Address> members,
List<View> subgroups)
Creates a new view
|
Message(Address dest)
Constructs a Message given a destination Address
|
Message(Address dest,
Address src,
byte[] buf)
Constructs a Message given a destination Address, a source Address and the payload byte buffer
|
Message(Address dest,
Address src,
byte[] buf,
int offset,
int length)
Constructs a message.
|
Message(Address dest,
Address src,
Object obj)
Constructs a Message given a destination Address, a source Address and the payload Object
|
Message(Address dest,
byte[] buf) |
Message(Address dest,
byte[] buf,
int offset,
int length) |
Message(Address dest,
Object obj) |
UnreachableException(Address member) |
UnreachableException(String msg,
Address member) |
View(Address creator,
long id,
List<Address> members)
Creates a new view
|
ViewId(Address creator)
Creates a ViewID with the coordinator address and a Lamport timestamp of 0.
|
ViewId(Address creator,
long id)
Creates a ViewID with the coordinator address and the given Lamport timestamp.
|
Constructor and Description |
---|
AnycastAddress(Collection<Address> addresses) |
Membership(Collection<Address> initial_members)
Creates a Membership with a given initial members.
|
MergeView(Address creator,
long id,
List<Address> members,
List<View> subgroups)
Creates a new view
|
MergeView(ViewId vid,
List<Address> members,
List<View> subgroups)
Creates a new view
|
View(Address creator,
long id,
List<Address> members)
Creates a new view
|
View(ViewId vid,
List<Address> members)
Creates a new view
|
Modifier and Type | Field and Description |
---|---|
protected Address |
TCPConnectionMap.local_addr |
protected Address |
MessageDispatcher.local_addr |
protected Address |
RequestCorrelator.local_addr
The address of this group member
|
protected Address |
TCPConnectionMap.TCPConnection.peer_addr |
protected Address |
UnicastRequest.target |
Modifier and Type | Field and Description |
---|---|
protected Map<Address,V> |
AbstractConnectionMap.conns |
Collection<? extends Address> |
RequestCorrelator.MultiDestinationHeader.exclusion_list
Contains a list of members who should not receive the request (others will drop).
|
protected Set<Address> |
RequestOptions.exclusion_list
A list of members which should be excluded from a call
|
protected Collection<Address> |
MessageDispatcher.members |
Modifier and Type | Method and Description |
---|---|
Address |
ReplCache.getLocalAddress() |
Address |
TCPConnectionMap.getLocalAddress() |
Address |
BasicConnectionTable.getLocalAddress() |
Address |
ReplicatedHashMap.getLocalAddress() |
Address |
ReplicatedTree.getLocalAddress() |
Address |
RequestCorrelator.getLocalAddress() |
Address |
PartitionedHashMap.getLocalAddress() |
protected Address |
TCPConnectionMap.TCPConnection.getPeerAddress() |
Address |
PartitionedHashMap.HashFunction.hash(K key,
List<Address> membership)
Defines a hash function to pick the right node from the list of cluster nodes.
|
Address |
PartitionedHashMap.ConsistentHashFunction.hash(K key,
List<Address> members) |
protected Address |
TCPConnectionMap.TCPConnection.readPeerAddress(Socket client_sock)
Reads the peer's address.
|
Modifier and Type | Method and Description |
---|---|
Collection<Address> |
RequestOptions.getExclusionList() |
List<Address> |
ReplicatedTree.getMembers() |
List<Address> |
ReplCache.HashFunction.hash(K key,
short replication_count)
Function that, given a key and a replication count, returns replication_count number of different
addresses of nodes.
|
List<Address> |
ReplCache.ConsistentHashFunction.hash(K key,
short replication_count) |
Modifier and Type | Method and Description |
---|---|
void |
AbstractConnectionMap.addConnection(Address address,
V conn) |
<T> T |
RpcDispatcher.callRemoteMethod(Address dest,
MethodCall call,
RequestOptions options)
Invokes a method in a cluster member and - if blocking - returns the result
|
<T> T |
RpcDispatcher.callRemoteMethod(Address dest,
String method_name,
Object[] args,
Class[] types,
RequestOptions options)
Invokes a method in a cluster member and - if blocking - returns the result
|
<T> NotifyingFuture<T> |
RpcDispatcher.callRemoteMethodWithFuture(Address dest,
MethodCall call,
RequestOptions options)
Invokes a method in a cluster member and - if blocking - returns the result
|
void |
AbstractConnectionMap.ConnectionMapListener.connectionClosed(Address address) |
void |
BasicConnectionTable.ConnectionListener.connectionClosed(Address peer_addr) |
boolean |
TCPConnectionMap.connectionEstablishedTo(Address addr) |
boolean |
TCPConnectionMap.Mapper.connectionEstablishedTo(Address address) |
void |
BasicConnectionTable.ConnectionListener.connectionOpened(Address peer_addr) |
void |
AbstractConnectionMap.ConnectionMapListener.connectionOpened(Address address,
V conn) |
protected RequestCorrelator |
MessageDispatcher.createRequestCorrelator(Protocol transport,
RequestHandler handler,
Address local_addr) |
TCPConnectionMap.TCPConnection |
TCPConnectionMap.Mapper.getConnection(Address dest) |
V |
ConnectionMap.getConnection(Address dest) |
protected TCPConnectionMap.TCPConnection |
TCPConnectionMap.Mapper.getConnectionUnderLock(Address dest) |
boolean |
AbstractConnectionMap.hasConnection(Address address) |
boolean |
AbstractConnectionMap.hasOpenConnection(Address address) |
boolean |
RspFilter.isAcceptable(Object response,
Address sender)
Determines whether a response from a given sender should be added to the response list of the request
|
protected void |
AbstractConnectionMap.notifyConnectionClosed(Address address) |
protected void |
AbstractConnectionMap.notifyConnectionOpened(Address address,
V conn) |
void |
TCPConnectionMap.receive(Address sender,
byte[] data,
int offset,
int length)
Calls the receiver callback.
|
void |
TCPConnectionMap.Receiver.receive(Address sender,
byte[] data,
int offset,
int length) |
void |
BasicConnectionTable.receive(Address sender,
byte[] data,
int offset,
int length)
Calls the receiver callback.
|
void |
BasicConnectionTable.Receiver.receive(Address sender,
byte[] data,
int offset,
int length) |
abstract void |
Request.receiveResponse(Object response_value,
Address sender,
boolean is_exception) |
void |
RspCollector.receiveResponse(Object response_value,
Address sender,
boolean is_exception) |
void |
GroupRequest.receiveResponse(Object response_value,
Address sender,
boolean is_exception)
Callback (called by RequestCorrelator or Transport).
|
void |
UnicastRequest.receiveResponse(Object response_value,
Address sender,
boolean is_exception)
Callback (called by RequestCorrelator or Transport).
|
void |
RequestCorrelator.receiveSuspect(Address mbr)
Event.SUSPECT event received from a layer below.
|
void |
AbstractConnectionMap.removeConnection(Address address) |
void |
BasicConnectionTable.removeConnection(Address addr)
Remove
addr from connection table. |
protected void |
ConnectionTableNIO.runRequest(Address addr,
ByteBuffer buf) |
void |
TCPConnectionMap.send(Address dest,
byte[] data,
int offset,
int length) |
void |
BasicConnectionTable.send(Address dest,
byte[] data,
int offset,
int length) |
protected void |
TCPConnectionMap.TCPConnection.sendLocalAddress(Address local_addr)
Send the cookie first, then the our port number.
|
void |
RequestCorrelator.sendUnicastRequest(long id,
Address target,
Message msg,
RspCollector coll)
Sends a request to a single destination
|
RequestOptions |
RequestOptions.setExclusionList(Address... mbrs) |
void |
RequestCorrelator.setLocalAddress(Address local_addr) |
void |
ReplCache.suspect(Address suspected_mbr) |
abstract void |
Request.suspect(Address mbr) |
void |
ReplicatedHashMap.suspect(Address suspected_mbr)
Called when a member is suspected
|
void |
RspCollector.suspect(Address mbr) |
void |
GroupRequest.suspect(Address suspected_member)
Callback (called by RequestCorrelator or Transport).
|
void |
UnicastRequest.suspect(Address suspected_member)
Callback (called by RequestCorrelator or Transport).
|
void |
PartitionedHashMap.suspect(Address suspected_mbr) |
void |
PartitionedHashMap.ConsistentHashFunction.suspect(Address suspected_mbr) |
Modifier and Type | Method and Description |
---|---|
<T> RspList<T> |
RpcDispatcher.callRemoteMethods(Collection<Address> dests,
MethodCall method_call,
RequestOptions options)
Invokes a method in all members contained in dests (or all members if dests is null).
|
<T> RspList<T> |
RpcDispatcher.callRemoteMethods(Collection<Address> dests,
String method_name,
Object[] args,
Class[] types,
RequestOptions options)
Invokes a method in all members contained in dests (or all members if dests is null).
|
<T> NotifyingFuture<RspList<T>> |
RpcDispatcher.callRemoteMethodsWithFuture(Collection<Address> dests,
MethodCall method_call,
RequestOptions options)
Invokes a method in all members contained in dests (or all members if dests is null).
|
protected <T> GroupRequest<T> |
MessageDispatcher.cast(Collection<Address> dests,
Message msg,
RequestOptions options,
boolean block_for_results) |
<T> RspList<T> |
MessageDispatcher.castMessage(Collection<Address> dests,
Message msg,
RequestOptions options)
Sends a message to the members listed in dests.
|
<T> NotifyingFuture<RspList<T>> |
MessageDispatcher.castMessageWithFuture(Collection<Address> dests,
Message msg,
RequestOptions options)
Sends a message to the members listed in dests.
|
Address |
PartitionedHashMap.HashFunction.hash(K key,
List<Address> membership)
Defines a hash function to pick the right node from the list of cluster nodes.
|
Address |
PartitionedHashMap.ConsistentHashFunction.hash(K key,
List<Address> members) |
void |
ReplCache.HashFunction.installNodes(List<Address> nodes)
When the topology changes, this method will be called.
|
void |
ReplCache.ConsistentHashFunction.installNodes(List<Address> new_nodes) |
void |
AbstractConnectionMap.retainAll(Collection<Address> current_mbrs)
Removes all connections which are not in current_mbrs
|
void |
TCPConnectionMap.retainAll(Collection<Address> members) |
void |
BasicConnectionTable.retainAll(Collection<Address> current_mbrs)
Removes all connections from ConnectionTable which are not in current_mbrs
|
void |
RequestCorrelator.sendRequest(long id,
Collection<Address> dest_mbrs,
Message msg,
RspCollector coll,
RequestOptions options)
Sends a request to a group.
|
void |
RequestCorrelator.sendRequest(long id,
List<Address> dest_mbrs,
Message msg,
RspCollector coll) |
protected void |
MessageDispatcher.setMembers(List<Address> new_mbrs)
If this dispatcher is using a user-provided PullPushAdapter, then need to set the members from the adapter
initially since viewChange has most likely already been called in PullPushAdapter.
|
void |
ReplicatedHashMap.Notification.viewChange(View view,
List<Address> mbrs_joined,
List<Address> mbrs_left) |
void |
ReplicatedHashMap.Notification.viewChange(View view,
List<Address> mbrs_joined,
List<Address> mbrs_left) |
Constructor and Description |
---|
GroupRequest(Message msg,
RequestCorrelator corr,
Address target,
RequestOptions options) |
RequestCorrelator(Protocol transport,
RequestHandler handler,
Address local_addr) |
RequestCorrelator(short id,
Protocol transport,
RequestHandler handler,
Address local_addr)
Constructor.
|
UnicastRequest(Message msg,
Address target,
RequestOptions options) |
UnicastRequest(Message msg,
RequestCorrelator corr,
Address target,
RequestOptions options) |
Constructor and Description |
---|
GroupRequest(Message msg,
RequestCorrelator corr,
Collection<Address> targets,
RequestOptions options) |
RequestCorrelator.MultiDestinationHeader(byte type,
long id,
boolean rsp_expected,
short corr_id,
Collection<Address> exclusion_list) |
Modifier and Type | Method and Description |
---|---|
protected RequestCorrelator |
MuxMessageDispatcher.createRequestCorrelator(Protocol transport,
RequestHandler handler,
Address localAddr) |
protected RequestCorrelator |
MuxRpcDispatcher.createRequestCorrelator(Protocol transport,
RequestHandler handler,
Address localAddr) |
boolean |
NoMuxHandlerRspFilter.isAcceptable(Object response,
Address sender) |
void |
MuxRequestCorrelator.sendUnicastRequest(long id,
Address target,
Message msg,
RspCollector coll) |
Modifier and Type | Method and Description |
---|---|
protected <T> GroupRequest<T> |
MuxMessageDispatcher.cast(Collection<Address> dests,
Message msg,
RequestOptions options,
boolean blockForResults) |
protected <T> GroupRequest<T> |
MuxRpcDispatcher.cast(Collection<Address> dests,
Message msg,
RequestOptions options,
boolean blockForResults) |
void |
MuxRequestCorrelator.sendRequest(long requestId,
Collection<Address> dest_mbrs,
Message msg,
RspCollector coll,
RequestOptions options) |
Constructor and Description |
---|
MuxRequestCorrelator(short id,
Protocol transport,
RequestHandler handler,
Address localAddr) |
Modifier and Type | Method and Description |
---|---|
static Class<Address> |
ClassConfigurator.get(short magic)
Returns a class for a magic number.
|
Modifier and Type | Method and Description |
---|---|
void |
QuoteClient.suspect(Address suspected_mbr) |
void |
ViewDemo.suspect(Address suspected_mbr)
Called when a member is suspected
|
Modifier and Type | Method and Description |
---|---|
void |
ReplicatedHashMapDemo.viewChange(View view,
List<Address> new_mbrs,
List<Address> old_mbrs) |
void |
ReplicatedHashMapDemo.viewChange(View view,
List<Address> new_mbrs,
List<Address> old_mbrs) |
Modifier and Type | Field and Description |
---|---|
Address |
Node.addr |
Modifier and Type | Method and Description |
---|---|
void |
GraphPanel.addNode(String lbl,
Address addr,
int xloc,
int yloc) |
void |
Whiteboard.addNode(String lbl,
Address addr,
int xloc,
int yloc) |
void |
Whiteboard.suspect(Address obj) |
Modifier and Type | Method and Description |
---|---|
void |
GraphPanel.adjustNodes(List<Address> v) |
Modifier and Type | Field and Description |
---|---|
protected Address |
Executing.Owner.address |
protected Address |
SEQUENCER.coord |
protected Address |
CENTRAL_LOCK.coord |
protected Address |
FORWARD_TO_COORD.coord
the address of the current coordinator, all msgs are forwarded to it
|
protected Address |
RELAY.coord |
protected Address |
CENTRAL_EXECUTOR.coord |
protected Address |
COUNTER.coord
The address of the cluster coordinator.
|
protected Address |
Discovery.current_coord |
protected Address |
FD.FdHeader.from |
protected Address |
ASYM_ENCRYPT.key_server_addr |
protected Address |
FD.local_addr |
protected Address |
UNICAST.local_addr |
protected Address |
MERGE2.local_addr |
protected Address |
Discovery.local_addr |
protected Address |
DAISYCHAIN.local_addr |
protected Address |
TP.local_addr
The address (host and port) of this member.
|
protected Address |
Locking.local_addr |
protected Address |
EncryptBase.local_addr |
protected Address |
SEQUENCER.local_addr |
protected Address |
UNICAST2.local_addr |
protected Address |
STOMP.local_addr |
protected Address |
VERIFY_SUSPECT.local_addr |
protected Address |
AUTH.local_addr |
protected Address |
Executing.local_addr |
protected Address |
FORWARD_TO_COORD.local_addr |
protected Address |
RSVP.local_addr |
protected Address |
MERGE3.local_addr |
protected Address |
SCOPE.local_addr |
protected Address |
RELAY.local_addr |
protected Address |
COUNTER.local_addr |
protected Address |
SEQUENCER.Flusher.new_coord |
protected Address |
DAISYCHAIN.next |
protected Address |
RELAY.RelayHeader.original_sender |
protected Address |
FD.ping_dest |
protected Address |
PingData.sender |
protected Address |
VERIFY_SUSPECT.Entry.suspect |
protected Address |
RSVP.Entry.target |
Modifier and Type | Field and Description |
---|---|
protected List<Address> |
COUNTER.backup_coords
Backup coordinators.
|
protected List<Address> |
CENTRAL_LOCK.backups |
protected List<Address> |
CENTRAL_EXECUTOR.backups |
protected AgeOutCache<Address> |
UNICAST.cache |
protected AgeOutCache<Address> |
UNICAST2.cache |
protected ConcurrentMap<Address,NavigableSet<Long>> |
SEQUENCER.delivery_table |
protected Map<Address,String> |
STOMP.endpoints |
protected List<Address> |
PEER_LOCK.PeerLock.grants |
protected LazyRemovalCache<Address,PhysicalAddress> |
TP.logical_addr_cache
Cache which maintains mappings between logical and physical addresses.
|
protected Collection<Address> |
FD.FdHeader.mbrs |
protected List<Address> |
FD.members |
protected List<Address> |
UNICAST.members |
protected Set<Address> |
MERGE2.members |
protected List<Address> |
Discovery.members |
protected Set<Address> |
TP.members
The members of this group (updated when a member joins or leaves).
|
protected List<Address> |
UNICAST2.members |
protected List<Address> |
RSVP.members |
protected Set<Address> |
MERGE2.merge_candidates |
protected List<Address> |
FD.pingable_mbrs
Members from which we select ping_dest.
|
protected static LazyRemovalCache.Printable<Address,PhysicalAddress> |
TP.print_function |
protected ConcurrentMap<Address,ConcurrentMap<Short,SCOPE.MessageQueue>> |
SCOPE.queues
Used to find the correct AckReceiverWindow on message reception and deliver it in the right order
|
protected Map<Address,FlowControl.Credit> |
FlowControl.received
Keeps track of credits per member at the receiver.
|
protected ConcurrentMap<Address,UNICAST.ReceiverEntry> |
UNICAST.recv_table |
protected ConcurrentMap<Address,UNICAST2.ReceiverEntry> |
UNICAST2.recv_table |
protected ConcurrentMap<Address,UNICAST.SenderEntry> |
UNICAST.send_table |
protected ConcurrentMap<Address,UNICAST2.SenderEntry> |
UNICAST2.send_table |
protected Map<Address,FlowControl.Credit> |
UFC.sent
Map: keys are members, values are credits left.
|
protected SuppressLog<Address> |
TP.suppress_log_different_cluster
Log to suppress identical warnings for messages from members in different clusters
|
protected SuppressLog<Address> |
TP.suppress_log_different_version
Log to suppress identical warnings for messages from members with different (incompatible) versions
|
protected BoundedList<Address> |
FD.suspect_history |
protected List<Address> |
FD.Broadcaster.suspected_mbrs |
protected Set<Address> |
FD_ALL.suspected_mbrs |
protected Set<Address> |
FD_SOCK.suspected_mbrs |
protected List<Address> |
FD.BroadcastTask.suspected_members |
protected Map<Address,String> |
RELAY.ViewData.uuids |
protected ConcurrentMap<ViewId,SortedSet<Address>> |
MERGE3.views |
protected AgeOutCache<Address> |
TP.who_has_cache
Cache keeping track of WHO_HAS requests for physical addresses (given a logical address) and expiring
them after who_has_cache_timeoout ms
|
Modifier and Type | Method and Description |
---|---|
protected Address |
FD_SOCK.determineCoordinator() |
Address |
TP.ProtocolAdapter.getAddress() |
Address |
AUTH.getAddress() |
Address |
PingData.getAddress() |
Address |
Executing.Owner.getAddress() |
Address |
CENTRAL_LOCK.getCoord() |
Address |
CENTRAL_EXECUTOR.getCoord() |
Address |
PingData.getCoordAddress() |
Address |
SEQUENCER.getCoordinator() |
protected Address |
ENCRYPT.getKeyServerAddr() |
protected Address |
ENCRYPT.getLocal_addr() |
Address |
SEQUENCER.getLocalAddress() |
protected Address |
FD.getPingDest(List<Address> mbrs) |
Address |
ASYM_ENCRYPT.keyServerAddr() |
Modifier and Type | Method and Description |
---|---|
AgeOutCache<Address> |
UNICAST.getAgeOutCache() |
AgeOutCache<Address> |
UNICAST2.getAgeOutCache() |
Set<Address> |
TP.ProtocolAdapter.getMembers() |
Collection<Address> |
PingData.getMembers() |
protected List<Address> |
FD.Broadcaster.getSuspectedMembers() |
Map<Address,View> |
MERGE2.FindSubgroupsTask.getViews(List<PingData> initial_mbrs) |
Modifier and Type | Method and Description |
---|---|
protected void |
RSVP.Entry.ack(Address member) |
void |
COUNTER.ReconciliationTask.add(COUNTER.ReconcileResponse rsp,
Address sender) |
void |
DISCARD.addIgnoreMember(Address sender)
Messages from this sender will get dropped
|
protected void |
TP.addPhysicalAddressToCache(Address logical_addr,
PhysicalAddress physical_addr) |
protected static String |
FILE_PING.addressAsString(Address address) |
protected boolean |
VERIFY_SUSPECT.addSuspect(Address suspect) |
protected void |
FD.Broadcaster.addSuspectedMember(Address mbr)
Adds a suspected member.
|
void |
FD.BroadcastTask.addSuspectedMember(Address suspect) |
protected long |
FlowControl.adjustCredit(Map<Address,FlowControl.Credit> map,
Address sender,
int length)
Check whether sender has enough credits left.
|
protected void |
ASYM_ENCRYPT.becomeKeyServer(Address tmpKeyServer,
boolean left_mbrs) |
protected void |
SEQUENCER.broadcast(Message msg,
boolean copy,
Address original_sender,
long seqno,
boolean resend) |
protected boolean |
SEQUENCER.canDeliver(Address sender,
long seqno)
Checks if seqno has already been received from sender.
|
void |
FRAG2.clearFragmentsFor(Address mbr) |
void |
SCOPE.clearQueue(Address member) |
protected void |
FD.computePingDest(Address remove)
Computes pingable_mbrs (based on the current membership and the suspected members) and ping_dest
|
void |
TUNNEL.TUNNELPolicy.connect(List<RouterStub> stubs,
String group,
Address addr,
String logical_name,
List<PhysicalAddress> phys_addrs) |
protected void |
TCPGOSSIP.connect(RouterStub stub,
String group,
Address logical_addr) |
protected void |
TCPGOSSIP.connectAllStubs(String group,
Address logical_addr) |
boolean |
UNICAST2.connectionEstablished(Address target)
Is the send connection to target established
|
static RELAY.RelayHeader |
RELAY.RelayHeader.createDisseminateHeader(Address original_sender) |
void |
Discovery.discoveryRequestReceived(Address sender,
String logical_name,
Collection<PhysicalAddress> physical_addrs) |
void |
TCPPING.discoveryRequestReceived(Address sender,
String logical_name,
Collection<PhysicalAddress> physical_addrs) |
protected void |
TP.dispatchToThreadPool(Executor pool,
Address sender,
byte[] data,
int offset,
int length) |
protected void |
TP.doSend(Buffer buf,
Address dest,
boolean multicast) |
void |
UNICAST.expired(Address key)
Called by AgeOutCache, to removed expired connections
|
void |
UNICAST2.expired(Address key)
Called by AgeOutCache, to removed expired connections
|
protected void |
SEQUENCER.flush(Address new_coord) |
protected SCOPE.MessageQueue |
SCOPE.getOrCreateQueue(Address sender,
short scope) |
protected UNICAST.ReceiverEntry |
UNICAST.getOrCreateReceiverEntry(Address sender,
long seqno,
short conn_id) |
protected UNICAST2.ReceiverEntry |
UNICAST2.getOrCreateReceiverEntry(Address sender,
long seqno,
short conn_id) |
protected PhysicalAddress |
TP.getPhysicalAddressFromCache(Address logical_addr) |
protected UNICAST.ReceiverEntry |
UNICAST.getReceiverEntry(Address sender,
long seqno,
boolean first,
short conn_id) |
protected UNICAST2.ReceiverEntry |
UNICAST2.getReceiverEntry(Address sender,
long seqno,
boolean first,
short conn_id) |
protected void |
UNICAST.handleAckReceived(Address sender,
long seqno)
Add the ACK to hashtable.sender.sent_msgs
|
protected void |
Executing.handleConsumerFoundResponse(long threadId,
Address address) |
protected void |
Executing.handleConsumerReadyRequest(long requestId,
Address address) |
protected void |
Executing.handleConsumerUnreadyRequest(long requestId,
Address address) |
protected abstract void |
FlowControl.handleCredit(Address sender,
long increase) |
protected void |
UFC.handleCredit(Address sender,
long increase) |
protected void |
MFC.handleCredit(Address sender,
long increase) |
protected void |
FlowControl.handleCreditRequest(Map<Address,FlowControl.Credit> map,
Address sender,
long requested_credits) |
protected void |
UNICAST.handleDataReceived(Address sender,
long seqno,
short conn_id,
boolean first,
Message msg,
Event evt)
Check whether the hashtable contains an entry e for
sender (create if not). |
protected boolean |
UNICAST2.handleDataReceived(Address sender,
long seqno,
short conn_id,
boolean first,
Message msg,
Event evt)
Check whether the hashmap contains an entry e for
sender (create if not). |
protected abstract Object |
FlowControl.handleDownMessage(Event evt,
Message msg,
Address dest,
int length) |
protected Object |
UFC.handleDownMessage(Event evt,
Message msg,
Address dest,
int length) |
protected Object |
MFC.handleDownMessage(Event evt,
Message msg,
Address dest,
int length) |
protected void |
Executing.handleExceptionResponse(Address source,
long requestId,
Throwable throwable) |
protected void |
Executing.handleInterruptRequest(Address source,
long requestId) |
protected void |
PEER_LOCK.PeerLock.handleLockGrantedResponse(Owner owner,
Address sender) |
protected void |
Locking.ClientLock.handleLockGrantedResponse(Owner owner,
Address sender) |
protected void |
Locking.handleLockGrantedResponse(String lock_name,
Owner owner,
Address sender) |
protected void |
ASYM_ENCRYPT.handleNewKeyServer(Address newKeyServer,
boolean merge_view,
boolean left_mbrs)
If the keyserver changed, send a request for the secret key to the keyserver
|
protected void |
COUNTER.handleRequest(COUNTER.Request req,
Address sender) |
protected void |
UNICAST.handleResendingOfFirstMessage(Address sender,
long seqno)
We need to resend our first message with our conn_id
|
protected void |
UNICAST2.handleResendingOfFirstMessage(Address sender,
long seqno)
We need to resend our first message with our conn_id
|
protected void |
RSVP.handleResponse(Address member,
short id) |
protected void |
COUNTER.handleResponse(COUNTER.Response rsp,
Address sender) |
protected void |
Executing.handleTaskRejectedResponse(Address source,
long requestId) |
protected void |
Executing.handleTaskRequest(long requestId,
Address address) |
protected void |
Executing.handleTaskSubmittedRequest(Runnable runnable,
Address source,
long requestId,
long threadId) |
protected void |
Executing.handleValueResponse(Address source,
long requestId,
Object value) |
protected void |
UNICAST2.handleXmitRequest(Address sender,
SeqnoList missing) |
protected boolean |
EncryptBase.inView(Address sender,
String error_msg) |
protected boolean |
RELAY.isLocal(Address dest)
Does the payload match the 'site' ID.
|
ASYM_ENCRYPT |
ASYM_ENCRYPT.keyServerAddr(Address key_srv) |
protected boolean |
ASYM_ENCRYPT.keyServerChanged(Address newKeyServer) |
<T extends EncryptBase> |
EncryptBase.localAddress(Address addr) |
protected void |
TP.receive(Address sender,
byte[] data,
int offset,
int length)
Subclasses must call this method when a unicast or multicast message has been received.
|
void |
BasicTCP.receive(Address sender,
byte[] data,
int offset,
int length)
ConnectionMap.Receiver interface
|
protected static void |
SHARED_LOOPBACK.register(String channel_name,
Address local_addr,
SHARED_LOOPBACK shared_loopback) |
protected void |
TP.registerLocalAddress(Address addr)
Associates the address with the physical address fetched from the cache
|
protected void |
RACKSPACE_PING.remove(String clustername,
Address addr) |
protected void |
FILE_PING.remove(String clustername,
Address addr) |
protected void |
S3_PING.remove(String clustername,
Address addr) |
protected void |
SWIFT_PING.remove(String clustername,
Address addr) |
protected void |
JDBC_PING.remove(String clustername,
Address addr) |
void |
UNICAST.removeConnection(Address mbr)
Removes and resets from connection table (which is already locked).
|
void |
UNICAST2.removeConnection(Address mbr)
Removes and resets from connection table (which is already locked).
|
void |
DISCARD.removeIgnoredMember(Address member) |
protected void |
TP.removeLogicalAddressFromCache(Address logical_addr) |
void |
UNICAST.removeReceiveConnection(Address mbr) |
void |
UNICAST2.removeReceiveConnection(Address mbr) |
void |
SCOPE.removeScope(Address member,
short scope) |
void |
UNICAST.removeSendConnection(Address mbr) |
void |
UNICAST2.removeSendConnection(Address mbr) |
protected boolean |
VERIFY_SUSPECT.removeSuspect(Address suspect) |
void |
UNICAST2.retransmit(SeqnoList missing,
Address sender) |
protected void |
COUNTER.send(Address dest,
Buffer buffer) |
void |
TCP_NIO.send(Address dest,
byte[] data,
int offset,
int length) |
abstract void |
BasicTCP.send(Address dest,
byte[] data,
int offset,
int length) |
void |
TCP.send(Address dest,
byte[] data,
int offset,
int length) |
protected void |
FORWARD_TO_COORD.send(Address target,
long ack_id,
byte type) |
protected void |
TP.send(Message msg,
Address dest,
boolean multicast)
Serializes and sends a message.
|
protected void |
TUNNEL.send(Message msg,
Address dest,
boolean multicast) |
protected void |
UNICAST.sendAck(Address dst,
long seqno) |
protected void |
FORWARD_TO_COORD.sendAck(Address target,
long ack_id) |
protected void |
UNICAST2.sendAck(Address dest,
long seqno,
short conn_id) |
protected void |
COUNTER.sendCounterNotFoundExceptionResponse(Address dest,
Owner owner,
String counter_name) |
protected void |
CENTRAL_LOCK.sendCreateLockRequest(Address dest,
String lock_name,
Owner owner) |
protected void |
FlowControl.sendCredit(Address dest,
long credits) |
protected void |
FlowControl.sendCreditRequest(Address dest,
Long credits_needed)
We cannot send this request as OOB messages, as the credit request needs to queue up behind the regular messages;
if a receiver cannot process the regular messages, that is a sign that the sender should be throttled !
|
protected void |
CENTRAL_LOCK.sendDeleteLockRequest(Address dest,
String lock_name) |
protected void |
Discovery.sendDiscoveryResponse(Address logical_addr,
List<PhysicalAddress> physical_addrs,
boolean is_server,
boolean return_view_only,
String logical_name,
Address sender) |
protected void |
FD.sendHeartbeatResponse(Address dest) |
protected void |
AUTH.sendJoinRejectionMessage(Address dest,
String error_msg) |
protected void |
ASYM_ENCRYPT.sendKeyRequest(Address key_server)
send client's public key to server and request server's public key
|
protected void |
AUTH.sendMergeRejectionMessage(Address dest) |
protected void |
FORWARD_TO_COORD.sendNotCoord(Address target,
long ack_id) |
protected void |
AUTH.sendRejectionMessage(byte type,
Address dest,
String error_msg) |
protected void |
COUNTER.sendRequest(Address dest,
COUNTER.Request req) |
protected void |
Executing.sendRequest(Address dest,
Executing.Type type,
long requestId,
Object object) |
protected void |
Locking.sendRequest(Address dest,
Locking.Type type,
String lock_name,
Owner owner,
long timeout,
boolean is_trylock) |
protected void |
UNICAST.sendRequestForFirstSeqno(Address dest,
long seqno_received) |
protected void |
UNICAST2.sendRequestForFirstSeqno(Address dest,
long seqno_received) |
protected void |
COUNTER.sendResponse(Address dest,
COUNTER.Response rsp) |
protected void |
RSVP.sendResponse(Address dest,
short id) |
protected void |
ASYM_ENCRYPT.sendSecretKey(SecretKey secret_key,
PublicKey public_key,
Address source) |
protected void |
UNICAST2.sendStableMessage(Address dest,
short conn_id,
long hd,
long hr) |
protected void |
Executing.sendThreadRequest(Address dest,
long threadId,
Executing.Type type,
long requestId,
Object object) |
protected abstract void |
Executing.sendToCoordinator(Executing.Type type,
long requestId,
Address address) |
protected void |
CENTRAL_EXECUTOR.sendToCoordinator(Executing.Type type,
long requestId,
Address value) |
protected void |
TP.sendToSingleMember(Address dest,
byte[] buf,
int offset,
int length) |
protected void |
SHARED_LOOPBACK.sendToSingleMember(Address dest,
byte[] buf,
int offset,
int length) |
void |
TUNNEL.TUNNELPolicy.sendToSingleMember(List<RouterStub> stubs,
String group,
Address dest,
byte[] data,
int offset,
int length) |
protected void |
TP.setInAllThreadFactories(String cluster_name,
Address local_address,
String pattern) |
protected void |
ENCRYPT.setKeyServerAddr(Address keyServerAddr) |
protected void |
ENCRYPT.setLocal_addr(Address local_addr) |
void |
DISCARD.setLocalAddress(Address localAddress) |
protected void |
UNICAST2.stable(Address sender,
short conn_id,
long hd,
long hr)
Purge all messages in window for local_addr, which are <= low.
|
protected void |
FD.Broadcaster.startBroadcastTask(Address suspect)
Starts a new task, or - if already running - adds the argument to the running task.
|
protected void |
SEQUENCER.startFlusher(Address new_coord) |
protected static void |
SHARED_LOOPBACK.unregister(String channel_name,
Address local_addr) |
protected void |
FD.unsuspect(Address mbr) |
protected boolean |
FD_ALL.unsuspect(Address mbr)
Removes mbr from suspected_mbrs and sends a UNSUSPECT event up and down the stack
|
void |
VERIFY_SUSPECT.unsuspect(Address mbr) |
protected void |
FD.updateTimestamp(Address sender) |
protected static void |
TP.writeMessageList(Address dest,
Address src,
List<Message> msgs,
DataOutputStream dos,
boolean multicast)
Write a lits of messages with the same destination and *mostly* the same src addresses.
|
Modifier and Type | Method and Description |
---|---|
protected long |
FlowControl.adjustCredit(Map<Address,FlowControl.Credit> map,
Address sender,
int length)
Check whether sender has enough credits left.
|
protected void |
VERIFY_SUSPECT.adjustSuspectedMembers(List<Address> new_mbrship)
Removes all elements from suspects that are not in the new membership
|
protected void |
CENTRAL_LOCK.copyLocksTo(List<Address> new_joiners) |
protected void |
CENTRAL_EXECUTOR.copyQueueTo(List<Address> new_joiners) |
static List<View> |
MERGE3.detectDifferentViews(Map<Address,View> map) |
protected Address |
FD.getPingDest(List<Address> mbrs) |
protected void |
FlowControl.handleCreditRequest(Map<Address,FlowControl.Credit> map,
Address sender,
long requested_credits) |
protected void |
Locking.ServerLock.handleView(List<Address> members) |
protected void |
FlowControl.handleViewChange(List<Address> mbrs) |
protected void |
UFC.handleViewChange(List<Address> mbrs) |
protected void |
MFC.handleViewChange(List<Address> mbrs) |
protected static String |
FlowControl.printMap(Map<Address,FlowControl.Credit> m) |
void |
TCP_NIO.retainAll(Collection<Address> members) |
abstract void |
BasicTCP.retainAll(Collection<Address> members) |
void |
TCP.retainAll(Collection<Address> members) |
protected boolean |
RSVP.Entry.retainAll(Collection<Address> members) |
protected void |
PEER_LOCK.PeerLock.retainAll(List<Address> members) |
protected void |
RELAY.sendViewOnLocalCluster(List<Address> destinations,
byte[] buffer) |
protected void |
RELAY.sendViewOnLocalCluster(RELAY.ViewData data,
boolean use_seperate_thread,
List<Address> new_mbrs) |
protected void |
RELAY.sendViewOnLocalCluster(View remote_view,
View global_view,
boolean use_seperate_thread,
List<Address> new_mbrs) |
protected void |
FD_ALL.suspect(List<Address> suspects) |
Constructor and Description |
---|
Executing.Owner(Address address,
long requestId) |
FD_SOCK.FdHeader(byte type,
Address mbr) |
FD_SOCK.FdHeader(byte type,
Address mbr,
IpAddress sock_addr) |
FD.FdHeader(byte type,
Collection<Address> mbrs,
Address from) |
HTOTAL.HTotalHeader(Address dest,
Address src) |
PingData(Address sender,
View view,
boolean is_server) |
PingData(Address sender,
View view,
boolean is_server,
String logical_name,
Collection<PhysicalAddress> physical_addrs) |
PingData(Address sender,
View view,
ViewId view_id,
boolean is_server,
String logical_name,
Collection<PhysicalAddress> physical_addrs) |
RSVP.Entry(Address member)
Unicast entry
|
SEQUENCER.Flusher(Address new_coord) |
TP.ProtocolAdapter(String cluster_name,
Address local_addr,
short transport_id,
Protocol up,
Protocol down,
String pattern) |
VERIFY_SUSPECT.Entry(Address suspect,
long target_time) |
Constructor and Description |
---|
DISCARD.DiscardHeader(Set<Address> ignoredAddresses) |
FD_SOCK.FdHeader(byte type,
Map<Address,IpAddress> cachedAddrs) |
FD_SOCK.FdHeader(byte type,
Set<Address> mbrs) |
FD.FdHeader(byte type,
Collection<Address> mbrs,
Address from) |
RSVP.Entry(Collection<Address> members)
Multicast entry
|
Modifier and Type | Field and Description |
---|---|
protected Address |
GMS.local_addr |
protected Address |
StreamingStateTransfer.local_addr |
protected Address |
NAKACK2.local_addr |
protected Address |
StreamingStateTransfer.StateGetter.requester |
protected Address |
MergeData.sender |
protected Address |
StreamingStateTransfer.state_provider |
protected Address |
STATE.StateOutputStream.stateRequester |
Modifier and Type | Field and Description |
---|---|
protected List<Address> |
StreamingStateTransfer.members |
protected List<Address> |
NAKACK2.members |
protected Map<Address,OutputStream> |
StreamingStateTransfer.pending_state_transfers
Whenever we get a state transfer request, we create an OutputStream and add the state requester's address and
the OutputStream to this map.
|
protected SuppressLog<Address> |
NAKACK.suppress_log_non_member
Log to suppress identical warnings for messages from non-members
|
protected SuppressLog<Address> |
NAKACK2.suppress_log_non_member
Log to suppress identical warnings for messages from non-members
|
protected ConcurrentMap<Address,Table<Message>> |
NAKACK2.xmit_table
Map to store sent and received messages (keyed by sender)
|
Modifier and Type | Method and Description |
---|---|
protected Address |
GMS.determineCoordinator() |
protected Address |
StreamingStateTransfer.determineCoordinator() |
Address |
GMS.GmsHeader.getMember() |
Address |
NakAckHeader.getSender() |
Address |
MergeData.getSender() |
Address |
NakAckHeader2.getSender() |
Modifier and Type | Method and Description |
---|---|
protected void |
Merger._handleMergeRequest(Address sender,
MergeId merge_id,
Collection<? extends Address> mbrs) |
protected void |
STATE_SOCK.createStreamToProvider(Address provider,
StreamingStateTransfer.StateHeader hdr) |
protected abstract void |
StreamingStateTransfer.createStreamToProvider(Address provider,
StreamingStateTransfer.StateHeader hdr)
Creates an InputStream to the state provider to read the state
|
protected void |
STATE.createStreamToProvider(Address provider,
StreamingStateTransfer.StateHeader hdr) |
protected void |
STATE_SOCK.createStreamToRequester(Address requester) |
protected abstract void |
StreamingStateTransfer.createStreamToRequester(Address requester)
Creates an OutputStream to the state requester to write the state
|
protected void |
STATE.createStreamToRequester(Address requester) |
static NakAckHeader2 |
NakAckHeader2.createXmitRequestHeader(Address orginal_sender) |
static NakAckHeader |
NakAckHeader.createXmitRequestHeader(long low,
long high,
Address orginal_sender) |
Digest |
NAKACK.getDigest(Address mbr) |
Digest |
NAKACK2.getDigest(Address mbr) |
protected void |
STATE_TRANSFER.getStateFromApplication(Address requester,
Digest digest) |
protected void |
StreamingStateTransfer.getStateFromApplication(Address requester,
OutputStream out,
boolean use_separate_thread) |
NakReceiverWindow |
NAKACK.getWindow(Address mbr)
Please don't use this method; it is only provided for unit testing !
|
Table<Message> |
NAKACK2.getWindow(Address sender)
Returns the receive window for sender; only used for testing.
|
void |
Merger.handleDigestResponse(Address sender,
Digest digest) |
void |
ServerGmsImpl.handleDigestResponse(Address sender,
Digest digest) |
void |
GmsImpl.handleDigestResponse(Address sender,
Digest digest) |
protected void |
StreamingStateTransfer.handleEOF(Address sender) |
protected void |
STATE.handleEOF(Address sender) |
void |
Merger.handleMergeRequest(Address sender,
MergeId merge_id,
Collection<? extends Address> mbrs)
Get the view and digest and send back both (MergeData) in the form of a MERGE_RSP to the sender.
|
void |
ServerGmsImpl.handleMergeRequest(Address sender,
MergeId merge_id,
Collection<? extends Address> mbrs)
Get the view and digest and send back both (MergeData) in the form of a MERGE_RSP to the sender.
|
void |
GmsImpl.handleMergeRequest(Address sender,
MergeId merge_id,
Collection<? extends Address> mbrs) |
protected void |
StreamingStateTransfer.handleStateChunk(Address sender,
byte[] buffer,
int offset,
int length) |
protected void |
STATE.handleStateChunk(Address sender,
byte[] buffer,
int offset,
int length) |
protected void |
STATE_SOCK.handleStateReq(Address requester) |
protected void |
StreamingStateTransfer.handleStateReq(Address requester) |
protected void |
NAKACK2.handleXmitReq(Address xmit_requester,
SeqnoList missing_msgs,
Address original_sender)
Retransmits messsages first_seqno to last_seqno from original_sender from xmit_table to xmit_requester,
called when XMIT_REQ is received.
|
void |
ParticipantGmsImpl.join(Address mbr,
boolean useFlushIfPresent) |
void |
ClientGmsImpl.join(Address address,
boolean useFlushIfPresent) |
void |
CoordGmsImpl.join(Address mbr,
boolean useFlushIfPresent) |
abstract void |
GmsImpl.join(Address mbr,
boolean useFlushIfPresent) |
void |
ParticipantGmsImpl.joinWithStateTransfer(Address mbr,
boolean useFlushIfPresent) |
void |
ClientGmsImpl.joinWithStateTransfer(Address local_addr,
boolean useFlushIfPresent) |
void |
CoordGmsImpl.joinWithStateTransfer(Address mbr,
boolean useFlushIfPresent) |
abstract void |
GmsImpl.joinWithStateTransfer(Address local_addr,
boolean useFlushIfPresent) |
void |
ParticipantGmsImpl.leave(Address mbr)
Loop: determine coord.
|
void |
ClientGmsImpl.leave(Address mbr) |
void |
CoordGmsImpl.leave(Address mbr)
The coordinator itself wants to leave the group
|
abstract void |
GmsImpl.leave(Address mbr) |
protected void |
StreamingStateTransfer.removeRequester(Address requester) |
void |
NAKACK.retransmit(long first_seqno,
long last_seqno,
Address sender)
Implementation of Retransmitter.RetransmitCommand.
|
protected void |
NAKACK2.retransmit(long first_seqno,
long last_seqno,
Address sender) |
protected void |
NAKACK.retransmit(long first_seqno,
long last_seqno,
Address sender,
boolean multicast_xmit_request) |
protected void |
NAKACK2.retransmit(long first_seqno,
long last_seqno,
Address sender,
boolean multicast_xmit_request) |
protected void |
NAKACK2.retransmit(SeqnoList missing_msgs,
Address sender,
boolean multicast_xmit_request) |
protected void |
StreamingStateTransfer.sendEof(Address requester) |
protected void |
STATE_TRANSFER.sendException(Address requester,
Throwable exception) |
protected void |
StreamingStateTransfer.sendException(Address requester,
Throwable exception) |
void |
GMS.sendJoinResponse(JoinRsp rsp,
Address dest) |
protected void |
Merger.sendMergeRejectedResponse(Address sender,
MergeId merge_id) |
protected void |
GmsImpl.sendMergeRejectedResponse(Address sender,
MergeId merge_id) |
protected void |
NAKACK2.sendXmitRsp(Address dest,
Message msg)
Sends a message msg to the requester.
|
protected void |
StreamingStateTransfer.setStateInApplication(Address provider,
InputStream in,
Digest digest) |
void |
ParticipantGmsImpl.suspect(Address mbr) |
void |
CoordGmsImpl.suspect(Address mbr) |
void |
GmsImpl.suspect(Address mbr) |
void |
ParticipantGmsImpl.unsuspect(Address mbr)
Removes previously suspected member from list of currently suspected members
|
void |
GmsImpl.unsuspect(Address mbr) |
protected boolean |
GMS.wouldBeNewCoordinator(Address potential_new_coord)
Checks whether the potential_new_coord would be the new coordinator (2nd in line)
|
Modifier and Type | Method and Description |
---|---|
protected void |
Merger._handleMergeRequest(Address sender,
MergeId merge_id,
Collection<? extends Address> mbrs) |
protected void |
NAKACK2.adjustReceivers(List<Address> new_members)
Remove old members from the retransmission buffers.
|
void |
GMS.castViewChange(View new_view,
Digest digest,
JoinRsp jr,
Collection<Address> newMembers)
Broadcasts the new view and digest, and waits for acks from all members in the list given as argument.
|
View |
GMS.getNextView(Collection<Address> new_mbrs,
Collection<Address> old_mbrs,
Collection<Address> suspected_mbrs)
Computes the next view.
|
View |
GMS.getNextView(Collection<Address> new_mbrs,
Collection<Address> old_mbrs,
Collection<Address> suspected_mbrs)
Computes the next view.
|
View |
GMS.getNextView(Collection<Address> new_mbrs,
Collection<Address> old_mbrs,
Collection<Address> suspected_mbrs)
Computes the next view.
|
void |
Merger.handleMergeRequest(Address sender,
MergeId merge_id,
Collection<? extends Address> mbrs)
Get the view and digest and send back both (MergeData) in the form of a MERGE_RSP to the sender.
|
void |
ServerGmsImpl.handleMergeRequest(Address sender,
MergeId merge_id,
Collection<? extends Address> mbrs)
Get the view and digest and send back both (MergeData) in the form of a MERGE_RSP to the sender.
|
void |
GmsImpl.handleMergeRequest(Address sender,
MergeId merge_id,
Collection<? extends Address> mbrs) |
void |
Merger.merge(Map<Address,View> views)
Invoked upon receiving a MERGE event from the MERGE layer.
|
void |
CoordGmsImpl.merge(Map<Address,View> views)
Invoked upon receiving a MERGE event from the MERGE layer.
|
void |
GmsImpl.merge(Map<Address,View> views) |
static void |
Merger.sanitizeViews(Map<Address,View> map)
Removes all members from a given view which don't have us in their view
(https://jira.jboss.org/browse/JGRP-1061).
|
Constructor and Description |
---|
GMS.GmsHeader(byte type,
Address mbr) |
GMS.GmsHeader(byte type,
Address mbr,
boolean useFlushIfPresent)
Used for JOIN_REQ or LEAVE_REQ header
|
MergeData(Address sender,
View view,
Digest digest) |
MergeData(Address sender,
View view,
Digest digest,
boolean merge_rejected) |
STATE.StateOutputStream(Address stateRequester) |
StreamingStateTransfer.StateGetter(Address requester,
OutputStream output) |
Constructor and Description |
---|
FLUSH.FlushHeader(byte type,
long viewID,
Collection<? extends Address> flushView) |
GMS.GmsHeader(byte type,
Collection<Address> mbrs) |
Modifier and Type | Interface and Description |
---|---|
interface |
SiteAddress
Address with a site suffix
|
Modifier and Type | Class and Description |
---|---|
class |
CanBeSiteMaster
Subclass of
UUID which adds a boolean as payload. |
class |
CanBeSiteMasterTopology
Subclass of
TopologyUUID which adds a boolean as payload. |
class |
SiteMaster
Special address with the UUID part being 0: identifies the current (relay) coordinator of a given site.
|
class |
SiteUUID
Implementation of SiteAddress
|
Modifier and Type | Field and Description |
---|---|
protected Address |
RELAY2.coord |
protected Address |
RELAY2.Relay2Header.final_dest |
protected Address |
RELAY2.local_addr |
protected Address |
RELAY2.Relay2Header.original_sender |
Modifier and Type | Field and Description |
---|---|
protected List<Address> |
RELAY2.members |
Modifier and Type | Method and Description |
---|---|
protected static Address |
RELAY2.determineSiteMaster(View view)
Gets the site master from view.
|
Address |
RELAY2.getLocalAddress() |
Address |
Relayer.Route.siteMaster() |
Modifier and Type | Method and Description |
---|---|
protected void |
Relayer.Bridge.changeStatusToUp(short id,
JChannel bridge,
Address site_master) |
int |
SiteMaster.compareTo(Address other) |
protected Message |
Relayer.Route.createMessage(Address target,
Address final_destination,
Address original_sender,
Message msg) |
protected void |
RELAY2.deliver(Address dest,
Address sender,
Message msg) |
protected void |
RELAY2.forwardTo(Address next_dest,
SiteAddress final_dest,
Address original_sender,
Message msg,
boolean forward_to_current_coord) |
void |
Relayer.Route.send(short target_site,
Address final_destination,
Address original_sender,
Message msg) |
protected void |
RELAY2.sendSiteUnreachableTo(Address dest,
short target_site) |
protected void |
RELAY2.sendToBridges(Address sender,
Message msg,
short... excluded_sites)
Sends the message via all bridges excluding the excluded_sites bridges
|
Relayer.Route |
Relayer.Route.siteMaster(Address new_site_master) |
Constructor and Description |
---|
RELAY2.Relay2Header(byte type,
Address final_dest,
Address original_sender) |
Relayer.Route(Address site_master,
JChannel bridge) |
Relayer.Route(Address site_master,
JChannel bridge,
RELAY2.RouteStatus status) |
Modifier and Type | Method and Description |
---|---|
Address |
MessageID.getAddress() |
Address |
ToaHeader.getOrigin() |
Modifier and Type | Method and Description |
---|---|
Set<Address> |
SenderManager.getDestination(MessageID messageID)
obtains the destination set of a message
|
Collection<Address> |
ToaHeader.getDestinations() |
Modifier and Type | Method and Description |
---|---|
long |
SenderManager.addPropose(MessageID messageID,
Address from,
long sequenceNumber)
Add a propose from a member in destination set
|
Modifier and Type | Method and Description |
---|---|
void |
ToaHeader.addDestinations(Collection<Address> addresses) |
void |
SenderManager.addNewMessageToSend(MessageID messageID,
Collection<Address> destinations,
long initialSequenceNumber,
boolean deliverToMyself)
Add a new message sent
|
Constructor and Description |
---|
MessageID(Address address) |
MessageID(Address address,
long id) |
Modifier and Type | Class and Description |
---|---|
class |
IpAddress
Network-dependent address (Internet).
|
Modifier and Type | Field and Description |
---|---|
protected Address |
Retransmitter.Task.msg_sender |
protected Address |
Retransmitter.sender |
Address |
StateTransferInfo.target |
Modifier and Type | Method and Description |
---|---|
Address |
AddressGenerator.generateAddress() |
Address |
GossipData.getAddress() |
Modifier and Type | Method and Description |
---|---|
List<Address> |
GossipData.getMembers() |
Modifier and Type | Method and Description |
---|---|
int |
IpAddress.compareTo(Address o)
implements the java.lang.Comparable interface
|
void |
RouterStub.connect(String group,
Address addr,
String logical_name,
List<PhysicalAddress> phys_addrs)
Register this process with the router under
group . |
void |
RouterStub.disconnect(String group,
Address addr) |
void |
NakReceiverWindow.Listener.messageGapDetected(long from,
long to,
Address src) |
void |
NakReceiverWindow.Listener.missingMessageReceived(long seqno,
Address original_sender) |
void |
Retransmitter.RetransmitCommand.retransmit(long first_seqno,
long last_seqno,
Address sender)
Get the missing messages between sequence numbers
first_seqno and last_seqno . |
void |
RouterStub.sendToMember(String group,
Address dest,
byte[] data,
int offset,
int length) |
void |
ProtocolStack.startStack(String cluster_name,
Address local_addr)
Start all layers.
|
Modifier and Type | Method and Description |
---|---|
void |
GossipData.setMembers(List<Address> mbrs) |
Constructor and Description |
---|
DefaultRetransmitter.SeqnoTask(long seqno,
Interval intervals,
Retransmitter.RetransmitCommand cmd,
Address msg_sender) |
DefaultRetransmitter(Address sender,
Retransmitter.RetransmitCommand cmd,
TimeScheduler sched)
Create a new Retransmitter associated with the given sender address
|
GossipData(byte type,
String group,
Address addr) |
GossipData(byte type,
String group,
Address addr,
byte[] buffer) |
GossipData(byte type,
String group,
Address addr,
byte[] buffer,
int offset,
int length) |
GossipData(byte type,
String group,
Address addr,
List<Address> mbrs) |
GossipData(byte type,
String group,
Address addr,
List<Address> mbrs,
List<PhysicalAddress> physical_addrs) |
GossipData(byte type,
String group,
Address addr,
String logical_name,
List<PhysicalAddress> phys_addrs) |
NakReceiverWindow(Address sender,
Retransmitter.RetransmitCommand cmd,
long highest_delivered_seqno,
TimeScheduler sched)
Creates a new instance with the given retransmit command
|
NakReceiverWindow(Address sender,
Retransmitter.RetransmitCommand cmd,
long highest_delivered_seqno,
TimeScheduler sched,
boolean use_range_based_retransmitter) |
NakReceiverWindow(Address sender,
Retransmitter.RetransmitCommand cmd,
long highest_delivered_seqno,
TimeScheduler sched,
boolean use_range_based_retransmitter,
int num_rows,
int msgs_per_row,
double resize_factor,
long max_compaction_time,
boolean automatic_purging) |
RangeBasedRetransmitter.RangeTask(Seqno range,
Interval intervals,
Retransmitter.RetransmitCommand cmd,
Address msg_sender) |
RangeBasedRetransmitter(Address sender,
Retransmitter.RetransmitCommand cmd,
TimeScheduler sched)
Create a new Retransmitter associated with the given sender address
|
Retransmitter.Task(Interval intervals,
Retransmitter.RetransmitCommand cmd,
Address msg_sender) |
Retransmitter(Address sender,
Retransmitter.RetransmitCommand cmd,
TimeScheduler sched)
Create a new Retransmitter associated with the given sender address
|
RouterStubManager(Protocol owner,
String channelName,
Address logicalAddress,
long interval) |
StateTransferInfo(Address target) |
StateTransferInfo(Address target,
long timeout) |
StateTransferInfo(Address target,
long timeout,
byte[] state) |
Constructor and Description |
---|
GossipData(byte type,
String group,
Address addr,
List<Address> mbrs) |
GossipData(byte type,
String group,
Address addr,
List<Address> mbrs,
List<PhysicalAddress> physical_addrs) |
Modifier and Type | Class and Description |
---|---|
class |
AdditionalDataUUID
Subclass of
UUID which adds a string as payload. |
class |
PayloadUUID
Subclass of
UUID which adds a string as payload. |
class |
SingletonAddress
Address with a cluster name.
|
class |
TopologyUUID
Subclass of
UUID which adds 3 strings (siteId, rackId and machineId)as payload. |
class |
UUID
Logical address which is unique over space and time.
|
Modifier and Type | Field and Description |
---|---|
protected Address |
SingletonAddress.addr |
protected Address |
Owner.address |
protected Address |
ForwardQueue.local_addr |
protected Address |
Digest.DigestEntry.member |
protected Address[] |
Digest.members |
protected Address |
ForwardQueue.Flusher.new_coord |
protected Address |
Rsp.sender
The sender of this response
|
Modifier and Type | Field and Description |
---|---|
protected static LazyRemovalCache<Address,String> |
UUID.cache
Keeps track of associations between logical addresses (UUIDs) and logical names
|
protected Map<Address,Long> |
CreditMap.credits |
protected ConcurrentMap<Address,BoundedHashMap<Long,Long>> |
ForwardQueue.delivery_table |
protected List<Address> |
AckCollector.missing_acks
List of members from whom we haven't received an ACK yet
|
protected static LazyRemovalCache.Printable<Address,String> |
UUID.print_function |
protected List<Address> |
AckCollector.suspected_mbrs |
Modifier and Type | Method and Description |
---|---|
static Address |
Util.createRandomAddress() |
static Address |
Util.createRandomAddress(String name) |
Address |
SingletonAddress.getAddress() |
Address |
Owner.getAddress() |
static Address |
Util.getCoordinator(View view) |
Address |
ForwardQueue.getLocalAddr() |
Address |
Digest.DigestEntry.getMember() |
Address |
Rsp.getSender() |
static Address |
Util.readAddress(DataInput in) |
Modifier and Type | Method and Description |
---|---|
static Collection<Address> |
Util.determineActualMergeCoords(Map<Address,View> map)
Similar to
Util.determineMergeCoords(java.util.Map) but only actual coordinators are counted: an actual
coord is when the sender of a view is the first member of that view |
static List<Address> |
Util.determineLeftMembers(List<Address> old_mbrs,
List<Address> new_mbrs)
Returns all members that left between 2 views.
|
static Collection<Address> |
Util.determineMergeCoords(Map<Address,View> map)
This is the same or a subset of
Util.determineMergeParticipants(java.util.Map) and contains only members
which are currently sub-partition coordinators. |
static Collection<Address> |
Util.determineMergeParticipants(Map<Address,View> map)
Determines the members which take part in a merge.
|
Set<Map.Entry<Address,Rsp<T>>> |
RspList.entrySet() |
static Map<Address,String> |
UUID.getContents()
Returns a copy of the cache's contents
|
Set<Address> |
Digest.getMembers() |
List<Tuple<Address,Long>> |
CreditMap.getMembersWithCreditsLessThan(long min_credits) |
List<Address> |
CreditMap.getMembersWithInsufficientCredits(long credit_needed) |
List<Address> |
ResponseCollector.getMissing()
Returns a list of members which didn't send a valid response
|
Map<Address,T> |
ResponseCollector.getResults() |
List<Address> |
RspList.getSuspectedMembers() |
List<Address> |
ResponseCollector.getValidResults() |
Set<Address> |
CreditMap.keys() |
Set<Address> |
RspList.keySet() |
static List<Address> |
Util.leftMembers(Collection<Address> old_list,
Collection<Address> new_list) |
static List<Address> |
Util.leftMembers(View one,
View two)
Returns a list of members which left from view one to two
|
static List<Address> |
Util.newMembers(List<Address> old_list,
List<Address> new_list) |
static List<Address> |
Util.pickSubset(List<Address> members,
double subset_percentage)
Selects a random subset of members according to subset_percentage and returns them.
|
static Collection<? extends Address> |
Util.readAddresses(DataInput in,
Class cl) |
Modifier and Type | Method and Description |
---|---|
void |
AckCollector.ack(Address member) |
void |
MutableDigest.add(Address member,
long highest_delivered_seqno,
long highest_received_seqno) |
void |
MutableDigest.add(Address member,
long highest_delivered_seqno,
long highest_received_seqno,
boolean replace) |
static void |
UUID.add(Address uuid,
String logical_name) |
void |
ResponseCollector.add(Address member,
T data) |
protected void |
AckCollector.addAll(Address... members) |
void |
RspList.addNotReceived(Address sender) |
void |
RspList.addRsp(Address sender,
T retval) |
protected boolean |
ForwardQueue.canDeliver(Address sender,
long seqno)
Checks if seqno has already been received from sender.
|
int |
SingletonAddress.compareTo(Address o) |
int |
UUID.compareTo(Address other)
Compares this UUID with the specified UUID.
|
boolean |
Digest.contains(Address member) |
static MergeId |
MergeId.create(Address addr) |
static View |
Util.createView(Address coord,
long id,
Address... members) |
static View |
Util.createView(Address coord,
long id,
Address... members) |
protected void |
CreditMap.decrementAndAdd(Address member,
long new_credits)
Decrements credits bytes from all elements and add new_credits to member (if non null).
|
protected void |
ForwardQueue.doFlush(Address new_target) |
protected int |
Digest.find(Address member) |
void |
ForwardQueue.flush(Address new_target,
List<Address> mbrs) |
protected void |
ForwardQueue.flushMessagesInForwardTable(Address target)
Sends all messages currently in forward_table to the new target (changing the dest field).
|
long[] |
Digest.get(Address member)
Returns the highest delivered and received seqnos associated with a member.
|
Long |
CreditMap.get(Address member) |
static String |
UUID.get(Address logical_addr) |
static int |
Util.getRank(Collection<Address> members,
Address addr) |
static int |
Util.getRank(View view,
Address addr)
Returns the rank of a member in a given view
|
long |
Digest.highestDeliveredSeqnoAt(Address sender) |
long |
Digest.highestReceivedSeqnoAt(Address sender) |
void |
MutableDigest.incrementHighestDeliveredSeqno(Address member)
Increments the sender's highest delivered seqno by 1
|
static boolean |
Util.isCoordinator(View view,
Address local_addr) |
boolean |
RspList.isReceived(Address sender) |
boolean |
RspList.isSuspected(Address sender) |
void |
MutableDigest.merge(Address member,
long highest_delivered_seqno,
long highest_received_seqno)
Similar to add(), but if the sender already exists, its seqnos will be modified (no new entry) as follows:
this.highest_delivered_seqno=max(this.highest_delivered_seqno, highest_delivered_seqno)
this.highest_received_seqno=max(this.highest_received_seqno, highest_received_seqno)
If the member doesn not exist, a new entry will be added (provided there is enough space)
|
Rsp<T> |
RspList.put(Address key,
Rsp<T> value) |
Long |
CreditMap.putIfAbsent(Address key) |
void |
ResponseCollector.remove(Address member) |
Long |
CreditMap.remove(Address key) |
static void |
UUID.remove(Address addr) |
void |
CreditMap.replenish(Address sender,
long new_credits) |
void |
ResponseCollector.reset(Address... members) |
static boolean |
Util.sameHost(Address one,
Address two)
Checks whether 2 Addresses are on the same host
|
void |
MutableDigest.setHighestDeliveredAndSeenSeqnos(Address member,
long highest_delivered_seqno,
long highest_received_seqno) |
void |
ForwardQueue.setLocalAddr(Address local_addr) |
static int |
Util.size(Address addr) |
protected void |
ForwardQueue.startFlusher(Address new_coord) |
void |
AckCollector.suspect(Address member) |
void |
ResponseCollector.suspect(Address member) |
static void |
Util.writeAddress(Address addr,
DataOutput out) |
Modifier and Type | Method and Description |
---|---|
static void |
UUID.add(Map<Address,String> map) |
protected void |
AckCollector.addAll(Collection<Address> members) |
static byte[] |
Util.collectionToByteBuffer(Collection<Address> c) |
protected void |
Digest.createArrays(Map<Address,long[]> map) |
static List<View> |
Util.detectDifferentViews(Map<Address,View> map) |
static Collection<Address> |
Util.determineActualMergeCoords(Map<Address,View> map)
Similar to
Util.determineMergeCoords(java.util.Map) but only actual coordinators are counted: an actual
coord is when the sender of a view is the first member of that view |
static List<Address> |
Util.determineLeftMembers(List<Address> old_mbrs,
List<Address> new_mbrs)
Returns all members that left between 2 views.
|
static List<Address> |
Util.determineLeftMembers(List<Address> old_mbrs,
List<Address> new_mbrs)
Returns all members that left between 2 views.
|
static Collection<Address> |
Util.determineMergeCoords(Map<Address,View> map)
This is the same or a subset of
Util.determineMergeParticipants(java.util.Map) and contains only members
which are currently sub-partition coordinators. |
static Collection<Address> |
Util.determineMergeParticipants(Map<Address,View> map)
Determines the members which take part in a merge.
|
void |
ForwardQueue.flush(Address new_target,
List<Address> mbrs) |
static int |
Util.getRank(Collection<Address> members,
Address addr) |
static List<Address> |
Util.leftMembers(Collection<Address> old_list,
Collection<Address> new_list) |
static List<Address> |
Util.leftMembers(Collection<Address> old_list,
Collection<Address> new_list) |
static List<Address> |
Util.newMembers(List<Address> old_list,
List<Address> new_list) |
static List<Address> |
Util.newMembers(List<Address> old_list,
List<Address> new_list) |
static List<Address> |
Util.pickSubset(List<Address> members,
double subset_percentage)
Selects a random subset of members according to subset_percentage and returns them.
|
void |
RspList.putAll(Map<? extends Address,? extends Rsp<T>> m) |
void |
ResponseCollector.remove(List<Address> members) |
static void |
UUID.removeAll(Collection<Address> mbrs) |
void |
AckCollector.reset(Collection<Address> members) |
void |
ResponseCollector.reset(Collection<Address> members) |
boolean |
AckCollector.retainAll(Collection<Address> members) |
static void |
UUID.retainAll(Collection<Address> logical_addrs) |
void |
ResponseCollector.retainAll(List<Address> members) |
static long |
Util.size(Collection<? extends Address> addrs)
Returns the marshalled size of a Collection of Addresses.
|
static boolean |
Util.startFlush(Channel c,
List<Address> flushParticipants) |
static boolean |
Util.startFlush(Channel c,
List<Address> flushParticipants,
int numberOfAttempts,
long randomSleepTimeoutFloor,
long randomSleepTimeoutCeiling) |
static void |
Util.writeAddresses(Collection<? extends Address> v,
DataOutput out)
Writes a Vector of Addresses.
|
Constructor and Description |
---|
AckCollector(Address... members) |
Digest.DigestEntry(Address member,
long highest_delivered,
long highest_received) |
Digest(Address[] members,
long[] seqnos) |
Digest(Address sender,
long highest_delivered) |
Digest(Address sender,
long highest_delivered,
long highest_received) |
ForwardQueue.Flusher(Address new_coord) |
MutableDigest(Address[] members,
long[] seqnos,
int current_index) |
Owner(Address address,
long thread_id) |
ResponseCollector(Address... members) |
Rsp(Address sender) |
Rsp(Address sender,
T retval) |
Rsp(Address sender,
Throwable t) |
SingletonAddress(String cluster_name,
Address addr) |
Constructor and Description |
---|
AckCollector(Collection<Address> members) |
Digest(Map<Address,long[]> map)
Creates a new digest from an existing map by copying the keys and values from map
|
MutableDigest(Map<Address,long[]> map) |
ResponseCollector(Collection<Address> members) |
Copyright © 2018 JBoss, a division of Red Hat. All rights reserved.