View Javadoc

1   // ========================================================================
2   // Copyright (c) 2008-2009 Mort Bay Consulting Pty. Ltd.
3   // ------------------------------------------------------------------------
4   // All rights reserved. This program and the accompanying materials
5   // are made available under the terms of the Eclipse Public License v1.0
6   // and Apache License v2.0 which accompanies this distribution.
7   // The Eclipse Public License is available at 
8   // http://www.eclipse.org/legal/epl-v10.html
9   // The Apache License v2.0 is available at
10  // http://www.opensource.org/licenses/apache2.0.php
11  // You may elect to redistribute this code under either of these licenses. 
12  // ========================================================================
13  package org.eclipse.jetty.io.nio;
14  
15  import java.nio.ByteBuffer;
16  
17  import org.eclipse.jetty.io.ByteArrayBuffer;
18  
19  public class IndirectNIOBuffer extends ByteArrayBuffer implements NIOBuffer
20  {
21      protected ByteBuffer _buf;
22  
23      /* ------------------------------------------------------------ */
24      public IndirectNIOBuffer(int size)
25      {
26          super(READWRITE,NON_VOLATILE);
27          _buf = ByteBuffer.allocate(size);
28          _buf.position(0);
29          _buf.limit(_buf.capacity());
30          _bytes=_buf.array();
31      }
32  
33      /* ------------------------------------------------------------ */
34      public IndirectNIOBuffer(ByteBuffer buffer,boolean immutable)
35      {
36          super(immutable?IMMUTABLE:READWRITE,NON_VOLATILE);
37          if (buffer.isDirect())
38              throw new IllegalArgumentException();
39          _buf = buffer;
40          setGetIndex(buffer.position());
41          setPutIndex(buffer.limit());
42          _bytes=_buf.array();
43      }
44      
45      /* ------------------------------------------------------------ */
46      public ByteBuffer getByteBuffer()
47      {
48          return _buf;
49      }
50  
51      /* ------------------------------------------------------------ */
52      public boolean isDirect()
53      {
54          return false;
55      }
56  }