org.seleniumhq.jetty7.io.AbstractBuffers Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jetty-repacked Show documentation
Show all versions of jetty-repacked Show documentation
Browser automation framework dependency on jetty
package org.eclipse.jetty.io;
import org.eclipse.jetty.io.nio.DirectNIOBuffer;
import org.eclipse.jetty.io.nio.IndirectNIOBuffer;
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;
/* ------------------------------------------------------------ */
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;
}
/* ------------------------------------------------------------ */
/**
* @return Returns the buffer size in bytes.
*/
public int getBufferSize()
{
return _bufferSize;
}
/* ------------------------------------------------------------ */
/**
* @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 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
* @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();
}
/* ------------------------------------------------------------ */
/**
* @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 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;
}
/* ------------------------------------------------------------ */
public String toString()
{
return String.format("%s [%d,%d]", getClass().getSimpleName(), _headerSize, _bufferSize);
}
}