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.http; 20 21 import org.eclipse.jetty.io.Buffers; 22 import org.eclipse.jetty.io.BuffersFactory; 23 import org.eclipse.jetty.util.component.AbstractLifeCycle; 24 25 /* ------------------------------------------------------------ */ 26 /** Abstract Buffer pool. 27 * simple unbounded pool of buffers for header, request and response sizes. 28 * 29 */ 30 public class HttpBuffersImpl extends AbstractLifeCycle implements HttpBuffers 31 { 32 private int _requestBufferSize=16*1024; 33 private int _requestHeaderSize=6*1024; 34 private int _responseBufferSize=32*1024; 35 private int _responseHeaderSize=6*1024; 36 private int _maxBuffers=1024; 37 38 private Buffers.Type _requestBufferType=Buffers.Type.BYTE_ARRAY; 39 private Buffers.Type _requestHeaderType=Buffers.Type.BYTE_ARRAY; 40 private Buffers.Type _responseBufferType=Buffers.Type.BYTE_ARRAY; 41 private Buffers.Type _responseHeaderType=Buffers.Type.BYTE_ARRAY; 42 43 private Buffers _requestBuffers; 44 private Buffers _responseBuffers; 45 46 HttpBuffersImpl()47 public HttpBuffersImpl() 48 { 49 super(); 50 } 51 52 /** 53 * @return the requestBufferSize 54 */ getRequestBufferSize()55 public int getRequestBufferSize() 56 { 57 return _requestBufferSize; 58 } 59 60 /** 61 * @param requestBufferSize the requestBufferSize to set 62 */ setRequestBufferSize(int requestBufferSize)63 public void setRequestBufferSize(int requestBufferSize) 64 { 65 _requestBufferSize = requestBufferSize; 66 } 67 68 /** 69 * @return the requestHeaderSize 70 */ getRequestHeaderSize()71 public int getRequestHeaderSize() 72 { 73 return _requestHeaderSize; 74 } 75 76 /** 77 * @param requestHeaderSize the requestHeaderSize to set 78 */ setRequestHeaderSize(int requestHeaderSize)79 public void setRequestHeaderSize(int requestHeaderSize) 80 { 81 _requestHeaderSize = requestHeaderSize; 82 } 83 84 /** 85 * @return the responseBufferSize 86 */ getResponseBufferSize()87 public int getResponseBufferSize() 88 { 89 return _responseBufferSize; 90 } 91 92 /** 93 * @param responseBufferSize the responseBufferSize to set 94 */ setResponseBufferSize(int responseBufferSize)95 public void setResponseBufferSize(int responseBufferSize) 96 { 97 _responseBufferSize = responseBufferSize; 98 } 99 100 /** 101 * @return the responseHeaderSize 102 */ getResponseHeaderSize()103 public int getResponseHeaderSize() 104 { 105 return _responseHeaderSize; 106 } 107 108 /** 109 * @param responseHeaderSize the responseHeaderSize to set 110 */ setResponseHeaderSize(int responseHeaderSize)111 public void setResponseHeaderSize(int responseHeaderSize) 112 { 113 _responseHeaderSize = responseHeaderSize; 114 } 115 116 /** 117 * @return the requestBufferType 118 */ getRequestBufferType()119 public Buffers.Type getRequestBufferType() 120 { 121 return _requestBufferType; 122 } 123 124 /** 125 * @param requestBufferType the requestBufferType to set 126 */ setRequestBufferType(Buffers.Type requestBufferType)127 public void setRequestBufferType(Buffers.Type requestBufferType) 128 { 129 _requestBufferType = requestBufferType; 130 } 131 132 /** 133 * @return the requestHeaderType 134 */ getRequestHeaderType()135 public Buffers.Type getRequestHeaderType() 136 { 137 return _requestHeaderType; 138 } 139 140 /** 141 * @param requestHeaderType the requestHeaderType to set 142 */ setRequestHeaderType(Buffers.Type requestHeaderType)143 public void setRequestHeaderType(Buffers.Type requestHeaderType) 144 { 145 _requestHeaderType = requestHeaderType; 146 } 147 148 /** 149 * @return the responseBufferType 150 */ getResponseBufferType()151 public Buffers.Type getResponseBufferType() 152 { 153 return _responseBufferType; 154 } 155 156 /** 157 * @param responseBufferType the responseBufferType to set 158 */ setResponseBufferType(Buffers.Type responseBufferType)159 public void setResponseBufferType(Buffers.Type responseBufferType) 160 { 161 _responseBufferType = responseBufferType; 162 } 163 164 /** 165 * @return the responseHeaderType 166 */ getResponseHeaderType()167 public Buffers.Type getResponseHeaderType() 168 { 169 return _responseHeaderType; 170 } 171 172 /** 173 * @param responseHeaderType the responseHeaderType to set 174 */ setResponseHeaderType(Buffers.Type responseHeaderType)175 public void setResponseHeaderType(Buffers.Type responseHeaderType) 176 { 177 _responseHeaderType = responseHeaderType; 178 } 179 180 /** 181 * @param requestBuffers the requestBuffers to set 182 */ setRequestBuffers(Buffers requestBuffers)183 public void setRequestBuffers(Buffers requestBuffers) 184 { 185 _requestBuffers = requestBuffers; 186 } 187 188 /** 189 * @param responseBuffers the responseBuffers to set 190 */ setResponseBuffers(Buffers responseBuffers)191 public void setResponseBuffers(Buffers responseBuffers) 192 { 193 _responseBuffers = responseBuffers; 194 } 195 196 @Override doStart()197 protected void doStart() 198 throws Exception 199 { 200 _requestBuffers=BuffersFactory.newBuffers(_requestHeaderType,_requestHeaderSize,_requestBufferType,_requestBufferSize,_requestBufferType,getMaxBuffers()); 201 _responseBuffers=BuffersFactory.newBuffers(_responseHeaderType,_responseHeaderSize,_responseBufferType,_responseBufferSize,_responseBufferType,getMaxBuffers()); 202 super.doStart(); 203 } 204 205 @Override doStop()206 protected void doStop() 207 throws Exception 208 { 209 _requestBuffers=null; 210 _responseBuffers=null; 211 } 212 getRequestBuffers()213 public Buffers getRequestBuffers() 214 { 215 return _requestBuffers; 216 } 217 218 getResponseBuffers()219 public Buffers getResponseBuffers() 220 { 221 return _responseBuffers; 222 } 223 setMaxBuffers(int maxBuffers)224 public void setMaxBuffers(int maxBuffers) 225 { 226 _maxBuffers = maxBuffers; 227 } 228 getMaxBuffers()229 public int getMaxBuffers() 230 { 231 return _maxBuffers; 232 } 233 toString()234 public String toString() 235 { 236 return _requestBuffers+"/"+_responseBuffers; 237 } 238 } 239