
com.segment.analytics.ObjectQueue Maven / Gradle / Ivy
// Copyright 2011 Square, Inc.
package com.segment.analytics;
import java.io.IOException;
/**
* A queue of objects.
*
* @param The type of queue for the elements.
*/
public interface ObjectQueue {
/** Returns the number of entries in the queue. */
int size();
/** Enqueues an entry that can be processed at any time. */
void add(T entry) throws IOException;
/**
* Returns the head of the queue, or {@code null} if the queue is empty. Does not modify the
* queue.
*/
T peek() throws IOException;
/** Removes the head of the queue. */
void remove() throws IOException;
/**
* Sets a listener on this queue. Invokes {@link Listener#onAdd} once for each entry that's
* already in the queue. If an error occurs while reading the data, the listener will not receive
* further notifications.
*/
void setListener(Listener listener) throws IOException;
/**
* Listens for changes to the queue.
*
* @param The type of elements in the queue.
*/
public interface Listener {
/** Called after an entry is added. */
void onAdd(ObjectQueue queue, T entry);
/** Called after an entry is removed. */
void onRemove(ObjectQueue queue);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy