Refine search
@MBean(description="Prints the headers of all sent and/or received messages") public class HDRS extends Protocol { @Property(description="Enables printing of down messages") protected volatile boolean print_down=true; @Property(description="Enables printing of up (received) messages") protected volatile boolean print_up=true;
@MBean(description="Symmetric encryption protocol. The (shared) shared secret key is configured up front, " + "e.g. via a key store, or injection") public class SYM_ENCRYPT extends Encrypt<KeyStore.SecretKeyEntry> { @Property(description="File on classpath that contains keystore repository") protected String keystore_name; @Property(description="The type of the keystore. " + "Types are listed in http://docs.oracle.com/javase/8/docs/technotes/tools/unix/keytool.html") protected String keystore_type="JCEKS"; @Property(description="Password used to check the integrity/unlock the keystore. Change the default", exposeAsManagedAttribute=false) protected String store_password="changeit"; // JDK default @Property(description="Password for recovering the key. Change the default", exposeAsManagedAttribute=false) protected String key_password; // allows to assign keypwd=storepwd if not set (https://issues.jboss.org/browse/JGRP-1375) @Property(name="alias", description="Alias used for recovering the key. Change the default",exposeAsManagedAttribute=false) protected String alias="mykey"; // JDK default
@MBean(description="Written by Sanne") public class DELAY extends Protocol { @Property(description = "Upper bound of number of milliseconds to delay passing a message up the stack (exclusive)") protected int in_delay; @Property(description = "Upper bound number of milliseconds to delay passing a message down the stack (exclusive)") protected int out_delay; @Property(description = "Number of nanoseconds to delay passing a message up the stack") protected int in_delay_nanos; @Property(description = "Number of nanoseconds to delay passing a message down the stack") protected int out_delay_nanos; @Property(description = "Keep the delay constant. By default delay time randoms between 0 and upper bound") protected boolean constant_delay;
@MBean(description="Intercepts single messages and passes them up as batches") public class MAKE_BATCH extends Protocol { @Property(description="handle multicast messages") protected boolean multicasts=false; @Property(description="handle unicast messages") protected boolean unicasts=false; @Property(description="Time to sleep (in ms) from the reception of the first message to sending a batch up") protected long sleep_time=100;
@MBean(description="Simple non-blocking flow control protocol based on a credit system") public class MFC_NB extends MFC { @Property(description="Max number of bytes of all queued messages for a given destination. If a given destination " + "has no credits left and the message cannot be added to the queue because it is full, then the sender thread " + "will be blocked until there is again space available in the queue, or the protocol is stopped.")
@MBean(description="Compresses messages to send and uncompresses received messages") public class COMPRESS extends Protocol { @Property(description="Compression level (from java.util.zip.Deflater) " + "(0=no compression, 1=best speed, 9=best compression). Default is 9") protected int compression_level=Deflater.BEST_COMPRESSION; // this is 9 @Property(description="Minimal payload size of a message (in bytes) for compression to kick in. Default is 500 bytes") protected long min_size=500; @Property(description="Number of inflaters/deflaters for concurrent processing. Default is 2 ") protected int pool_size=2;
@MBean(description="Simple non-blocking flow control protocol based on a credit system") public class UFC_NB extends UFC { @Property(description="Max number of bytes of all queued messages for a given destination. If a given destination " + "has no credits left and the message cannot be added to the queue because it is full, then the sender thread " + "will be blocked until there is again space available in the queue, or the protocol is stopped.")
public static final String SASL_PROTOCOL_NAME = "jgroups"; @Property(name = "login_module_name", description = "The name of the JAAS login module to use to obtain a subject for creating the SASL client and server (optional). Only required by some SASL mechs (e.g. GSSAPI)") protected String login_module_name; @Property(name = "client_name", description = "The name to use when a node is acting as a client (i.e. it is not the coordinator. Will also be used to obtain the subject if using a JAAS login module") protected String client_name; @Property(name = "client_password", description = "The password to use when a node is acting as a client (i.e. it is not the coordinator. Will also be used to obtain the subject if using a JAAS login module", exposeAsManagedAttribute = false) protected String client_password; @Property(name = "mech", description = "The name of the mech to require for authentication. Can be any mech supported by your local SASL provider. The JDK comes standard with CRAM-MD5, DIGEST-MD5, GSSAPI, NTLM") protected String mech; @Property(name = "sasl_props", description = "Properties specific to the chosen mech", converter = PropertyConverters.StringProperties.class) protected Map<String, String> sasl_props = new HashMap<>(); @Property(name = "server_name", description = "The fully qualified server name") protected String server_name; @Property(name = "timeout", description = "How long to wait (in ms) for a response to a challenge") protected long timeout = 5000; @Property(name = "client_callback_handler", description = "The CallbackHandler to use when a node acts as a client (i.e. it is not the coordinator") protected CallbackHandler client_callback_handler; @Property(name = "server_callback_handler", description = "The CallbackHandler to use when a node acts as a server (i.e. it is the coordinator") protected CallbackHandler server_callback_handler;
@Property(description="The port at which the key server is listening. If the port is not available, the next port " + "will be probed, up to port+port_range. Used by the key server (server) to create an SSLServerSocket and " + "by clients to connect to the key server.") @Property(description="Bind address for the server or client socket. " + "The following special values are also recognized: GLOBAL, SITE_LOCAL, LINK_LOCAL and NON_LOOPBACK", systemProperty={Global.BIND_ADDR}) protected InetAddress bind_addr; @Property(description="The port range to probe") protected int port_range=5; @Property(description="Location of the keystore") protected String keystore_name="keystore.jks"; @Property(description="The type of the keystore. " + "Types are listed in http://docs.oracle.com/javase/8/docs/technotes/tools/unix/keytool.html") protected String keystore_type="JKS"; @Property(description="Password to access the keystore",exposeAsManagedAttribute=false) protected String keystore_password="changeit"; @Property(description="The type of secret key to be sent up the stack (converted from DH). " + "Should be the same as ASYM_ENCRYPT.sym_algorithm if ASYM_ENCRYPT is used") protected String secret_key_algorithm="AES"; @Property(description="If enabled, clients are authenticated as well (not just the server). Set to true to prevent " + "rogue clients to fetch the secret group key (e.g. via man-in-the-middle attacks)") protected boolean require_client_authentication=true;
@MBean(description="Key exchange protocol to fetch a shared secret group key from the key server." + "That shared (symmetric) key is subsequently used to encrypt communication between cluster members") public class DH_KEY_EXCHANGE extends KeyExchange { @Property(description="The type of secret key to be sent up the stack (converted from DH). " + "Should be the same as ASYM_ENCRYPT.sym_algorithm if ASYM_ENCRYPT is used") protected String secret_key_algorithm="AES"; @Property(description="The length of the secret key (in bits) to be sent up the stack. AES requires 128 bits. " + "Should be the same as ASYM_ENCRYPT.sym_keylength if ASYM_ENCRYPT is used.") protected int secret_key_length=128; // used for AES @Property(description="Max time (in ms) that a FETCH_SECRET_KEY down event will be ignored (if an existing " + "request is in progress) until a new request for the secret key is sent to the keyserver") protected long timeout=2000;
@MBean(description="Blocks all multicast threads when closed") public class BARRIER extends Protocol { @Property(description="Max time barrier can be closed. Default is 60000 ms") protected long max_close_time=60000; // how long can the barrier stay closed (in ms) ? 0 means forever @Property(description="Max time (in ms) to wait until the threads which passed the barrier before it was closed " + "have completed. If this time elapses, an exception will be thrown and state transfer will fail. 0 = wait forever") protected long flush_timeout=5000;
@MBean(description="Maintains mappings of addresses and their logical names") public class NAMING extends Protocol { protected Address local_addr; protected volatile View view; @Property(description="Stagger timeout (in ms). Staggering will be a random timeout in range [0 .. stagger_timeout]") protected long stagger_timeout=500;
@MBean(description="State trasnfer protocol based on streaming state transfer") public class STATE_SOCK extends StreamingStateTransfer { @Property(description="The interface (NIC) used to accept state requests. " + "The following special values are also recognized: GLOBAL, SITE_LOCAL, LINK_LOCAL and NON_LOOPBACK", systemProperty={Global.BIND_ADDR},writable=false) protected InetAddress bind_addr; @Property(description="Use \"external_addr\" if you have hosts on different networks, behind " + "firewalls. On each firewall, set up a port forwarding rule (sometimes called \"virtual server\") to " + "the local IP (e.g. 192.168.1.100) of the host then on each host, set \"external_addr\" TCP transport " + protected InetAddress external_addr=null ; @Property(description="Used to map the internal port (bind_port) to an external port. Only used if > 0", systemProperty=Global.EXTERNAL_PORT,writable=false) protected int external_port=0; @Property(name="bind_interface", converter=PropertyConverters.BindInterface.class, description="The interface (NIC) which should be used by this transport", dependsUpon="bind_addr") protected String bind_interface_str=null; @Property(description="The port listening for state requests. Default value of 0 binds to any (ephemeral) port") protected int bind_port=0;
@MBean(description="Simple flow control protocol based on a credit system") public abstract class FlowControl extends Protocol { @Property(description="Max number of bytes to send per receiver until an ack must be received to proceed") protected long max_credits=500000; @Property(description="Max time (in ms) to block") protected long max_block_time=500; @Property(description="The threshold (as a percentage of max_credits) at which a receiver sends more credits to " + "a sender. Example: if max_credits is 1'000'000, and min_threshold 0.25, then we send ca. 250'000 credits " + "to P once we've got only 250'000 credits left for P (we've received 750'000 bytes from P)") @Property(description="Computed as max_credits x min_theshold unless explicitly set") protected long min_credits;
@MBean(description="Asymmetric encryption protocol. The secret key for encryption and decryption of messages is fetched " + "from a key server (the coordinator) via asymmetric encryption") public class ASYM_ENCRYPT extends Encrypt<KeyStore.PrivateKeyEntry> { protected static final short GMS_ID=ClassConfigurator.getProtocolId(GMS.class); @Property(description="When a member leaves, change the secret key, preventing old members from eavesdropping") protected boolean change_key_on_leave=true; @Property(description="If true, a separate KeyExchange protocol (somewhere below in ths stack) is used to" + " fetch the shared secret key. If false, the default (built-in) key exchange protocol will be used.") protected boolean use_external_key_exchange; @Property(description="Interval (in ms) to send out announcements when the key server changed. Members will then " + "start the key exchange protocol. When all members have acked, the task is cancelled.") protected long key_server_interval=1000; protected Cipher asym_cipher; // decrypting cypher for secret key requests @Property(description="Min time (in millis) between key requests") protected long min_time_between_key_requests=2000; protected volatile long last_key_request;
@MBean(description="Simple TCP based transport") public class SimpleTCP extends TP { @Property(description="size in bytes of TCP receiver window") protected int recv_buf_size=500000; @Property(description="size in bytes of TCP send window") protected int send_buf_size=500000; @Property(description="Size of the buffer of the BufferedInputStream in TcpConnection. A read always tries to read " + "ahead as much data as possible into the buffer. 0: default size") protected int buffered_input_stream_size=8192; @Property(description="Size of the buffer of the BufferedOutputStream in TcpConnection. Smaller messages are " + " buffered until this size is exceeded or flush() is called. Bigger messages are sent immediately. 0: default size") protected int buffered_output_stream_size=8192;
@MBean(description="Persistent Discovery Cache. Caches discovery information on disk.") public class PDC extends Protocol { protected final ConcurrentMap<Address,PhysicalAddress> cache=new ConcurrentHashMap<>(); @Property(description="The absolute path of the directory for the disk cache. The mappings will be stored as " + "individual files in this directory") protected String cache_dir=File.separator + "tmp" + File.separator + "jgroups";
@MBean(description="Implements synchronous acks for messages which have their RSVP flag set)") public class RSVP extends Protocol { @Property(description="Max time in milliseconds to block for an RSVP'ed message (0 blocks forever).") protected long timeout=10000; @Property(description="Whether an exception should be thrown when the timeout kicks in, and we haven't yet received " + "all acks. An exception would be thrown all the way up to JChannel.send(). If we use RSVP_NB, this will be ignored.") protected boolean throw_exception_on_timeout=true; @Property(description="When true, we pass the message up to the application and only then send an ack. When false, " + "we send an ack first and only then pass the message up to the application.") protected boolean ack_on_delivery=true; @Property(description="Interval (in milliseconds) at which we resend the RSVP request. Needs to be < timeout. 0 disables it.") protected long resend_interval=2000;