View Javadoc

1   // ========================================================================
2   // Copyright (c) 2004-2009 Mort Bay Consulting Pty. Ltd.
3   // ------------------------------------------------------------------------
4   // All rights reserved. This program and the accompanying materials
5   // are made available under the terms of the Eclipse Public License v1.0
6   // and Apache License v2.0 which accompanies this distribution.
7   // The Eclipse Public License is available at 
8   // http://www.eclipse.org/legal/epl-v10.html
9   // The Apache License v2.0 is available at
10  // http://www.opensource.org/licenses/apache2.0.php
11  // You may elect to redistribute this code under either of these licenses. 
12  // ========================================================================
13  
14  package org.eclipse.jetty.http;
15  
16  import org.eclipse.jetty.io.Buffer;
17  import org.eclipse.jetty.io.Buffers;
18  import org.eclipse.jetty.io.ThreadLocalBuffers;
19  import org.eclipse.jetty.util.component.AbstractLifeCycle;
20  
21  /* ------------------------------------------------------------ */
22  /** Abstract Buffer pool.
23   * simple unbounded pool of buffers for header, request and response sizes.
24   *
25   */
26  public abstract class HttpBuffers extends AbstractLifeCycle
27  {
28      
29      private final ThreadLocalBuffers _requestBuffers = new ThreadLocalBuffers()
30      {
31          @Override
32          protected Buffer newBuffer(int size)
33          {
34              return newRequestBuffer(size);
35          }
36  
37          @Override
38          protected Buffer newHeader(int size)
39          {
40              return newRequestHeader(size);
41          }
42      };
43      
44      private final ThreadLocalBuffers _responseBuffers = new ThreadLocalBuffers()
45      {
46          @Override
47          protected Buffer newBuffer(int size)
48          {
49              return newResponseBuffer(size);
50          }
51  
52          @Override
53          protected Buffer newHeader(int size)
54          {
55              return newResponseHeader(size);
56          }
57      };
58      
59      public HttpBuffers()
60      {
61          super();
62          _requestBuffers.setBufferSize(8*1024);
63          _requestBuffers.setHeaderSize(6*1024);
64          _responseBuffers.setBufferSize(12*1024);
65          _responseBuffers.setHeaderSize(6*1024);
66      }
67  
68      protected void doStart()
69          throws Exception
70      {
71          super.doStart();
72      }
73      
74      /**
75       * @return Returns the headerBufferSize.
76       * @deprecated use {@link #getRequestHeaderSize()} or {@link #getResponseHeaderSize()}
77       */
78      public int getHeaderBufferSize()
79      {
80          return _requestBuffers.getHeaderSize();
81      }
82  
83      public Buffers getRequestBuffers()
84      {
85          return _requestBuffers;
86      }
87      
88      /**
89       * @return Returns the requestBufferSize.
90       */
91      public int getRequestBufferSize()
92      {
93          return _requestBuffers.getBufferSize();
94      }
95      
96      /**
97       * @return Returns the request header size.
98       */
99      public int getRequestHeaderSize()
100     {
101         return _requestBuffers.getHeaderSize();
102     }
103 
104     public Buffers getResponseBuffers()
105     {
106         return _requestBuffers;
107     }
108     
109     /**
110      * @return Returns the responseBufferSize.
111      */
112     public int getResponseBufferSize()
113     {
114         return _responseBuffers.getBufferSize();
115     }
116     
117     /**
118      * @return Returns the response header size.
119      */
120     public int getResponseHeaderSize()
121     {
122         return _responseBuffers.getHeaderSize();
123     }
124 
125     protected abstract Buffer newRequestBuffer(int size);
126 
127     protected abstract Buffer newRequestHeader(int size);
128 
129     protected abstract Buffer newResponseBuffer(int size);
130 
131     protected abstract Buffer newResponseHeader(int size);
132 
133     /**
134      * @param headerBufferSize The headerBufferSize to set.
135      * @deprecated 
136      */
137     public void setHeaderBufferSize( int headerBufferSize )
138     {
139         setRequestHeaderSize(headerBufferSize);
140         setResponseHeaderSize(headerBufferSize);
141     }
142     
143     /**
144      * @param size The requestBufferSize to set.
145      */
146     public void setRequestBufferSize( int size )
147     {
148         if (isStarted())
149           throw new IllegalStateException();
150         _requestBuffers.setBufferSize(size);
151     }
152     /**
153      * @param size 
154      */
155     public void setRequestHeaderSize( int size )
156     {
157         if (isStarted())
158             throw new IllegalStateException();
159         _requestBuffers.setHeaderSize(size);
160     }
161     
162     /**
163      * @param size The response buffer size in bytes.
164      */
165     public void setResponseBufferSize( int size )
166     {
167         if (isStarted())
168           throw new IllegalStateException();
169         _responseBuffers.setBufferSize(size);
170     }
171     /**
172      * @param size 
173      */
174     public void setResponseHeaderSize( int size )
175     {
176         if (isStarted())
177             throw new IllegalStateException();
178         _responseBuffers.setHeaderSize(size);
179     }
180     
181 }