org.jgroups.protocols

## Class SHUFFLE

- java.lang.Object
- - org.jgroups.stack.Protocol
  - - org.jgroups.protocols.SHUFFLE

    public class SHUFFLE
    extends Protocol

Reorders messages by buffering them and shuffling the result after TIMEOUT ms.

Author:
  Bela Ban

### Field Summary

Fields
`protected boolean` `down`
`protected java.util.List<Message>` `down_msgs`
`protected int` `max_size`
`protected long` `max_time`
`protected java.util.concurrent.Future<?>` `task`
`protected TimeScheduler` `timer`
`protected boolean` `up`
`protected java.util.List<Message>` `up_msgs`

### Fields inherited from class org.jgroups.stack.Protocol

`down_prot, ergonomics, id, log, name, stack, stats, up_prot`

### Constructor Summary

Constructors
Constructor and Description
`SHUFFLE()`

### Method Summary

Methods
`java.lang.Object` `down(Event evt)` An event is to be sent down the stack.
`int` `getMaxSize()`
`long` `getMaxTime()`
`void` `init()` Called after instance has been created (null constructor) and before protocol is started.
`boolean` `isDown()`
`boolean` `isUp()`
`void` `setDown(boolean down)`
`void` `setMaxSize(int max_size)`
`void` `setMaxTime(long max_time)`
`void` `setUp(boolean up)`
`java.lang.Object` `up(Event evt)` An event was received from the layer below.

### Methods inherited from class org.jgroups.stack.Protocol

`destroy, downThreadEnabled, dumpStats, enableStats, getConfigurableObjects, getDownProtocol, getId, getLevel, getName, getProperties, getProtocolStack, getSocketFactory, getThreadFactory, getTransport, getUpProtocol, getValue, isErgonomics, printStats, providedDownServices, providedUpServices, requiredDownServices, requiredUpServices, resetStats, setDownProtocol, setErgonomics, setId, setLevel, setProperties, setPropertiesInternal, setProperty, setProtocolStack, setSocketFactory, setUpProtocol, setValue, setValues, start, statsEnabled, stop, upThreadEnabled`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### timer

    protected TimeScheduler timer

#### up_msgs

    protected final java.util.List<Message> up_msgs

#### down_msgs

    protected final java.util.List<Message> down_msgs

#### task

    protected java.util.concurrent.Future<?> task

#### up

    protected boolean up

#### down

    protected boolean down

#### max_size

    protected int max_size

#### max_time

    protected long max_time

### Constructor Detail

#### SHUFFLE

    public SHUFFLE()

### Method Detail

#### isUp

    public boolean isUp()

#### setUp

    public void setUp(boolean up)

#### isDown

    public boolean isDown()

#### setDown

    public void setDown(boolean down)

#### getMaxSize

    public int getMaxSize()

#### setMaxSize

    public void setMaxSize(int max_size)

#### getMaxTime

    public long getMaxTime()

#### setMaxTime

    public void setMaxTime(long max_time)

#### init

    public void init()
              throws java.lang.Exception

Description copied from class: `Protocol`
Called after instance has been created (null constructor) and before protocol is started. Properties are already set. Other protocols are not yet connected and events cannot yet be sent.

Overrides:
  `init` in class `Protocol`
Throws:
  `java.lang.Exception` - Thrown if protocol cannot be initialized successfully. This will cause the ProtocolStack to fail, so the channel constructor will throw an exception

#### up

    public java.lang.Object up(Event evt)

Description copied from class: `Protocol`
An event was received from the layer below. Usually the current layer will want to examine the event type and - depending on its type - perform some computation (e.g. removing headers from a MSG event type, or updating the internal membership list when receiving a VIEW_CHANGE event). Finally the event is either a) discarded, or b) an event is sent down the stack using `down_prot.down()` or c) the event (or another event) is sent up the stack using `up_prot.up()`.

Overrides:
  `up` in class `Protocol`

#### down

    public java.lang.Object down(Event evt)

Description copied from class: `Protocol`
An event is to be sent down the stack. The layer may want to examine its type and perform some action on it, depending on the event's type. If the event is a message MSG, then the layer may need to add a header to it (or do nothing at all) before sending it down the stack using `down_prot.down()`. In case of a GET_ADDRESS event (which tries to retrieve the stack's address from one of the bottom layers), the layer may need to send a new response event back up the stack using `up_prot.up()`.

Overrides:
  `down` in class `Protocol`