blob: 2c2c0565ec9ee58226ef5640dfad8a9e7ad0cdbe [file] [log] [blame]
/*
* Copyright (c) 2007, 2011, 2012, 2015 Eike Stepper (Berlin, Germany) and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Eike Stepper - initial API and implementation
*/
package org.eclipse.net4j.buffer;
/**
* Provides clients with the ability to obtain and retain {@link IBuffer}s.
*
* @author Eike Stepper
*/
public interface IBufferProvider
{
/**
* Returns the capacity of the buffers provided by {@link #provideBuffer()} .
*/
public short getBufferCapacity();
/**
* Provides a buffer from this <code>BufferProvider</code>.
*/
public IBuffer provideBuffer();
/**
* Retains a buffer to this <code>BufferProvider</code>.
*/
public void retainBuffer(IBuffer buffer);
/**
* Offers additional introspection features for {@link IBufferProvider}s.
*
* @author Eike Stepper
*/
public interface Introspection extends IBufferProvider
{
/**
* Returns the number of buffers that have already been provided by this <code>BufferProvider</code>.
*/
public long getProvidedBuffers();
/**
* Returns the number of buffers that have already been retained to this <code>BufferProvider</code>.
*/
public long getRetainedBuffers();
}
}