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 }