View Javadoc

    1   // ========================================================================
    2   // Copyright 2008 Mort Bay Consulting Pty. Ltd.
    3   // ------------------------------------------------------------------------
    4   // Licensed under the Apache License, Version 2.0 (the "License");
    5   // you may not use this file except in compliance with the License.
    6   // You may obtain a copy of the License at
    7   // http://www.apache.org/licenses/LICENSE-2.0
    8   // Unless required by applicable law or agreed to in writing, software
    9   // distributed under the License is distributed on an "AS IS" BASIS,
    10  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    11  // See the License for the specific language governing permissions and
    12  // limitations under the License.
    13  // ========================================================================
    14  package org.mortbay.io.nio;
    15
    16  import java.nio.ByteBuffer;
    17
    18  import org.mortbay.io.ByteArrayBuffer;
    19
    20  public class IndirectNIOBuffer extends ByteArrayBuffer implements NIOBuffer
    21  {
    22      protected ByteBuffer _buf;
    23
    24      /* ------------------------------------------------------------ */
    25      public IndirectNIOBuffer(int size)
    26      {
    27          super(READWRITE,NON_VOLATILE);
    28          _buf = ByteBuffer.allocate(size);
    29          _buf.position(0);
    30          _buf.limit(_buf.capacity());
    31          _bytes=_buf.array();
    32      }
    33
    34      /* ------------------------------------------------------------ */
    35      public IndirectNIOBuffer(ByteBuffer buffer,boolean immutable)
    36      {
    37          super(immutable?IMMUTABLE:READWRITE,NON_VOLATILE);
    38          if (buffer.isDirect())
    39              throw new IllegalArgumentException();
    40          _buf = buffer;
    41          setGetIndex(buffer.position());
    42          setPutIndex(buffer.limit());
    43          _bytes=_buf.array();
    44      }
    45
    46      /* ------------------------------------------------------------ */
    47      public ByteBuffer getByteBuffer()
    48      {
    49          return _buf;
    50      }
    51
    52      /* ------------------------------------------------------------ */
    53      public boolean isDirect()
    54      {
    55          return false;
    56      }
    57  }