Home | History | Annotate | Download | only in nio
      1 //
      2 //  ========================================================================
      3 //  Copyright (c) 1995-2014 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 }
     63