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

com.sun.messaging.jmq.jmsclient.SequentialQueue Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (c) 2000, 2017 Oracle and/or its affiliates. All rights reserved.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0, which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the
 * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
 * version 2 with the GNU Classpath Exception, which is available at
 * https://www.gnu.org/software/classpath/license.html.
 *
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 */

package com.sun.messaging.jmq.jmsclient;

import java.util.Vector;

/**
 * 

* Queue structure to store messages in a serial order. Messages received in a Session are stored in its received order. *

*/ public class SequentialQueue implements MessageQueue { // queue structure. private Vector queue = null; /** * default constructor. */ public SequentialQueue() { queue = new Vector(); } /** * constructor with init queue size. * * @param size the init size for the queue size. */ public SequentialQueue(int size) { queue = new Vector(size); } /** * constructor with init queue size and increment number. * * @param size the init size for the queue size. * @param increment number to increase queue size the when reached the init size. */ public SequentialQueue(int size, int increment) { queue = new Vector(size, increment); } /** * get queue size */ @Override public int size() { return queue.size(); } /** * check if the queue size is empty. * * @return true if the queue size is empty. */ @Override public boolean isEmpty() { return queue.isEmpty(); } /** * Clears all elements from the queue **/ @Override public void clear() { queue.clear(); } /** * Enqueues an object in the queue. * * @param nobj new object to be enqueued */ @Override public void enqueue(Object nobj) { queue.addElement(nobj); } /** * Dequeues an element from the queue. * * @return dequeued object, or null if empty queue */ @Override public Object dequeue() { // var to hold element to be returned. Object obj = null; /** * not synced since we have only one thread in the session that access this queue. * * Note: added sync for general purpose. */ synchronized (queue) { if (queue.isEmpty() == false) { obj = queue.remove(0); } } return obj; } /** * Get all elements in the queue and return as an array of objects. * * @return an array of objects in the queue. */ @Override public Object[] toArray() { return queue.toArray(); } /** * remove obj from the queue. * * @param obj obj to be removed from the queue. * @return true if object is in the queue and removed. Otherwise, return false. */ @Override public boolean remove(Object obj) { return queue.remove(obj); } /** * Adds the specified object to the front of the queue. * * @param nobj new object to be added to the front of the queue */ @Override public void enqueueFirst(Object nobj) { // This method was added for PriorityQueue, not for SequentialQueue // so has not been implemented throw new RuntimeException("This method is not yet implemented"); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy