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  }