Package org.eclipse.net4j.buffer

# Enum Class BufferState

java.lang.Object
java.lang.Enum<BufferState>
org.eclipse.net4j.buffer.BufferState

All Implemented Interfaces:
  `Serializable`, `Comparable<BufferState>`, `Constable`

public enum BufferState extends Enum<BufferState>
Enumerates the internal states of an `IBuffer`.

Author:
  Eike Stepper
No Extend
  This interface is not intended to be extended by clients.

## Nested Class Summary

## Nested classes/interfaces inherited from class java.lang.Enum

`Enum.EnumDesc<E extends Enum<E>>`

## Enum Constant Summary

Enum Constants
Enum Constant
Description
`DISPOSED`
Indicates that the `IBuffer` can not be used anymore.
`GETTING`
Indicates that the `IBuffer` can provide a `ByteBuffer` that can be used for getting data.
`INITIAL`
Indicates that the `IBuffer` has just been provided by its `IBufferProvider` or that is has been used and subsequently `cleared`.
`PUTTING`
Indicates that the `IBuffer` can provide a `ByteBuffer` that can be used for putting data.
`READING_BODY`
Indicates that the `IBuffer` is currently reading its body from a `SocketChannel`.
`READING_HEADER`
Indicates that the `IBuffer` is currently reading its header from a `SocketChannel`.
`RELEASED`
Indicates that the `IBuffer` is owned by its `IBufferProvider`.
`WRITING`
Indicates that the `IBuffer` is currently writing its data to a `SocketChannel`.

## Method Summary

Modifier and Type
Method
Description
`static BufferState`
`valueOf(String name)`
Returns the enum constant of this class with the specified name.
`static BufferState[]`
`values()`
Returns an array containing the constants of this enum class, in the order they are declared.

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

`clone, compareTo, describeConstable, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf`

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

`getClass, notify, notifyAll, wait, wait, wait`

## Enum Constant Details

### INITIAL

public static final BufferState INITIAL
Indicates that the `IBuffer` has just been provided by its `IBufferProvider` or that is has been used and subsequently `cleared`.

A transition to `PUTTING` can be triggered by calling `IBuffer.startPutting(short)` once. If the buffer is intended to be passed to an `IChannel` later the `channel index` of that Channel has to be passed because it is part of the buffer's header. A `ByteBuffer` is returned that can be used for putting data.

A transition to `GETTING` can be triggered by calling `IBuffer.startGetting(SocketChannel)` repeatedly until it finally returns a `ByteBuffer` that can be used for getting data.

### PUTTING

public static final BufferState PUTTING
Indicates that the `IBuffer` can provide a `ByteBuffer` that can be used for putting data.

A transition to `WRITING` can be triggered by calling `IBuffer.write(SocketChannel)`.

A transition to `GETTING` can be triggered by calling `IBuffer.flip()`.

A transition to `INITIAL` can be triggered by calling `IBuffer.clear()`.

### WRITING

public static final BufferState WRITING
Indicates that the `IBuffer` is currently writing its data to a `SocketChannel`.

Self transitions to `WRITING` can be triggered by repeatedly calling `IBuffer.write(SocketChannel)` until it returns `true`.

A transition to `INITIAL` can be triggered by calling `IBuffer.clear()`.

### READING_HEADER

public static final BufferState READING_HEADER
Indicates that the `IBuffer` is currently reading its header from a `SocketChannel`.

Transitions to `READING_HEADER`, `READING_BODY` or `GETTING` can be triggered by repeatedly calling `IBuffer.startGetting(SocketChannel)` until it returns a `ByteBuffer` that can be used for getting data.

A transition to `INITIAL` can be triggered by calling `IBuffer.clear()`.

### READING_BODY

public static final BufferState READING_BODY
Indicates that the `IBuffer` is currently reading its body from a `SocketChannel`.

Transitions to `READING_BODY` or `GETTING` can be triggered by repeatedly calling `IBuffer.startGetting(SocketChannel)` until it returns a `ByteBuffer` that can be used for getting data.

A transition to `INITIAL` can be triggered by calling `IBuffer.clear()`.

### GETTING

public static final BufferState GETTING
Indicates that the `IBuffer` can provide a `ByteBuffer` that can be used for getting data.

A transition to `INITIAL` can be triggered by calling `IBuffer.clear()`.

### RELEASED

public static final BufferState RELEASED
Indicates that the `IBuffer` is owned by its `IBufferProvider`.

Since:
  3.0

### DISPOSED

public static final BufferState DISPOSED
Indicates that the `IBuffer` can not be used anymore.

Since:
  3.0

## Method Details

### values

public static BufferState[] values()
Returns an array containing the constants of this enum class, in the order they are declared.

Returns:
  an array containing the constants of this enum class, in the order they are declared

### valueOf

public static BufferState valueOf(String name)
Returns the enum constant of this class with the specified name. The string must match exactly an identifier used to declare an enum constant in this class. (Extraneous whitespace characters are not permitted.)

Parameters:
  `name` - the name of the enum constant to be returned.
Returns:
  the enum constant with the specified name
Throws:
  `IllegalArgumentException` - if this enum class has no constant with the specified name
  `NullPointerException` - if the argument is null