Using Callback.Adapter.INSTANCE to avoid unneeded allocations.
This commit is contained in:
parent
1386f20cf5
commit
7918a58c71
|
@ -85,8 +85,7 @@ import org.eclipse.jetty.util.Callback;
|
|||
*/
|
||||
public class DeferredContentProvider implements AsyncContentProvider, Closeable
|
||||
{
|
||||
private static final Callback EMPTY_CALLBACK = new Callback.Adapter();
|
||||
private static final AsyncChunk CLOSE = new AsyncChunk(BufferUtil.EMPTY_BUFFER, EMPTY_CALLBACK);
|
||||
private static final AsyncChunk CLOSE = new AsyncChunk(BufferUtil.EMPTY_BUFFER, Callback.Adapter.INSTANCE);
|
||||
|
||||
private final Object lock = this;
|
||||
private final Queue<AsyncChunk> chunks = new ArrayQueue<>(4, 64, lock);
|
||||
|
@ -130,7 +129,7 @@ public class DeferredContentProvider implements AsyncContentProvider, Closeable
|
|||
*/
|
||||
public boolean offer(ByteBuffer buffer)
|
||||
{
|
||||
return offer(buffer, EMPTY_CALLBACK);
|
||||
return offer(buffer, Callback.Adapter.INSTANCE);
|
||||
}
|
||||
|
||||
public boolean offer(ByteBuffer buffer, Callback callback)
|
||||
|
|
|
@ -99,7 +99,7 @@ public class HttpSenderOverFCGI extends HttpSender
|
|||
int id = getHttpChannel().getRequest();
|
||||
boolean hasContent = content.hasContent();
|
||||
Generator.Result headersResult = generator.generateRequestHeaders(id, fcgiHeaders,
|
||||
hasContent ? callback : new Callback.Adapter());
|
||||
hasContent ? callback : Callback.Adapter.INSTANCE);
|
||||
if (hasContent)
|
||||
{
|
||||
getHttpChannel().flush(headersResult);
|
||||
|
|
|
@ -58,7 +58,7 @@ public class HttpTransportOverFCGI implements HttpTransport
|
|||
if (lastContent)
|
||||
{
|
||||
Generator.Result headersResult = generator.generateResponseHeaders(request, info.getStatus(), info.getReason(),
|
||||
info.getHttpFields(), new Callback.Adapter());
|
||||
info.getHttpFields(), Callback.Adapter.INSTANCE);
|
||||
Generator.Result contentResult = generator.generateResponseContent(request, BufferUtil.EMPTY_BUFFER, lastContent, aborted, callback);
|
||||
flusher.flush(headersResult, contentResult);
|
||||
}
|
||||
|
@ -72,7 +72,7 @@ public class HttpTransportOverFCGI implements HttpTransport
|
|||
else
|
||||
{
|
||||
Generator.Result headersResult = generator.generateResponseHeaders(request, info.getStatus(), info.getReason(),
|
||||
info.getHttpFields(), new Callback.Adapter());
|
||||
info.getHttpFields(), Callback.Adapter.INSTANCE);
|
||||
Generator.Result contentResult = generator.generateResponseContent(request, content, lastContent, aborted, callback);
|
||||
flusher.flush(headersResult, contentResult);
|
||||
}
|
||||
|
|
|
@ -380,7 +380,7 @@ public class SPDYClient
|
|||
private void closeConnections()
|
||||
{
|
||||
for (Session session : sessions)
|
||||
session.goAway(new GoAwayInfo(), new Callback.Adapter());
|
||||
session.goAway(new GoAwayInfo(), Callback.Adapter.INSTANCE);
|
||||
sessions.clear();
|
||||
}
|
||||
|
||||
|
|
|
@ -167,7 +167,7 @@ public class SPDYConnection extends AbstractConnection implements Controller, Id
|
|||
protected void goAway(ISession session)
|
||||
{
|
||||
if (session != null)
|
||||
session.goAway(new GoAwayInfo(), new Callback.Adapter());
|
||||
session.goAway(new GoAwayInfo(), Callback.Adapter.INSTANCE);
|
||||
}
|
||||
|
||||
private void shutdown(ISession session)
|
||||
|
|
|
@ -84,7 +84,7 @@ public class SPDYv3FlowControlStrategy implements FlowControlStrategy
|
|||
if (dataInfo.consumed() == length && !stream.isClosed() && length > 0)
|
||||
{
|
||||
WindowUpdateFrame windowUpdateFrame = new WindowUpdateFrame(session.getVersion(), stream.getId(), length);
|
||||
session.control(stream, windowUpdateFrame, 0, TimeUnit.MILLISECONDS, new Callback.Adapter());
|
||||
session.control(stream, windowUpdateFrame, 0, TimeUnit.MILLISECONDS, Callback.Adapter.INSTANCE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -431,7 +431,7 @@ public class StandardSession implements ISession, Parser.Listener, Dumpable
|
|||
{
|
||||
RstInfo rstInfo = new RstInfo(streamId, StreamStatus.INVALID_STREAM);
|
||||
LOG.debug("Unknown stream {}", rstInfo);
|
||||
rst(rstInfo, new Callback.Adapter());
|
||||
rst(rstInfo, Callback.Adapter.INSTANCE);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -471,7 +471,7 @@ public class StandardSession implements ISession, Parser.Listener, Dumpable
|
|||
public void onStreamException(StreamException x)
|
||||
{
|
||||
notifyOnFailure(listener, x); // TODO: notify StreamFrameListener if exists?
|
||||
rst(new RstInfo(x.getStreamId(), x.getStreamStatus()), new Callback.Adapter());
|
||||
rst(new RstInfo(x.getStreamId(), x.getStreamStatus()), Callback.Adapter.INSTANCE);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -479,7 +479,7 @@ public class StandardSession implements ISession, Parser.Listener, Dumpable
|
|||
{
|
||||
Throwable cause = x.getCause();
|
||||
notifyOnFailure(listener, cause == null ? x : cause);
|
||||
goAway(x.getSessionStatus(), 0, TimeUnit.SECONDS, new Callback.Adapter());
|
||||
goAway(x.getSessionStatus(), 0, TimeUnit.SECONDS, Callback.Adapter.INSTANCE);
|
||||
}
|
||||
|
||||
private void onSyn(final SynStreamFrame frame)
|
||||
|
@ -570,7 +570,7 @@ public class StandardSession implements ISession, Parser.Listener, Dumpable
|
|||
}
|
||||
RstInfo rstInfo = new RstInfo(streamId, StreamStatus.PROTOCOL_ERROR);
|
||||
LOG.debug("Duplicate stream, {}", rstInfo);
|
||||
rst(rstInfo, new Callback.Adapter()); // We don't care (too much) if the reset fails.
|
||||
rst(rstInfo, Callback.Adapter.INSTANCE); // We don't care (too much) if the reset fails.
|
||||
return null;
|
||||
}
|
||||
else
|
||||
|
@ -653,7 +653,7 @@ public class StandardSession implements ISession, Parser.Listener, Dumpable
|
|||
{
|
||||
RstInfo rstInfo = new RstInfo(streamId, StreamStatus.INVALID_STREAM);
|
||||
LOG.debug("Unknown stream {}", rstInfo);
|
||||
rst(rstInfo, new Callback.Adapter());
|
||||
rst(rstInfo, Callback.Adapter.INSTANCE);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -712,7 +712,7 @@ public class StandardSession implements ISession, Parser.Listener, Dumpable
|
|||
}
|
||||
else
|
||||
{
|
||||
control(null, frame, 0, TimeUnit.MILLISECONDS, new Callback.Adapter());
|
||||
control(null, frame, 0, TimeUnit.MILLISECONDS, Callback.Adapter.INSTANCE);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -736,7 +736,7 @@ public class StandardSession implements ISession, Parser.Listener, Dumpable
|
|||
{
|
||||
RstInfo rstInfo = new RstInfo(streamId, StreamStatus.INVALID_STREAM);
|
||||
LOG.debug("Unknown stream, {}", rstInfo);
|
||||
rst(rstInfo, new Callback.Adapter());
|
||||
rst(rstInfo, Callback.Adapter.INSTANCE);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1238,7 +1238,7 @@ public class StandardSession implements ISession, Parser.Listener, Dumpable
|
|||
{
|
||||
private CloseFrameBytes()
|
||||
{
|
||||
super(null, new Callback.Adapter());
|
||||
super(null, Callback.Adapter.INSTANCE);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -272,7 +272,7 @@ public class StandardStream extends IdleTimeout implements IStream
|
|||
if (!canReceive())
|
||||
{
|
||||
LOG.debug("Protocol error receiving {}, resetting", dataInfo);
|
||||
session.rst(new RstInfo(getId(), StreamStatus.PROTOCOL_ERROR), new Adapter());
|
||||
session.rst(new RstInfo(getId(), StreamStatus.PROTOCOL_ERROR), Callback.Adapter.INSTANCE);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -547,7 +547,7 @@ public class StandardStream extends IdleTimeout implements IStream
|
|||
|
||||
private StreamCallback()
|
||||
{
|
||||
this(new Adapter());
|
||||
this(Callback.Adapter.INSTANCE);
|
||||
}
|
||||
|
||||
private StreamCallback(Callback callback)
|
||||
|
|
|
@ -63,7 +63,7 @@ public class HttpConnectionOverSPDY extends HttpConnection
|
|||
// First close then abort, to be sure that the connection cannot be reused
|
||||
// from an onFailure() handler or by blocking code waiting for completion.
|
||||
getHttpDestination().close(this);
|
||||
session.goAway(new GoAwayInfo(), new Callback.Adapter());
|
||||
session.goAway(new GoAwayInfo(), Callback.Adapter.INSTANCE);
|
||||
abort(new AsynchronousCloseException());
|
||||
}
|
||||
|
||||
|
|
|
@ -102,7 +102,7 @@ public class HttpReceiverOverSPDY extends HttpReceiver implements StreamFrameLis
|
|||
public StreamFrameListener onPush(Stream stream, PushInfo pushInfo)
|
||||
{
|
||||
// SPDY push not supported
|
||||
getHttpChannel().getSession().rst(new RstInfo(stream.getId(), StreamStatus.REFUSED_STREAM), new Callback.Adapter());
|
||||
getHttpChannel().getSession().rst(new RstInfo(stream.getId(), StreamStatus.REFUSED_STREAM), Callback.Adapter.INSTANCE);
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
|
@ -154,7 +154,7 @@ public class ProxyEngineSelector extends ServerSessionFrameListener.Adapter
|
|||
private void rst(Stream stream)
|
||||
{
|
||||
RstInfo rstInfo = new RstInfo(stream.getId(), StreamStatus.REFUSED_STREAM);
|
||||
stream.getSession().rst(rstInfo, new Callback.Adapter());
|
||||
stream.getSession().rst(rstInfo, Callback.Adapter.INSTANCE);
|
||||
}
|
||||
|
||||
public static class ProxyServerInfo
|
||||
|
|
|
@ -201,7 +201,7 @@ public class ProxyHTTPSPDYConnection extends HttpConnection implements HttpParse
|
|||
{
|
||||
HttpGenerator.ResponseInfo info = new HttpGenerator.ResponseInfo(HttpVersion.fromString(headers.get
|
||||
("version").getValue()), null, 0, 502, "SPDY reset received from upstream server", false);
|
||||
send(info, null, true, new Callback.Adapter());
|
||||
send(info, null, true, Callback.Adapter.INSTANCE);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -189,7 +189,7 @@ public class SPDYProxyEngine extends ProxyEngine implements StreamFrameListener
|
|||
Session existing = serverSessions.putIfAbsent(host, session);
|
||||
if (existing != null)
|
||||
{
|
||||
session.goAway(new GoAwayInfo(), new Callback.Adapter());
|
||||
session.goAway(new GoAwayInfo(), Callback.Adapter.INSTANCE);
|
||||
session = existing;
|
||||
}
|
||||
}
|
||||
|
@ -222,7 +222,7 @@ public class SPDYProxyEngine extends ProxyEngine implements StreamFrameListener
|
|||
private void rst(Stream stream)
|
||||
{
|
||||
RstInfo rstInfo = new RstInfo(stream.getId(), StreamStatus.REFUSED_STREAM);
|
||||
stream.getSession().rst(rstInfo, new Callback.Adapter());
|
||||
stream.getSession().rst(rstInfo, Callback.Adapter.INSTANCE);
|
||||
}
|
||||
|
||||
private class ProxyPushStreamFrameListener implements StreamFrameListener
|
||||
|
@ -581,7 +581,7 @@ public class SPDYProxyEngine extends ProxyEngine implements StreamFrameListener
|
|||
{
|
||||
Session clientSession = clientStream.getSession();
|
||||
RstInfo clientRstInfo = new RstInfo(clientStream.getId(), serverRstInfo.getStreamStatus());
|
||||
clientSession.rst(clientRstInfo, new Callback.Adapter());
|
||||
clientSession.rst(clientRstInfo, Callback.Adapter.INSTANCE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -182,7 +182,7 @@ public class SPDYServerConnectionFactory extends AbstractConnectionFactory
|
|||
void closeSessions()
|
||||
{
|
||||
for (Session session : sessions)
|
||||
session.goAway(new GoAwayInfo(), new Callback.Adapter());
|
||||
session.goAway(new GoAwayInfo(), Callback.Adapter.INSTANCE);
|
||||
sessions.clear();
|
||||
}
|
||||
|
||||
|
|
|
@ -60,6 +60,12 @@ public interface Callback
|
|||
*/
|
||||
public static class Adapter implements Callback
|
||||
{
|
||||
/**
|
||||
* Instance of Adapter that can be used when the callback methods need an empty
|
||||
* implementation without incurring in the cost of allocating a new Adapter object.
|
||||
*/
|
||||
public static final Adapter INSTANCE = new Adapter();
|
||||
|
||||
@Override
|
||||
public void succeeded()
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue