All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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.
 */
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.
   */
  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