view src/org/eclipse/jetty/http/HttpBuffersImpl.java @ 868:688b875e18ba

remove ThreadLocalBuffers
author Franklin Schmidt <fschmidt@gmail.com>
date Mon, 03 Oct 2016 19:29:34 -0600
parents 3428c60d7cfc
children 0e96ce3db20a
line wrap: on
line source

//
//  ========================================================================
//  Copyright (c) 1995-2014 Mort Bay Consulting Pty. Ltd.
//  ------------------------------------------------------------------------
//  All rights reserved. This program and the accompanying materials
//  are made available under the terms of the Eclipse Public License v1.0
//  and Apache License v2.0 which accompanies this distribution.
//
//      The Eclipse Public License is available at
//      http://www.eclipse.org/legal/epl-v10.html
//
//      The Apache License v2.0 is available at
//      http://www.opensource.org/licenses/apache2.0.php
//
//  You may elect to redistribute this code under either of these licenses.
//  ========================================================================
//

package org.eclipse.jetty.http;

import org.eclipse.jetty.io.Buffers;
import org.eclipse.jetty.io.BuffersFactory;
import org.eclipse.jetty.util.component.AbstractLifeCycle;

/* ------------------------------------------------------------ */
/** Abstract Buffer pool.
 * simple unbounded pool of buffers for header, request and response sizes.
 *
 */
public final class HttpBuffersImpl extends AbstractLifeCycle implements HttpBuffers
{
	private int _requestBufferSize=16*1024;
	private int _requestHeaderSize=6*1024;
	private int _responseBufferSize=32*1024;
	private int _responseHeaderSize=6*1024;
	private final int _maxBuffers=1024;
	
	private Buffers.Type _requestBufferType=Buffers.Type.BYTE_ARRAY;
	private Buffers.Type _requestHeaderType=Buffers.Type.BYTE_ARRAY;
	private Buffers.Type _responseBufferType=Buffers.Type.BYTE_ARRAY;
	private Buffers.Type _responseHeaderType=Buffers.Type.BYTE_ARRAY;
	
	private Buffers _requestBuffers;
	private Buffers _responseBuffers;
	
	
	public HttpBuffersImpl()
	{
		super();
	}
	
	/**
	 * @return the requestBufferSize
	 */
	public int getRequestBufferSize()
	{
		return _requestBufferSize;
	}
	
	/**
	 * @param requestBufferSize the requestBufferSize to set
	 */
	public void setRequestBufferSize(int requestBufferSize)
	{
		_requestBufferSize = requestBufferSize;
	}

	/**
	 * @return the requestHeaderSize
	 */
	public int getRequestHeaderSize()
	{
		return _requestHeaderSize;
	}

	/**
	 * @param requestHeaderSize the requestHeaderSize to set
	 */
	public void setRequestHeaderSize(int requestHeaderSize)
	{
		_requestHeaderSize = requestHeaderSize;
	}

	/**
	 * @return the responseBufferSize
	 */
	public int getResponseBufferSize()
	{
		return _responseBufferSize;
	}

	/**
	 * @param responseBufferSize the responseBufferSize to set
	 */
	public void setResponseBufferSize(int responseBufferSize)
	{
		_responseBufferSize = responseBufferSize;
	}

	/**
	 * @return the responseHeaderSize
	 */
	public int getResponseHeaderSize()
	{
		return _responseHeaderSize;
	}

	/**
	 * @param responseHeaderSize the responseHeaderSize to set
	 */
	public void setResponseHeaderSize(int responseHeaderSize)
	{
		_responseHeaderSize = responseHeaderSize;
	}

	/**
	 * @return the requestBufferType
	 */
	public Buffers.Type getRequestBufferType()
	{
		return _requestBufferType;
	}

	/**
	 * @param requestBufferType the requestBufferType to set
	 */
	public void setRequestBufferType(Buffers.Type requestBufferType)
	{
		_requestBufferType = requestBufferType;
	}

	/**
	 * @return the requestHeaderType
	 */
	public Buffers.Type getRequestHeaderType()
	{
		return _requestHeaderType;
	}

	/**
	 * @param requestHeaderType the requestHeaderType to set
	 */
	public void setRequestHeaderType(Buffers.Type requestHeaderType)
	{
		_requestHeaderType = requestHeaderType;
	}

	/**
	 * @return the responseBufferType
	 */
	public Buffers.Type getResponseBufferType()
	{
		return _responseBufferType;
	}

	/**
	 * @param responseBufferType the responseBufferType to set
	 */
	public void setResponseBufferType(Buffers.Type responseBufferType)
	{
		_responseBufferType = responseBufferType;
	}

	/**
	 * @return the responseHeaderType
	 */
	public Buffers.Type getResponseHeaderType()
	{
		return _responseHeaderType;
	}

	/**
	 * @param responseHeaderType the responseHeaderType to set
	 */
	public void setResponseHeaderType(Buffers.Type responseHeaderType)
	{
		_responseHeaderType = responseHeaderType;
	}

	/**
	 * @param requestBuffers the requestBuffers to set
	 */
	public void setRequestBuffers(Buffers requestBuffers)
	{
		_requestBuffers = requestBuffers;
	}

	/**
	 * @param responseBuffers the responseBuffers to set
	 */
	public void setResponseBuffers(Buffers responseBuffers)
	{
		_responseBuffers = responseBuffers;
	}

	@Override
	protected void doStart()
		throws Exception
	{
		_requestBuffers=BuffersFactory.newBuffers(_requestHeaderType,_requestHeaderSize,_requestBufferType,_requestBufferSize,_requestBufferType,getMaxBuffers());
		_responseBuffers=BuffersFactory.newBuffers(_responseHeaderType,_responseHeaderSize,_responseBufferType,_responseBufferSize,_responseBufferType,getMaxBuffers());
		super.doStart();
	}
	
	@Override
	protected void doStop()
		throws Exception
	{
		_requestBuffers=null;
		_responseBuffers=null;
	}

	public Buffers getRequestBuffers()
	{
		return _requestBuffers;
	}
	

	public Buffers getResponseBuffers()
	{
		return _responseBuffers;
	}

	public int getMaxBuffers()
	{
		return _maxBuffers;
	}
	
	public String toString()
	{
		return _requestBuffers+"/"+_responseBuffers;
	}
}