/*
* Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com
* The software in this package is published under the terms of the CPAL v1.0
* license, a copy of which has been included with this distribution in the
* LICENSE.txt file.
*/
package org.mule.runtime.core.util.queue;
import java.io.Serializable;
import java.util.Collection;
/**
* A DefaultQueueStore delegates the actual work of processing its queue to one of these.
*/
public interface QueueStoreDelegate {
/**
* append a new member to the end of the queue
*/
void putNow(Serializable o);
/**
* Offer to append a new member to the end of the queue
*/
boolean offer(Serializable o, int room, long timeout) throws InterruptedException;
/**
* Poll the queue for its first member, and, if there is one, remove and return it
*/
Serializable poll(long timeout) throws InterruptedException;
/**
* return, but do not remove, the first member of the queue
*/
Serializable peek() throws InterruptedException;
/**
* Restore a previously removed member to the front of the queue
*/
void untake(Serializable item) throws InterruptedException;
/**
* Return the size of the queue
*/
int getSize();
/**
* Discards all the elements in the queue
*/
void clear() throws InterruptedException;
/**
* Appends all of the elements in the specified collection to the queue (optional operation).
*
* @param items to be added to the queue
* @return <tt>true</tt> if this queue changed as a result of the call
*/
boolean addAll(Collection<? extends Serializable> items);
/**
* Deletes the queue and it's content.
*/
void dispose();
}