Mercurial Hosting > luan
comparison src/org/eclipse/jetty/io/SimpleBuffers.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 |
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 /** SimpleBuffers. | |
23 * Simple implementation of Buffers holder. | |
24 * | |
25 * | |
26 */ | |
27 public class SimpleBuffers implements Buffers | |
28 { | |
29 final Buffer _header; | |
30 final Buffer _buffer; | |
31 boolean _headerOut; | |
32 boolean _bufferOut; | |
33 | |
34 /* ------------------------------------------------------------ */ | |
35 /** | |
36 * | |
37 */ | |
38 public SimpleBuffers(Buffer header, Buffer buffer) | |
39 { | |
40 _header=header; | |
41 _buffer=buffer; | |
42 } | |
43 | |
44 /* ------------------------------------------------------------ */ | |
45 public Buffer getBuffer() | |
46 { | |
47 synchronized(this) | |
48 { | |
49 if (_buffer!=null && !_bufferOut) | |
50 { | |
51 _bufferOut=true; | |
52 return _buffer; | |
53 } | |
54 | |
55 if (_buffer!=null && _header!=null && _header.capacity()==_buffer.capacity() && !_headerOut) | |
56 { | |
57 _headerOut=true; | |
58 return _header; | |
59 } | |
60 | |
61 if (_buffer!=null) | |
62 return new ByteArrayBuffer(_buffer.capacity()); | |
63 return new ByteArrayBuffer(4096); | |
64 } | |
65 } | |
66 | |
67 /* ------------------------------------------------------------ */ | |
68 public Buffer getHeader() | |
69 { | |
70 synchronized(this) | |
71 { | |
72 if (_header!=null && !_headerOut) | |
73 { | |
74 _headerOut=true; | |
75 return _header; | |
76 } | |
77 | |
78 if (_buffer!=null && _header!=null && _header.capacity()==_buffer.capacity() && !_bufferOut) | |
79 { | |
80 _bufferOut=true; | |
81 return _buffer; | |
82 } | |
83 | |
84 if (_header!=null) | |
85 return new ByteArrayBuffer(_header.capacity()); | |
86 return new ByteArrayBuffer(4096); | |
87 } | |
88 } | |
89 | |
90 /* ------------------------------------------------------------ */ | |
91 public Buffer getBuffer(int size) | |
92 { | |
93 synchronized(this) | |
94 { | |
95 if (_header!=null && _header.capacity()==size) | |
96 return getHeader(); | |
97 if (_buffer!=null && _buffer.capacity()==size) | |
98 return getBuffer(); | |
99 return null; | |
100 } | |
101 } | |
102 | |
103 /* ------------------------------------------------------------ */ | |
104 public void returnBuffer(Buffer buffer) | |
105 { | |
106 synchronized(this) | |
107 { | |
108 buffer.clear(); | |
109 if (buffer==_header) | |
110 _headerOut=false; | |
111 if (buffer==_buffer) | |
112 _bufferOut=false; | |
113 } | |
114 } | |
115 | |
116 | |
117 } |