org.eclipse.jetty.io.View Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ehcache Show documentation
Show all versions of ehcache Show documentation
Ehcache is an open source, standards-based cache used to boost performance,
offload the database and simplify scalability. Ehcache is robust, proven and full-featured and
this has made it the most widely-used Java-based cache.
//
// ========================================================================
// Copyright (c) 1995-2013 Mort Bay Consulting Pty. Ltd.
// ------------------------------------------------------------------------
// All rights reserved. This program and the accompanying materials
// are made available under the terms of the Eclipse Public License v1.0
// and Apache License v2.0 which accompanies this distribution.
//
// The Eclipse Public License is available at
// http://www.eclipse.org/legal/epl-v10.html
//
// The Apache License v2.0 is available at
// http://www.opensource.org/licenses/apache2.0.php
//
// You may elect to redistribute this code under either of these licenses.
// ========================================================================
//
package org.eclipse.jetty.io;
/**
* A View on another buffer. Allows operations that do not change the _content or
* indexes of the backing buffer.
*
*
*
*/
public class View extends AbstractBuffer
{
Buffer _buffer;
/**
* @param buffer The Buffer
on which we are presenting a View
.
* @param mark The initial value of the {@link Buffer#markIndex mark index}
* @param get The initial value of the {@link Buffer#getIndex get index}
* @param put The initial value of the {@link Buffer#putIndex put index}
* @param access The access level - one of the constants from {@link Buffer}.
*/
public View(Buffer buffer, int mark, int get, int put,int access)
{
super(READWRITE,!buffer.isImmutable());
_buffer=buffer.buffer();
setPutIndex(put);
setGetIndex(get);
setMarkIndex(mark);
_access=access;
}
public View(Buffer buffer)
{
super(READWRITE,!buffer.isImmutable());
_buffer=buffer.buffer();
setPutIndex(buffer.putIndex());
setGetIndex(buffer.getIndex());
setMarkIndex(buffer.markIndex());
_access=buffer.isReadOnly()?READONLY:READWRITE;
}
public View()
{
super(READWRITE,true);
}
/**
* Update view to buffer
*/
public void update(Buffer buffer)
{
_access=READWRITE;
_buffer=buffer.buffer();
setGetIndex(0);
setPutIndex(buffer.putIndex());
setGetIndex(buffer.getIndex());
setMarkIndex(buffer.markIndex());
_access=buffer.isReadOnly()?READONLY:READWRITE;
}
public void update(int get, int put)
{
int a=_access;
_access=READWRITE;
setGetIndex(0);
setPutIndex(put);
setGetIndex(get);
setMarkIndex(-1);
_access=a;
}
/**
* @return The {@link Buffer#array()} from the underlying buffer.
*/
public byte[] array()
{
return _buffer.array();
}
/**
* @return The {@link Buffer#buffer()} from the underlying buffer.
*/
@Override
public Buffer buffer()
{
return _buffer.buffer();
}
/**
* @return The {@link Buffer#capacity} of the underlying buffer.
*/
public int capacity()
{
return _buffer.capacity();
}
/**
*
*/
@Override
public void clear()
{
setMarkIndex(-1);
setGetIndex(0);
setPutIndex(_buffer.getIndex());
setGetIndex(_buffer.getIndex());
}
/**
*
*/
@Override
public void compact()
{
// TODO
}
/*
* (non-Javadoc)
*
* @see java.lang.Object#equals(java.lang.Object)
*/
@Override
public boolean equals(Object obj)
{
return this==obj ||((obj instanceof Buffer)&& obj.equals(this)) || super.equals(obj);
}
/**
* @return Whether the underlying buffer is {@link Buffer#isReadOnly read only}
*/
@Override
public boolean isReadOnly()
{
return _buffer.isReadOnly();
}
/**
* @return Whether the underlying buffer is {@link Buffer#isVolatile volatile}
*/
@Override
public boolean isVolatile()
{
return true;
}
/**
* @return The result of calling {@link Buffer#peek(int)} on the underlying buffer
*/
public byte peek(int index)
{
return _buffer.peek(index);
}
/**
* @return The result of calling {@link Buffer#peek(int, byte[], int, int)} on the underlying buffer
*/
public int peek(int index, byte[] b, int offset, int length)
{
return _buffer.peek(index,b,offset,length);
}
/**
* @return The result of calling {@link Buffer#peek(int, int)} on the underlying buffer
*/
@Override
public Buffer peek(int index, int length)
{
return _buffer.peek(index, length);
}
/**
* @param index
* @param src
*/
@Override
public int poke(int index, Buffer src)
{
return _buffer.poke(index,src);
}
/**
* @param index
* @param b
*/
public void poke(int index, byte b)
{
_buffer.poke(index,b);
}
/**
* @param index
* @param b
* @param offset
* @param length
*/
@Override
public int poke(int index, byte[] b, int offset, int length)
{
return _buffer.poke(index,b,offset,length);
}
@Override
public String toString()
{
if (_buffer==null)
return "INVALID";
return super.toString();
}
public static class CaseInsensitive extends View implements Buffer.CaseInsensitve
{
public CaseInsensitive()
{
super();
}
public CaseInsensitive(Buffer buffer, int mark, int get, int put, int access)
{
super(buffer,mark,get,put,access);
}
public CaseInsensitive(Buffer buffer)
{
super(buffer);
}
@Override
public boolean equals(Object obj)
{
return this==obj ||((obj instanceof Buffer)&&((Buffer)obj).equalsIgnoreCase(this)) || super.equals(obj);
}
}
}