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