org.eclipse.net4j.buffer

## Enum BufferState

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

- All Implemented Interfaces:
    java.io.Serializable, java.lang.Comparable<BufferState>

      public enum BufferState
      extends java.lang.Enum<BufferState>

  Enumerates the internal states of an `IBuffer`.
  Author:
    Eike Stepper
  No Extend
    This interface is not intended to be extended by clients.

- - ### Enum Constant Summary

    Enum Constants
    Enum Constant and 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

    All Methods Static Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static BufferState` | `valueOf(java.lang.String name)` Returns the enum constant of this type with the specified name.
    `static BufferState[]` | `values()` Returns an array containing the constants of this enum type, in the order they are declared.

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

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

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

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

- - ### Enum Constant Detail

    - #### 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 Detail

    - #### values

          public static BufferState[] values()

      Returns an array containing the constants of this enum type, in the order they are declared. This method may be used to iterate over the constants as follows:

          for (BufferState c : BufferState.values())
              System.out.println(c);

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

    - #### valueOf

          public static BufferState valueOf(java.lang.String name)

      Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (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:
        `java.lang.IllegalArgumentException` - if this enum type has no constant with the specified name
        `java.lang.NullPointerException` - if the argument is null

Copyright (c) 2014 Eike Stepper (Berlin, Germany) and others.
All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html