/*
 * Copyright 2010-2015 Institut Pasteur.
 * 
 * This file is part of Icy.
 * 
 * Icy is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * 
 * Icy is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with Icy. If not, see <http://www.gnu.org/licenses/>.
 */
package icy.system.thread;

import icy.main.Icy;

/**
 * @deprecated Use {@link InstanceProcessor} instead.
 */
@Deprecated
public class IdProcessor extends Processor
{

    /**
     * Create an IdProcessor
     * 
     * @deprecated uses default constructor instead
     */
    @SuppressWarnings("unused")
    @Deprecated
    public IdProcessor(int maxProcess, int maxProcessPerId)
    {
        super();
    }

    /**
     * Create an IdProcessor
     */
    public IdProcessor(int priority)
    {
        super(-1, 1, priority);
        setThreadName("IdProcessor");
    }

    /**
     * Create an IdProcessor
     */
    public IdProcessor()
    {
        this(Processor.NORM_PRIORITY);
    }

    /**
     * Add a task to processor
     */
    @Override
    public synchronized boolean addTask(Runnable task, boolean onAWTEventThread, int id)
    {
        if (task == null)
            return false;

        // we remove pending task if any
        removeFirstWaitingTask(id);

        if (!super.addTask(task, onAWTEventThread, id))
        {
            if (!Icy.isExiting())
            {
                // error while adding task
                System.err.println("Cannot add task, ignore execution : " + task);
                return false;
            }
        }

        return true;
    }
}