## Uses of Class
org.jgroups.stack.Protocol

Packages that use Protocol
Package | Description
--- | ---
org.jgroups.debug | Provides debug support, including testing, profiling, and a graphical view of a protocol stack.
org.jgroups.jmx |
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.stack | Support for managing protocol stacks.

### Uses of Protocol in org.jgroups.debug

Methods in org.jgroups.debug that return Protocol
Modifier and Type | Method and Description
--- | ---
`Protocol` | ProtocolTester.`getBottom()`
`Protocol` | ProtocolTester.`getTop()`

Methods in org.jgroups.debug that return types with arguments of type Protocol
Modifier and Type | Method and Description
--- | ---
`java.util.Vector<Protocol>` | ProtocolTester.`getProtocols()`

Methods in org.jgroups.debug with parameters of type Protocol
Modifier and Type | Method and Description
--- | ---
`void` | Simulator.`setProtocolStack(Protocol[] stack)`

Constructors in org.jgroups.debug with parameters of type Protocol
Constructor and Description
`ProtocolTester(java.lang.String prot_spec, Protocol harness)`

### Uses of Protocol in org.jgroups.jmx

Methods in org.jgroups.jmx with parameters of type Protocol
Modifier and Type | Method and Description
--- | ---
`javax.management.DynamicMBean` | JmxConfigurator.`asDynamicMBean(Protocol p)` Deprecated.
`static javax.management.DynamicMBean` | JmxConfigurator.`wrap(Protocol p)` Wrap Protocol with DynamicMBean interface.

### Uses of Protocol in org.jgroups.protocols

