All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.barchart.http.server.ServerMessagePool Maven / Gradle / Ivy

package com.barchart.http.server;

import java.util.concurrent.Callable;

import com.barchart.http.util.ObjectPool;

/**
 * HTTP request/response object pool for low-garbage request handling
 */
public class ServerMessagePool {

	private final ObjectPool requestPool;
	private final ObjectPool responsePool;

	/**
	 * Create a new fixed-size message pool.
	 * 
	 * @param maxObjects_
	 *            The pool size, or -1 for unlimited
	 */
	public ServerMessagePool(final int maxObjects_) {

		requestPool =
				new ObjectPool(maxObjects_,
						new Callable() {
							@Override
							public PooledServerRequest call() throws Exception {
								return new PooledServerRequest();
							}
						});

		responsePool =
				new ObjectPool(maxObjects_,
						new Callable() {
							@Override
							public PooledServerResponse call() throws Exception {
								return new PooledServerResponse(
										ServerMessagePool.this);
							}
						});

	}

	/**
	 * Get an available request object, or null if none are available.
	 * 
	 * @return A pooled request object
	 */
	public PooledServerRequest getRequest() {
		return requestPool.poll();
	}

	/**
	 * Get an available response object, or null if none are available.
	 * 
	 * @return A pooled response object
	 */
	public PooledServerResponse getResponse() {
		return responsePool.poll();
	}

	void makeAvailable(final PooledServerRequest request) {
		requestPool.give(request);
	}

	void makeAvailable(final PooledServerResponse response) {
		responsePool.give(response);
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy