comparison src/org/eclipse/jetty/io/View.java @ 802:3428c60d7cfc

replace jetty jars with source
author Franklin Schmidt <fschmidt@gmail.com>
date Wed, 07 Sep 2016 21:15:48 -0600
parents
children 0e96ce3db20a
comparison
equal deleted inserted replaced
801:6a21393191c1 802:3428c60d7cfc
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;
20
21 /**
22 * A View on another buffer. Allows operations that do not change the _content or
23 * indexes of the backing buffer.
24 *
25 *
26 *
27 */
28 public class View extends AbstractBuffer
29 {
30 Buffer _buffer;
31
32 /**
33 * @param buffer The <code>Buffer</code> on which we are presenting a <code>View</code>.
34 * @param mark The initial value of the {@link Buffer#markIndex mark index}
35 * @param get The initial value of the {@link Buffer#getIndex get index}
36 * @param put The initial value of the {@link Buffer#putIndex put index}
37 * @param access The access level - one of the constants from {@link Buffer}.
38 */
39 public View(Buffer buffer, int mark, int get, int put,int access)
40 {
41 super(READWRITE,!buffer.isImmutable());
42 _buffer=buffer.buffer();
43 setPutIndex(put);
44 setGetIndex(get);
45 setMarkIndex(mark);
46 _access=access;
47 }
48
49 public View(Buffer buffer)
50 {
51 super(READWRITE,!buffer.isImmutable());
52 _buffer=buffer.buffer();
53 setPutIndex(buffer.putIndex());
54 setGetIndex(buffer.getIndex());
55 setMarkIndex(buffer.markIndex());
56 _access=buffer.isReadOnly()?READONLY:READWRITE;
57 }
58
59 public View()
60 {
61 super(READWRITE,true);
62 }
63
64 /**
65 * Update view to buffer
66 */
67 public void update(Buffer buffer)
68 {
69 _access=READWRITE;
70 _buffer=buffer.buffer();
71 setGetIndex(0);
72 setPutIndex(buffer.putIndex());
73 setGetIndex(buffer.getIndex());
74 setMarkIndex(buffer.markIndex());
75 _access=buffer.isReadOnly()?READONLY:READWRITE;
76 }
77
78 public void update(int get, int put)
79 {
80 int a=_access;
81 _access=READWRITE;
82 setGetIndex(0);
83 setPutIndex(put);
84 setGetIndex(get);
85 setMarkIndex(-1);
86 _access=a;
87 }
88
89 /**
90 * @return The {@link Buffer#array()} from the underlying buffer.
91 */
92 public byte[] array()
93 {
94 return _buffer.array();
95 }
96
97 /**
98 * @return The {@link Buffer#buffer()} from the underlying buffer.
99 */
100 @Override
101 public Buffer buffer()
102 {
103 return _buffer.buffer();
104 }
105
106 /**
107 * @return The {@link Buffer#capacity} of the underlying buffer.
108 */
109 public int capacity()
110 {
111 return _buffer.capacity();
112 }
113
114 /**
115 *
116 */
117 @Override
118 public void clear()
119 {
120 setMarkIndex(-1);
121 setGetIndex(0);
122 setPutIndex(_buffer.getIndex());
123 setGetIndex(_buffer.getIndex());
124 }
125
126 /**
127 *
128 */
129 @Override
130 public void compact()
131 {
132 // TODO
133 }
134
135 /*
136 * (non-Javadoc)
137 *
138 * @see java.lang.Object#equals(java.lang.Object)
139 */
140 @Override
141 public boolean equals(Object obj)
142 {
143 return this==obj ||((obj instanceof Buffer)&& obj.equals(this)) || super.equals(obj);
144 }
145
146 /**
147 * @return Whether the underlying buffer is {@link Buffer#isReadOnly read only}
148 */
149 @Override
150 public boolean isReadOnly()
151 {
152 return _buffer.isReadOnly();
153 }
154
155 /**
156 * @return Whether the underlying buffer is {@link Buffer#isVolatile volatile}
157 */
158 @Override
159 public boolean isVolatile()
160 {
161 return true;
162 }
163
164 /**
165 * @return The result of calling {@link Buffer#peek(int)} on the underlying buffer
166 */
167 public byte peek(int index)
168 {
169 return _buffer.peek(index);
170 }
171
172 /**
173 * @return The result of calling {@link Buffer#peek(int, byte[], int, int)} on the underlying buffer
174 */
175 public int peek(int index, byte[] b, int offset, int length)
176 {
177 return _buffer.peek(index,b,offset,length);
178 }
179
180 /**
181 * @return The result of calling {@link Buffer#peek(int, int)} on the underlying buffer
182 */
183 @Override
184 public Buffer peek(int index, int length)
185 {
186 return _buffer.peek(index, length);
187 }
188
189 /**
190 * @param index
191 * @param src
192 */
193 @Override
194 public int poke(int index, Buffer src)
195 {
196 return _buffer.poke(index,src);
197 }
198
199 /**
200 * @param index
201 * @param b
202 */
203 public void poke(int index, byte b)
204 {
205 _buffer.poke(index,b);
206 }
207
208 /**
209 * @param index
210 * @param b
211 * @param offset
212 * @param length
213 */
214 @Override
215 public int poke(int index, byte[] b, int offset, int length)
216 {
217 return _buffer.poke(index,b,offset,length);
218 }
219
220 @Override
221 public String toString()
222 {
223 if (_buffer==null)
224 return "INVALID";
225 return super.toString();
226 }
227
228 public static class CaseInsensitive extends View implements Buffer.CaseInsensitve
229 {
230 public CaseInsensitive()
231 {
232 super();
233 }
234
235 public CaseInsensitive(Buffer buffer, int mark, int get, int put, int access)
236 {
237 super(buffer,mark,get,put,access);
238 }
239
240 public CaseInsensitive(Buffer buffer)
241 {
242 super(buffer);
243 }
244
245 @Override
246 public boolean equals(Object obj)
247 {
248 return this==obj ||((obj instanceof Buffer)&&((Buffer)obj).equalsIgnoreCase(this)) || super.equals(obj);
249 }
250 }
251 }