Subclasses of Protocol in org.jgroups.protocols
Modifier and Type | Class and Description
--- | ---
`class` | `AUTH` The AUTH protocol adds a layer of authentication to JGroups
`class` | `BARRIER` All messages up the stack have to go through a barrier (read lock, RL).
`class` | `BasicTCP` Shared base class for tcpip protocols
`class` | `BPING` Broadcast PING.
`class` | `BSH` Beanshell (www.beanshell.org) interpreter class.
`class` | `CENTRAL_EXECUTOR` This is a central executor service where each request is sent to the coordinator for either a task or a current waiting thread.
`class` | `CENTRAL_LOCK` Implementation of a locking protocol which acquires locks by contacting the coordinator.
`class` | `COMPRESS` Compresses the payload of a message.
`class` | `DAISYCHAIN` Implementation of daisy chaining.
`class` | `DELAY` Delays incoming/outgoing messages by a random number of milliseconds (range between 0 and n where n is determined by the user).
`class` | `DELAY_JOIN_REQ` Discards 2 JOIN-REQs then accepts 1, then discards 2 more and so on
`class` | `DISCARD` Discards up or down messages based on a percentage; e.g., setting property 'up' to 0.1 causes 10% of all up messages to be discarded.
`class` | `DISCARD_PAYLOAD` Discards a message whose sequence number (in the payload, as a Long) matches seqno 2 times, before passing it down.
`class` | `Discovery` The Discovery protocol layer retrieves the initial membership (used by the GMS when started by sending event FIND_INITIAL_MBRS down the stack).
`class` | `DUPL` Duplicates outgoing or incoming messages by copying them
`class` | `ENCRYPT` ENCRYPT layer.
`class` | `EXAMPLE` Example of a protocol layer.
`class` | `Executing` This is the base protocol used for executions.
`class` | `FC` Simple flow control protocol based on a credit system.
`class` | `FD` Failure detection based on simple heartbeat protocol.
`class` | `FD_ALL` Failure detection based on simple heartbeat protocol.
`class` | `FD_ICMP` Protocol which uses InetAddress.isReachable() to check whether a given host is up or not, taking 1 argument; the host name of the host to be pinged.
`class` | `FD_PING` Protocol which uses an executable (e.g.
`class` | `FD_SIMPLE` Simple failure detection protocol.
`class` | `FD_SOCK` Failure detection protocol based on sockets.
`class` | `FILE_PING` Simple discovery protocol which uses a file on shared storage such as an SMB share, NFS mount or S3.
`class` | `FlowControl` Simple flow control protocol based on a credit system.
`class` | `FRAG` Fragmentation layer.
`class` | `FRAG2` Fragmentation layer.
`class` | `HDRS` Example of a protocol layer.
`class` | `HTOTAL` Implementation of UTO-TCP as designed by EPFL.
`class` | `JDBC_PING` Discovery protocol using a JDBC connection to a shared database.
`class` | `Locking` Base locking protocol, handling most of the protocol communication with other instances.
`class` | `LOOPBACK` Makes copies of outgoing messages, swaps sender and receiver and sends the message back up the stack.
`class` | `MERGE2` Protocol to discover subgroups; e.g., existing due to a network partition (that healed).
`class` | `MERGE3` Protocol to discover subgroups; e.g., existing due to a network partition (that healed).
`class` | `MERGEFAST` The coordinator attaches a small header with its view to each (or every nth) message.
`class` | `MFC` Simple flow control protocol based on a credit system.
`class` | `MPING` Uses its own IP multicast socket to send and receive discovery requests/responses.
`class` | `PEER_LOCK` Implementation of a locking protocol which acquires locks by contacting all of the nodes of a cluster.
`class` | `PERF_TP` Measures the time for a message to travel from the channel to the transport
`class` | `PING` The PING protocol layer retrieves the initial membership (used by the GMS when started by sending event FIND_INITIAL_MBRS down the stack).
`class` | `PRIO` This protocol will provide message sending and receiving prioritization.
`class` | `RATE_LIMITER` Protocol which sends at most max_bytes in time_period milliseconds.
`class` | `RELAY` Simple relaying protocol: RELAY is added to the top of the stack, creates a channel to a bridge cluster, and - if coordinator - relays all multicast messages via the bridge cluster to the remote cluster. This is not a big virtual cluster, e.g.
`class` | `S3_PING` Discovery protocol using Amazon's S3 storage.
`class` | `SCOPE` Implements https://jira.jboss.org/jira/browse/JGRP-822, which allows for concurrent delivery of messages from the same sender based on scopes.
`class` | `SEQUENCER` Implementation of total order protocol using a sequencer.
`class` | `SFC` Deprecated.
`class` | `SHARED_LOOPBACK` Loopback transport shared by all channels within the same VM.
`class` | `SHUFFLE` Reorders messages by buffering them and shuffling the result after TIMEOUT ms.
`class` | `SIZE` Protocol which prints out the real size of a message.
`class` | `SMACK` Simple Multicast ACK protocol.
`class` | `STATS` Provides various stats
`class` | `STOMP` Protocol which provides STOMP (http://stomp.codehaus.org/) support.
`class` | `TCP` TCP based protocol.
`class` | `TCP_NIO` Transport using NIO
`class` | `TCPGOSSIP` The TCPGOSSIP protocol layer retrieves the initial membership (used by the GMS when started by sending event FIND_INITIAL_MBRS down the stack).
`class` | `TCPPING` The TCPPING protocol layer retrieves the initial membership in answer to the GMS's FIND_INITIAL_MBRS event.
`class` | `TP` Generic transport - specific implementations should extend this abstract class.
`static class` | `TP.ProtocolAdapter` Used when the transport is shared (singleton_name is not null).
`class` | `TRACE`
`class` | `TUNNEL` Replacement for UDP.
`class` | `UDP` IP multicast transport based on UDP.
`class` | `UFC` Simple flow control protocol based on a credit system.
`class` | `UNICAST` Reliable unicast layer.
`class` | `UNICAST2` Reliable unicast layer.
`class` | `VERIFY_SUSPECT` Catches SUSPECT events traveling up the stack.
`class` | `VIEW_SYNC` Periodically sends the view to the group.

Fields in org.jgroups.protocols with type parameters of type Protocol
Modifier and Type | Field and Description
--- | ---
`protected java.util.concurrent.ConcurrentMap<java.lang.String,Protocol>` | TP.`up_prots` If singleton_name is enabled, this map is used to de-multiplex incoming messages according to their cluster names (attached to the message by the transport anyway).

Methods in org.jgroups.protocols that return types with arguments of type Protocol
Modifier and Type | Method and Description
--- | ---
`java.util.concurrent.ConcurrentMap<java.lang.String,Protocol>` | TP.`getUpProtocols()`

Constructors in org.jgroups.protocols with parameters of type Protocol
Constructor and Description
`TP.ProtocolAdapter(java.lang.String cluster_name, Address local_addr, short transport_id, Protocol up, Protocol down, java.lang.String pattern)`

### Uses of Protocol in org.jgroups.protocols.pbcast

Subclasses of Protocol in org.jgroups.protocols.pbcast
Modifier and Type | Class and Description
--- | ---
`class` | `FLUSH` Flush, as it name implies, forces group members to flush their pending messages while blocking them to send any additional messages.
`class` | `GMS` Group membership protocol.
`class` | `NAKACK` Negative AcKnowledgement layer (NAKs).
`class` | `STABLE` Computes the broadcast messages that are stable; i.e., have been received by all members.
`class` | `STATE_TRANSFER` STATE_TRANSFER protocol based on byte array transfer.
`class` | `STREAMING_STATE_TRANSFER` `STREAMING_STATE_TRANSFER`, as its name implies, allows a streaming state transfer between two channel instances.

### Uses of Protocol in org.jgroups.stack

Subclasses of Protocol in org.jgroups.stack
Modifier and Type | Class and Description
--- | ---
`class` | `ProtocolStack` A ProtocolStack manages a number of protocols layered above each other.

Fields in org.jgroups.stack declared as Protocol
Modifier and Type | Field and Description
--- | ---
`protected Protocol` | Protocol.`down_prot`
`protected Protocol` | Protocol.`up_prot`

Methods in org.jgroups.stack that return Protocol
Modifier and Type | Method and Description
--- | ---
`static Protocol` | Configurator.`connectProtocols(java.util.List<Protocol> protocol_list)` Creates a protocol stack by iterating through the protocol list and connecting adjacent layers.
`protected static Protocol` | Configurator.`createLayer(ProtocolStack stack, ProtocolConfiguration config)`
`protected Protocol` | ProtocolStack.`createProtocol(java.lang.String classname)`
`static Protocol` | Configurator.`createProtocol(java.lang.String prot_spec, ProtocolStack stack)` Creates a new protocol given the protocol specification.
`Protocol` | ProtocolStack.`findProtocol(java.lang.Class<?>... classes)` Finds the first protocol of a list and returns it.
`Protocol` | ProtocolStack.`findProtocol(java.lang.Class<?> clazz)`
`Protocol` | ProtocolStack.`findProtocol(java.lang.String name)` Returns a given protocol or null if not found
`Protocol` | ProtocolStack.`getBottomProtocol()`
`Protocol` | Protocol.`getDownProtocol()`
`Protocol` | ProtocolStack.`getTopProtocol()`
`Protocol` | Protocol.`getUpProtocol()`
`Protocol` | ProtocolStack.`removeProtocol(java.lang.Class... protocols)`
`Protocol` | ProtocolStack.`removeProtocol(java.lang.Class prot)`
`Protocol` | ProtocolStack.`removeProtocol(java.lang.String prot_name)` Removes a protocol from the stack.
`Protocol` | Configurator.`setupProtocolStack(java.util.List<ProtocolConfiguration> config)`
`Protocol` | Configurator.`setupProtocolStack(ProtocolStack copySource)`
`Protocol` | Protocol.`setValue(java.lang.String name, java.lang.Object value)`
`Protocol` | Protocol.`setValues(java.util.Map<java.lang.String,java.lang.Object> values)`

Methods in org.jgroups.stack that return types with arguments of type Protocol
Modifier and Type | Method and Description
--- | ---
`java.util.List<Protocol>` | ProtocolStack.`copyProtocols(ProtocolStack targetStack)`
`java.util.List<Protocol>` | ProtocolStack.`getProtocols()` Returns all protocols in a list, from top to bottom.

Methods in org.jgroups.stack with parameters of type Protocol
Modifier and Type | Method and Description
--- | ---
`ProtocolStack` | ProtocolStack.`addProtocol(Protocol prot)` Adds a protocol at the tail of the protocol list
`ProtocolStack` | ProtocolStack.`addProtocols(Protocol... prots)` Adds a list of protocols
`static RouterStubManager` | RouterStubManager.`emptyGossipClientStubManager(Protocol p)`
`static java.lang.Object` | Configurator.`getValueFromProtocol(Protocol protocol, java.lang.reflect.Field field)`
`static java.lang.Object` | Configurator.`getValueFromProtocol(Protocol protocol, java.lang.String field_name)`
`void` | ProtocolStack.`insertProtocol(Protocol prot, int position, java.lang.Class<? extends Protocol>... neighbor_prots)`
`void` | ProtocolStack.`insertProtocol(Protocol prot, int position, java.lang.Class<? extends Protocol> neighbor_prot)`
`void` | ProtocolStack.`insertProtocol(Protocol prot, int position, java.lang.String neighbor_prot)` Inserts an already created (and initialized) protocol into the protocol list.
`void` | ProtocolStack.`insertProtocolAtTop(Protocol prot)`
`void` | ProtocolStack.`insertProtocolInStack(Protocol prot, Protocol neighbor, int position)`
`void` | Protocol.`setDownProtocol(Protocol down_prot)`
`void` | Protocol.`setUpProtocol(Protocol up_prot)`

Method parameters in org.jgroups.stack with type arguments of type Protocol
Modifier and Type | Method and Description
--- | ---
`ProtocolStack` | ProtocolStack.`addProtocols(java.util.List<Protocol> prots)` Adds a list of protocols
`static Protocol` | Configurator.`connectProtocols(java.util.List<Protocol> protocol_list)` Creates a protocol stack by iterating through the protocol list and connecting adjacent layers.
`static java.util.Map<java.lang.String,java.util.Map<java.lang.String,Configurator.InetAddressInfo>>` | Configurator.`createInetAddressMap(java.util.List<ProtocolConfiguration> protocol_configs, java.util.List<Protocol> protocols)`
`static void` | Configurator.`ensureValidBindAddresses(java.util.List<Protocol> protocols)` Makes sure that all fields annotated with @LocalAddress is (1) an InetAddress and (2) a valid address on any local network interface
`static java.util.List<java.net.InetAddress>` | Configurator.`getInetAddresses(java.util.List<Protocol> protocols)`
`void` | ProtocolStack.`insertProtocol(Protocol prot, int position, java.lang.Class<? extends Protocol> neighbor_prot)`
`static void` | Configurator.`sanityCheck(java.util.List<Protocol> protocols)` Throws an exception if sanity check fails.
`static void` | Configurator.`setDefaultValues(java.util.List<Protocol> protocols)`
`static void` | Configurator.`setDefaultValues(java.util.List<Protocol> protocols, StackType ip_version)`
`static void` | Configurator.`setDefaultValues(java.util.List<ProtocolConfiguration> protocol_configs, java.util.List<Protocol> protocols, StackType ip_version)`

Constructors in org.jgroups.stack with parameters of type Protocol
Constructor and Description
`RouterStubManager(Protocol owner, java.lang.String channelName, Address logicalAddress, long interval)`