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 }