View Javadoc

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