/*******************************************************************************
* Copyright (c) 2000, 2006 QNX Software Systems 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:
* QNX Software Systems - Initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.debug.mi.core;
import org.eclipse.cdt.debug.mi.core.command.Command;
/**
* Simple thread-safe Queue implemetation.
*/
public class CommandQueue extends Queue {
public CommandQueue() {
super();
}
public Command removeCommand(int id) {
//print("in removeCommand(" + id + ") - entering");
synchronized (list) {
int size = list.size();
for (int i = 0; i < size; i++) {
Command cmd = (Command)list.get(i);
int token = cmd.getToken();
if (token == id) {
list.remove(cmd);
return cmd;
}
}
}
return null;
}
public Command removeCommand() throws InterruptedException {
//print("in removeCommand() - entering");
return (Command)removeItem();
}
public void addCommand(Command cmd) {
//print("in addCommand() - entering");
addItem(cmd);
}
public Command[] clearCommands() {
Object[] objs = clearItems();
Command[] cmds = new Command[objs.length];
System.arraycopy(objs, 0, cmds, 0, objs.length);
return cmds;
}
// private static void print(String msg) {
// String name = Thread.currentThread().getName();
// System.out.println(name + ": " + msg);
// }
}