HOME PCB
..MessageFactory.javaMessageService.javaMessageSession.javaMessageSessionImpl.javaQueueSendingThread.javaReceivingThread.javaSendObject.javaSendingThread.javaStandardReceivingThread.java
package Communication.Messages.Service;

import java.net.InetSocketAddress;
import java.util.concurrent.LinkedBlockingQueue;

public abstract class QueueSendingThread extends SendingThread
{
    private final LinkedBlockingQueue queue = new LinkedBlockingQueue<>();

    public int getQueueLength()
    {
        return this.queue.size();
    }

    protected boolean addToSendQueue(InetSocketAddress recipient, Object o)
    {
        boolean ret = false;
        synchronized (this.queue) {
            ret = this.queue.add(new SendObject(recipient, o));
        }
        return ret;
    }

    protected boolean addToSendQueue(InetSocketAddress recipient, Object... objs)
    {
        boolean ret = true;
        synchronized (this.queue)
        {
            for (Object obj : objs)
            {
                ret = this.addToSendQueue(recipient, obj) && ret;
            }
        }
        return ret;
    }

    @Override
    protected SendObject getNextSendObject()
    {
        try
        {
            return this.queue.take();
        }
        catch (Exception e)
        {
            this.interrupt();
        }
        return null;
    }
}