Mercurial Hosting > luan
changeset 1006:58a9c4a42292
simplify Buffers code
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Sun, 23 Oct 2016 17:21:20 -0600 |
parents | 0e96ce3db20a |
children | 945568ee77ac |
files | src/org/eclipse/jetty/http/HttpBuffersImpl.java src/org/eclipse/jetty/io/AbstractBuffers.java src/org/eclipse/jetty/io/Buffers.java src/org/eclipse/jetty/io/BuffersFactory.java src/org/eclipse/jetty/io/PooledBuffers.java src/org/eclipse/jetty/server/Connector.java |
diffstat | 6 files changed, 209 insertions(+), 351 deletions(-) [+] |
line wrap: on
line diff
--- a/src/org/eclipse/jetty/http/HttpBuffersImpl.java Sun Oct 23 02:42:05 2016 -0600 +++ b/src/org/eclipse/jetty/http/HttpBuffersImpl.java Sun Oct 23 17:21:20 2016 -0600 @@ -35,170 +35,54 @@ 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.Type _requestBufferType=Buffers.Type.DIRECT; + private Buffers.Type _responseBufferType=Buffers.Type.DIRECT; 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()); + _requestBuffers = BuffersFactory.newBuffers(Buffers.Type.INDIRECT,_requestHeaderSize,_requestBufferType,_requestBufferSize,_maxBuffers); + _responseBuffers = BuffersFactory.newBuffers(Buffers.Type.INDIRECT,_responseHeaderSize,_responseBufferType,_responseBufferSize,_maxBuffers); super.doStart(); } @@ -221,11 +105,7 @@ return _responseBuffers; } - public int getMaxBuffers() - { - return _maxBuffers; - } - + @Override public String toString() { return _requestBuffers+"/"+_responseBuffers;
--- a/src/org/eclipse/jetty/io/AbstractBuffers.java Sun Oct 23 02:42:05 2016 -0600 +++ b/src/org/eclipse/jetty/io/AbstractBuffers.java Sun Oct 23 17:21:20 2016 -0600 @@ -23,146 +23,133 @@ public abstract class AbstractBuffers implements Buffers { - protected final Buffers.Type _headerType; - protected final int _headerSize; - protected final Buffers.Type _bufferType; - protected final int _bufferSize; - protected final Buffers.Type _otherType; + protected final Buffers.Type _headerType; + protected final int _headerSize; + protected final Buffers.Type _bufferType; + protected final int _bufferSize; - /* ------------------------------------------------------------ */ - public AbstractBuffers(Buffers.Type headerType, int headerSize, Buffers.Type bufferType, int bufferSize, Buffers.Type otherType) - { - _headerType=headerType; - _headerSize=headerSize; - _bufferType=bufferType; - _bufferSize=bufferSize; - _otherType=otherType; - } + public AbstractBuffers(Buffers.Type headerType, int headerSize, Buffers.Type bufferType, int bufferSize) + { + _headerType=headerType; + _headerSize=headerSize; + _bufferType=bufferType; + _bufferSize=bufferSize; + } - /* ------------------------------------------------------------ */ - /** - * @return Returns the buffer size in bytes. - */ - public int getBufferSize() - { - return _bufferSize; - } + /* ------------------------------------------------------------ */ + /** + * @return Returns the buffer size in bytes. + */ + public int getBufferSize() + { + return _bufferSize; + } - /* ------------------------------------------------------------ */ - /** - * @return Returns the header size in bytes. - */ - public int getHeaderSize() - { - return _headerSize; - } + /* ------------------------------------------------------------ */ + /** + * @return Returns the header size in bytes. + */ + public int getHeaderSize() + { + return _headerSize; + } - /* ------------------------------------------------------------ */ - /** - * Create a new header Buffer - * @return new Buffer - */ - final protected Buffer newHeader() - { - switch(_headerType) - { - case BYTE_ARRAY: - return new ByteArrayBuffer(_headerSize); - case DIRECT: - return new DirectNIOBuffer(_headerSize); - case INDIRECT: - return new IndirectNIOBuffer(_headerSize); - } - throw new IllegalStateException(); - } + /* ------------------------------------------------------------ */ + /** + * Create a new header Buffer + * @return new Buffer + */ + final protected Buffer newHeader() + { + switch(_headerType) + { + case DIRECT: + return new DirectNIOBuffer(_headerSize); + case INDIRECT: + return new IndirectNIOBuffer(_headerSize); + } + throw new IllegalStateException(); + } - /* ------------------------------------------------------------ */ - /** - * Create a new content Buffer - * @return new Buffer - */ - final protected Buffer newBuffer() - { - switch(_bufferType) - { - case BYTE_ARRAY: - return new ByteArrayBuffer(_bufferSize); - case DIRECT: - return new DirectNIOBuffer(_bufferSize); - case INDIRECT: - return new IndirectNIOBuffer(_bufferSize); - } - throw new IllegalStateException(); - } + /* ------------------------------------------------------------ */ + /** + * Create a new content Buffer + * @return new Buffer + */ + final protected Buffer newBuffer() + { + switch(_bufferType) + { + case DIRECT: + return new DirectNIOBuffer(_bufferSize); + case INDIRECT: + return new IndirectNIOBuffer(_bufferSize); + } + throw new IllegalStateException(); + } - /* ------------------------------------------------------------ */ - /** - * Create a new content Buffer - * @param size - * @return new Buffer - */ - final protected Buffer newBuffer(int size) - { - switch(_otherType) - { - case BYTE_ARRAY: - return new ByteArrayBuffer(size); - case DIRECT: - return new DirectNIOBuffer(size); - case INDIRECT: - return new IndirectNIOBuffer(size); - } - throw new IllegalStateException(); - } + /* ------------------------------------------------------------ */ + /** + * Create a new content Buffer + * @param size + * @return new Buffer + */ + final protected Buffer newBuffer(int size) + { + switch(_bufferType) + { + case DIRECT: + return new DirectNIOBuffer(size); + case INDIRECT: + return new IndirectNIOBuffer(size); + } + throw new IllegalStateException(); + } - /* ------------------------------------------------------------ */ - /** - * @param buffer - * @return True if the buffer is the correct type to be a Header buffer - */ - public final boolean isHeader(Buffer buffer) - { - if (buffer.capacity()==_headerSize) - { - switch(_headerType) - { - case BYTE_ARRAY: - return buffer instanceof ByteArrayBuffer && !(buffer instanceof IndirectNIOBuffer); - case DIRECT: - return buffer instanceof DirectNIOBuffer; - case INDIRECT: - return buffer instanceof IndirectNIOBuffer; - } - } - return false; - } + /* ------------------------------------------------------------ */ + /** + * @param buffer + * @return True if the buffer is the correct type to be a Header buffer + */ + public final boolean isHeader(Buffer buffer) + { + if (buffer.capacity()==_headerSize) + { + switch(_headerType) + { + case DIRECT: + return buffer instanceof DirectNIOBuffer; + case INDIRECT: + return buffer instanceof IndirectNIOBuffer; + } + } + return false; + } - /* ------------------------------------------------------------ */ - /** - * @param buffer - * @return True if the buffer is the correct type to be a Header buffer - */ - public final boolean isBuffer(Buffer buffer) - { - if (buffer.capacity()==_bufferSize) - { - switch(_bufferType) - { - case BYTE_ARRAY: - return buffer instanceof ByteArrayBuffer && !(buffer instanceof IndirectNIOBuffer); - case DIRECT: - return buffer instanceof DirectNIOBuffer; - case INDIRECT: - return buffer instanceof IndirectNIOBuffer; - } - } - return false; - } + /* ------------------------------------------------------------ */ + /** + * @param buffer + * @return True if the buffer is the correct type to be a Header buffer + */ + public final boolean isBuffer(Buffer buffer) + { + if (buffer.capacity()==_bufferSize) + { + switch(_bufferType) + { + case DIRECT: + return buffer instanceof DirectNIOBuffer; + case INDIRECT: + return buffer instanceof IndirectNIOBuffer; + } + } + return false; + } - /* ------------------------------------------------------------ */ - public String toString() - { - return String.format("%s [%d,%d]", getClass().getSimpleName(), _headerSize, _bufferSize); - } + /* ------------------------------------------------------------ */ + public String toString() + { + return String.format("%s [%d,%d]", getClass().getSimpleName(), _headerSize, _bufferSize); + } }
--- a/src/org/eclipse/jetty/io/Buffers.java Sun Oct 23 02:42:05 2016 -0600 +++ b/src/org/eclipse/jetty/io/Buffers.java Sun Oct 23 17:21:20 2016 -0600 @@ -28,7 +28,7 @@ */ public interface Buffers { - enum Type { BYTE_ARRAY, DIRECT, INDIRECT } ; + enum Type { DIRECT, INDIRECT } ; Buffer getHeader(); Buffer getBuffer();
--- a/src/org/eclipse/jetty/io/BuffersFactory.java Sun Oct 23 02:42:05 2016 -0600 +++ b/src/org/eclipse/jetty/io/BuffersFactory.java Sun Oct 23 17:21:20 2016 -0600 @@ -20,10 +20,10 @@ public class BuffersFactory { - public static Buffers newBuffers(Buffers.Type headerType, int headerSize, Buffers.Type bufferType, int bufferSize, Buffers.Type otherType,int maxSize) + public static Buffers newBuffers(Buffers.Type headerType, int headerSize, Buffers.Type bufferType, int bufferSize,int maxSize) { if (maxSize<0) throw new RuntimeException(); - return new PooledBuffers(headerType,headerSize,bufferType,bufferSize,otherType,maxSize); + return new PooledBuffers(headerType,headerSize,bufferType,bufferSize,maxSize); } }
--- a/src/org/eclipse/jetty/io/PooledBuffers.java Sun Oct 23 02:42:05 2016 -0600 +++ b/src/org/eclipse/jetty/io/PooledBuffers.java Sun Oct 23 17:21:20 2016 -0600 @@ -22,101 +22,96 @@ import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.atomic.AtomicInteger; -public class PooledBuffers extends AbstractBuffers +public final class PooledBuffers extends AbstractBuffers { - private final Queue<Buffer> _headers; - private final Queue<Buffer> _buffers; - private final Queue<Buffer> _others; - private final AtomicInteger _size = new AtomicInteger(); - private final int _maxSize; - private final boolean _otherHeaders; - private final boolean _otherBuffers; + private final Queue<Buffer> _headers; + private final Queue<Buffer> _buffers; + private final Queue<Buffer> _others; + private final AtomicInteger _size = new AtomicInteger(); + private final int _maxSize; + private final boolean _otherHeaders; - /* ------------------------------------------------------------ */ - public PooledBuffers(Buffers.Type headerType, int headerSize, Buffers.Type bufferType, int bufferSize, Buffers.Type otherType,int maxSize) - { - super(headerType,headerSize,bufferType,bufferSize,otherType); - _headers=new ConcurrentLinkedQueue<Buffer>(); - _buffers=new ConcurrentLinkedQueue<Buffer>(); - _others=new ConcurrentLinkedQueue<Buffer>(); - _otherHeaders=headerType==otherType; - _otherBuffers=bufferType==otherType; - _maxSize=maxSize; - } + public PooledBuffers(Buffers.Type headerType, int headerSize, Buffers.Type bufferType, int bufferSize,int maxSize) + { + super(headerType,headerSize,bufferType,bufferSize); + _headers=new ConcurrentLinkedQueue<Buffer>(); + _buffers=new ConcurrentLinkedQueue<Buffer>(); + _others=new ConcurrentLinkedQueue<Buffer>(); + _otherHeaders=headerType==bufferType; + _maxSize=maxSize; + } - /* ------------------------------------------------------------ */ - public Buffer getHeader() - { - Buffer buffer = _headers.poll(); - if (buffer==null) - buffer=newHeader(); - else - _size.decrementAndGet(); - return buffer; - } + public Buffer getHeader() + { + Buffer buffer = _headers.poll(); + if (buffer==null) + buffer=newHeader(); + else + _size.decrementAndGet(); + return buffer; + } - /* ------------------------------------------------------------ */ - public Buffer getBuffer() - { - Buffer buffer = _buffers.poll(); - if (buffer==null) - buffer=newBuffer(); - else - _size.decrementAndGet(); - return buffer; - } + public Buffer getBuffer() + { + Buffer buffer = _buffers.poll(); + if (buffer==null) + buffer=newBuffer(); + else + _size.decrementAndGet(); + return buffer; + } + + /* ------------------------------------------------------------ */ + public Buffer getBuffer(int size) + { + if (_otherHeaders && size==getHeaderSize()) + return getHeader(); + if (size==getBufferSize()) + return getBuffer(); - /* ------------------------------------------------------------ */ - public Buffer getBuffer(int size) - { - if (_otherHeaders && size==getHeaderSize()) - return getHeader(); - if (_otherBuffers && size==getBufferSize()) - return getBuffer(); - - // Look for an other buffer - Buffer buffer = _others.poll(); + // Look for an other buffer + Buffer buffer = _others.poll(); - // consume all other buffers until one of the right size is found - while (buffer!=null && buffer.capacity()!=size) - { - _size.decrementAndGet(); - buffer = _others.poll(); - } + // consume all other buffers until one of the right size is found + while (buffer!=null && buffer.capacity()!=size) + { + _size.decrementAndGet(); + buffer = _others.poll(); + } - if (buffer==null) - buffer=newBuffer(size); - else - _size.decrementAndGet(); - return buffer; - } + if (buffer==null) + buffer=newBuffer(size); + else + _size.decrementAndGet(); + return buffer; + } - /* ------------------------------------------------------------ */ - public void returnBuffer(Buffer buffer) - { - buffer.clear(); - if (buffer.isVolatile() || buffer.isImmutable()) - return; + /* ------------------------------------------------------------ */ + public void returnBuffer(Buffer buffer) + { + buffer.clear(); + if (buffer.isVolatile() || buffer.isImmutable()) + return; - if (_size.incrementAndGet() > _maxSize) - _size.decrementAndGet(); - else - { - if (isHeader(buffer)) - _headers.add(buffer); - else if (isBuffer(buffer)) - _buffers.add(buffer); - else - _others.add(buffer); - } - } + if (_size.incrementAndGet() > _maxSize) + _size.decrementAndGet(); + else + { + if (isHeader(buffer)) + _headers.add(buffer); + else if (isBuffer(buffer)) + _buffers.add(buffer); + else + _others.add(buffer); + } + } - public String toString() - { - return String.format("%s [%d/%d@%d,%d/%d@%d,%d/%d@-]", - getClass().getSimpleName(), - _headers.size(),_maxSize,_headerSize, - _buffers.size(),_maxSize,_bufferSize, - _others.size(),_maxSize); - } + public String toString() + { + return String.format("%s [%d/%d@%d,%d/%d@%d,%d/%d@-]", + getClass().getSimpleName(), + _headers.size(),_maxSize,_headerSize, + _buffers.size(),_maxSize,_bufferSize, + _others.size(),_maxSize); + } }
--- a/src/org/eclipse/jetty/server/Connector.java Sun Oct 23 02:42:05 2016 -0600 +++ b/src/org/eclipse/jetty/server/Connector.java Sun Oct 23 17:21:20 2016 -0600 @@ -75,10 +75,6 @@ this.port = port; server.connectors.add(this); addBean(_buffers); - _buffers.setRequestBufferType(Type.DIRECT); - _buffers.setRequestHeaderType(Type.INDIRECT); - _buffers.setResponseBufferType(Type.DIRECT); - _buffers.setResponseHeaderType(Type.INDIRECT); } public final void setHost(String host)